使 MSVC 针对特定微架构进行优化

问题描述 投票:0回答:1

通过 GCC/Clang/ICC/etc 我可以使用

  • -march=skylake
    等生成针对特定微架构优化的代码,以及

  • -march=native
    生成针对本地计算机优化的代码。

如何使用 MSVC 执行这些操作?

c++ visual-c++ compiler-options
1个回答
1
投票

微软的编译器将其分为两个独立的区域。一种是生成特定于特定指令集的代码,该代码无法在不支持该指令集的 CPU 上运行。这属于其

-arch:
标志。 x64 编译器仅支持两种变体:AVX 和 AVX2(或无标志,最高支持 SSE2)。 x86 版本的编译器为较旧的指令集扩展(例如 SSE)添加了更多标志,但我怀疑您是否再关心这一点。

另一类是生成可在多种架构中的任何一种上运行的代码,但更倾向于其中一种架构。这是由

-favor
开关支持的,它支持 ATOM、AMD64、INTEL64 和“混合”目标(这基本上意味着尽量不以牺牲其他目标为代价来偏向其中一个)。

它没有任何(已记录的)标志来表示支持 Skylake 与(例如)Haswell 或 Broadwell。

© www.soinside.com 2019 - 2024. All rights reserved.