GCC如何检测处理器功能

时间:2018-04-26 02:16:41

标签: gcc optimization clang

使用gcc标志-march = native可以运行cpu gcc的CPU特定优化。 (如果我错了,请纠正我)。 gcc如何检测这些功能?链接到代码的额外点,以及与clang / llvm的比较。

更实际的是,我如何检测机器上的cpu功能(没有gcc或非常旧的gcc),然后在本地机器上为该机器进行编译。 IE a gcc -march = that_other_pc。 (希望比为该架构编译gcc并在那里运行它更容易。)

1 个答案:

答案 0 :(得分:1)

事实上,Gcc确实有一个cpu功能检测程序。如果当前版本的规范包含%:local_cpu_detect(args)构造,则相关arch的驱动程序将调用host_detect_local_cpu驱动程序函数,该函数将尝试查询当前系统CPU并从中获取所需的功能标记它

i386和派生的拱门上,过程看起来大致如下: https://github.com/gcc-mirror/gcc/blob/da8dff89fa9398f04b107e388cb706517ced9505/gcc/config/i386/driver-i386.c#L383

(简而言之,该函数根据需要调用cpuid操作码,然后解析返回的功能注册表。)