首页 > 解决方案 > 使 MSVC 针对特定微架构进行优化

问题描述

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

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

标签: visual-c++

解决方案


Microsoft 的编译器将其分为两个独立的区域。一种是生成特定于特定指令集的代码,这在不支持该指令集的 CPU 上不起作用。这属于它的-arch:旗帜。x64 编译器在此处仅支持两种变体:AVX 和 AVX2(或无标志,这基本上意味着 SSE 4.2a,如果有记忆的话)。x86 版本的编译器为较旧的指令集扩展(例如 SSE)添加了更多标志,但我怀疑您是否会再关心它。

另一类是生成可以在多种架构中的任何一种架构上工作的代码,但优先考虑其中的一种。这由-favorswitch 支持,它支持 ATOM、AMD64、INTEL64 和“混合”的目标(这基本上意味着尽量不以牺牲他人为代价来偏爱一个)。

它没有任何(记录的)标志,例如偏爱 Skylake 与(例如)Haswell 或 Broadwell。


推荐阅读