GCC如何检测处理器特性

GCC如何检测处理器特性,gcc,optimization,clang,Gcc,Optimization,Clang,使用gcc标志-march=native可以为运行gcc的CPU启用特定于CPU的优化。如果我错了,请纠正我。gcc如何检测这些特性?额外的代码链接点,以及与clang/llvm的比较 更实际地说,如何在没有gcc或非常旧的gcc的机器上检测cpu功能,然后在本地机器上为该机器编译。IE a gcc-march=那是另一台pc。希望比为该架构编译gcc并在那里运行更容易。gcc实际上有一个cpu功能检测例程。如果当前构建的规范包含%:local\u cpu\u detectargs构造,则所述a

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


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

gcc实际上有一个cpu功能检测例程。如果当前构建的规范包含%:local\u cpu\u detectargs构造,则所述arch的驱动程序将调用host\u detect\u local\u cpu驱动程序函数,该函数将尝试查询当前系统cpu并从中获取所需的功能标志

在i386和i386上,过程大致如下:


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

如果是这样,启用-march=native如何提高性能?当然,所需的第一步是重新编译gcc,使autoconf能够检测您的系统。如果你是正确的,你能提供一个参考吗?