-msse,-msse2,-mssse3,-msse4 rtc的cflgs sse选项有什么不同?以及如何确定?

时间:2012-05-21 13:56:03

标签: gcc g++ gnu sse compiler-flags

对于GCC CFLAGS选项:-msse-msse2-mssse3-msse4-msse4.1-msse4.2。它们是独家使用还是可以一起使用?

我的理解是,选择要设置的位置取决于程序将运行的目标拱门是否支持,这是正确的吗?

如果是这样,我怎么知道我的目标拱支持什么?在Linux中,我是cat / proc / cpuinfo,但如果是mac或Windows呢?

谢谢!

1 个答案:

答案 0 :(得分:30)

-m切换可以并行使用,而且其中一些是由架构或其他开关暗示的。例如,如果您为x86_64构建代码,则始终启用-msse -msse2

对于要在系统上运行的代码,您应该选择-march=native,它将选择处理器上可用的代码。例如,如果你有一个Sandy Bridge,这将启用-msse -msse2 -msse3 -mssse3 -msse4 -msse4.1 -msse4.2 -mavx

如果要详细说明要使用的指令集,则只应使用可用的指令,而不是“最新”。 “最新”版本目前为-mavx2,我不建议:第一台支持它的处理器将于2013年上市。