我有下一个问题:
我有一些与使用一些Bulldozer (xop)指令进行xop检查相关的测试。
我必须只在Bulldozer处理器上运行这个测试。
如何在编译时检查我的处理器是否支持xop指令?
语言:C,Os:Linux;
发布于 2012-11-08 07:17:14
您不能在编译时进行测试,但可以使用以下方法为AMD推土机进行编译:
gcc -march=bdver1 -mtune=bdver1 ..。
请参阅:http://gcc.gnu.org/gcc-4.6/changes.html
如果您的生成机器是您的目标机器,请查看/proc/cpuinfo。
发布于 2012-11-08 07:28:47
您可以编写一个检查CPUID的程序,并在编译时使用该程序的输出:
gcc $(cpuid_test) my_prog.c
其中cpuid_test返回'-march=bdver1'或-DXOP_SUPPORT=1
发布于 2012-11-09 00:22:25
如果一个源是用-march=bdver1编译的(这允许XOP支持等等),那么预处理宏__XOP__将被定义为1。
您可以在编译时为XOP测试
#ifdef __XOP__
...XOP code path here...
#else
...non XOP code here...
#endif https://stackoverflow.com/questions/13284225
复制相似问题