【问题标题】:How does GCC detect processor featuresGCC 如何检测处理器特性
【发布时间】:2018-10-06 14:42:51
【问题描述】:

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

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

【问题讨论】:

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

标签: gcc optimization clang


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    相关资源
    最近更新 更多