使用gcc标志-march = native可以运行cpu gcc的CPU特定优化。 (如果我错了,请纠正我)。 gcc如何检测这些功能?链接到代码的额外点,以及与clang / llvm的比较。
更实际的是,我如何检测机器上的cpu功能(没有gcc或非常旧的gcc),然后在本地机器上为该机器进行编译。 IE a gcc -march = that_other_pc。 (希望比为该架构编译gcc并在那里运行它更容易。)
答案 0 :(得分:1)
%: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
操作码,然后解析返回的功能注册表。)