【问题标题】:When a gcc application is compiled in release mode (O3) what instruction set extensions are used?当 gcc 应用程序在发布模式 (O3) 下编译时,使用了哪些指令集扩展?
【发布时间】:2013-09-08 03:23:28
【问题描述】:

当一个 GNU C/C++ 应用程序以 vanilla 发布模式 (O3) 编译时,使用了哪些指令集扩展?

扩展指令集如何发挥作用?生成的可执行文件中是否包含多个代码块,然后在可用时使用?

【问题讨论】:

    标签: optimization gcc intel instruction-set


    【解决方案1】:

    O3 将仅使用编译时指定的指令(在构建工具链时默认指定,如果没有指定任何开关解释 here)。它只会尝试更积极地优化(如指定的here)。大多数优化实际上是在编译器“中间”端完成的,甚至在代码被转换为目标机器特定形式之前。

    因此,您可以使用这两组开关将任何 -O 与任何指令集扩展结合起来。

    【讨论】:

    • 你可以构建gcc,让-mpopcnt或-mavx默认启用,没有-march=或其他设置?通常你应该使用-march=native(或-march=skylake或其他)来调整特定的uarch并启用它支持的指令集扩展。
    猜你喜欢
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多