禁用-msse

时间:2011-10-25 19:19:42

标签: gcc compiler-construction compiler-optimization

我正在尝试使用CPU2006运行各种基准测试,以了解各种优化在gcc上的速度方面做了什么。我熟悉-O1,-O2和-O3,但是听说-msse是一个不错的优化。到底是什么?我也看到-msse是64位架构的默认设置,那么如何禁用它来比较使用它和不使用它之间的区别呢?

2 个答案:

答案 0 :(得分:5)

-msse激活SSE指令的生成。所有64位处理器(x86-64)都有它们,但是一些较旧的32位处理器(IA-32)没有这些指令。这就是GCC默认设置的原因。

SSE指令与向量运算和浮点运算有关。考虑到自动矢量化的机会在通用代码中很少见,您可能会观察到的唯一区别是使用浮点数。

在64位上,要禁用SSE指令,请使用-mno-sse

答案 1 :(得分:0)

http://www.justskins.com/forums/gcc-option-msse-and-128289.html

SSE(http://it.wikipedia.org/wiki/Streaming_SIMD_Extensions)正如其名称所示,是Pentium 3以来处理器中存在的SSE指令。它们可以快速进行某种矢量和浮点计算。它们在所有64位处理器中都可用,那么我们为什么要禁用它们呢?

您可以在-msse和-msse2之间进行选择。 SSE2是在SSE上构建的另一个指令集,它添加了其他功能强大且非常快速的矢量指令。

Pentium 3确实有SSE,是32位处理器。 SSE2更现代,奔腾4,仍然是32位处理器,有SSE2。