对于GCC CFLAGS
选项:-msse
,-msse2
,-mssse3
,-msse4
,-msse4.1
,-msse4.2
。它们是专有用途还是可以一起使用?
我的理解是,选择哪个设置取决于运行程序的目标拱门是否支持它-这是正确的吗?
如果是这样,我怎么知道目标拱门支持什么功能?在Linux中,我使用/ proc / cpuinfo,但是如果使用Mac或Windows,该怎么办?
谢谢!
-m
开关可以并行使用,此外,其中某些架构或其他开关暗含。例如,如果您为x86_64构建代码,则始终启用-msse -msse2
。
对于要在系统上运行的代码,您应该选择-march=native
,这将选择处理器上可用的代码。例如,如果您有一个Sandy Bridge,它将启用-msse -msse2 -msse3 -mssse3 -msse4 -msse4.1 -msse4.2 -mavx
。
如果要详细指定要使用的指令集,则应仅使用可用的指令集,而不总是使用“最新”指令集。当前,“最新”处理器是-mavx2
,我不建议这样做:支持该处理器的第一个处理器将于2013年推出。