我有下一个问题:
我有一些与XOP检查的测试,并使用一些Bulldozer (xop)
指令进行检查。
我必须仅在Bulldozer
处理器上运行此测试。
如何检查我的处理器是否在编译时支持xop
指令?
语言: C
, os: Linux
;
您可以编写检查CPUID并在编译时使用该程序的输出的程序:
gcc $(cpuid_test) my_prog.c
其中cpuid_test返回 '-march=bdver1'
或 -DXOP_SUPPORT=1
您不能在编译时测试,但是可以使用:
来编译AMD推土机$ gcc -march = bdver1 -mtune = bdver1 ...
请参阅:http://gcc.gnu.org/gcc-4.6/changes.html
如果您的构建机是您的目标机器,请查看/proc/cpuinfo
。
如果用-march=bdver1
编译了源(可以在其他方面进行XOP支持),则预处理器宏__XOP__
将定义为1。
您可以在
的XOP时在编译时间进行测试#ifdef __XOP__
...XOP code path here...
#else
...non XOP code here...
#endif