如何确定我的程序是否使用SSE2(通过gcc优化)?

时间:2011-11-17 00:12:15

标签: gcc sse vectorization

我有一个C ++程序,它是在gcc(gcc版本4.5.1)下使用-O3标志编译的。我正在考虑是否值得制作这个程序的SSE2版本(或者至少是最繁忙的程序)。但是,我担心编译器已经通过自动矢量化完成了这项工作。

  

问题:我如何确定(a)我的程序是否使用SSE / SSE2和(b)使用SSE / SSE2花费了多少时间(即分析)?

1 个答案:

答案 0 :(得分:1)

判断您是否从编译器矢量化中获益的最简单方法是运行带有和不带-ftree-vectorize标志的代码并比较结果。

-O3会自动启用该选项。因此,您可能希望在-O2下尝试使用它。

要查看哪些循环是矢量化的,哪些循环不是,为什么,您可以添加-ftree-vectorizer-verbose选项。

当然,最后一个选项是查看程序集。在汇编中识别矢量化代码非常容易。