对于GCC CFLAGS
选项:-msse
,-msse2
,-mssse3
,-msse4
,-msse4.1
,-msse4.2
。它们是独家使用还是可以一起使用?
我的理解是,选择要设置的位置取决于程序将运行的目标拱门是否支持,这是正确的吗?
如果是这样,我怎么知道我的目标拱支持什么?在Linux中,我是cat / proc / cpuinfo,但如果是mac或Windows呢?
谢谢!
答案 0 :(得分:30)
-m
切换可以并行使用,而且其中一些是由架构或其他开关暗示的。例如,如果您为x86_64构建代码,则始终启用-msse -msse2
。
对于要在系统上运行的代码,您应该选择-march=native
,它将选择处理器上可用的代码。例如,如果你有一个Sandy Bridge,这将启用-msse -msse2 -msse3 -mssse3 -msse4 -msse4.1 -msse4.2 -mavx
。
如果要详细说明要使用的指令集,则只应使用可用的指令,而不是“最新”。 “最新”版本目前为-mavx2
,我不建议:第一台支持它的处理器将于2013年上市。