其实我有2个问题:
- SSE2兼容性是CPU问题还是编译器问题?
- 如何检查您的CPU或编译器是否支持SSE2?
我正在使用 GCC 版本:
gcc (GCC) 4.5.1
当我尝试编译代码时,它给了我这个错误:
$ gcc -O3 -msse2 -fno-strict-aliasing -DHAVE_SSE2=1 -DMEXP=19937 -o test-sse2-M19937 test.c
cc1: error: unrecognized command line option "-msse2"
And cpuinfo
显示了这个:
processor : 0
vendor : GenuineIntel
arch : IA-64
family : 32
model : 1
model name : Dual-Core Intel(R) Itanium(R) Processor 9140M
revision : 1
archrev : 0
features : branchlong, 16-byte atomic ops
cpu number : 0
cpu regs : 4
cpu MHz : 1669.000503
itc MHz : 416.875000
BogoMIPS : 3325.95
siblings : 2
physical id: 0
core id : 0
thread id : 0
CPU需要能够执行SSE2指令,并且编译器需要能够生成它们。
检查您的CPU是否支持SSE2:
# cat /proc/cpuinfo
如果支持的话,它将位于“标志”下的某个位置。
更新:所以你的CPU不支持它。
对于编译器:
# gcc -dumpmachine
# gcc --version
编译器的目标需要一种 x86*,因为只有此 cpu 支持 sse2,它是 x86 指令集的一部分
AND
gcc 版本需要 >= 3.1(很可能是这样,因为这已经有大约 10 年历史了)才能支持 SSE2。
更新:因此您的编译器在此目标上不支持它,但如果您将其用作 x86 的交叉编译器,则会支持它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)