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

时间:2018-08-13 03:10:21

标签: visual-c++

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

  • -march=skylake等生成针对特定微体系结构优化的代码,并且

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

我该如何使用MSVC?

1 个答案:

答案 0 :(得分:1)

Microsoft的编译器将此分为两个单独的区域。一种是生成特定于特定指令集的代码,该代码在不支持该指令集的CPU上不起作用。这属于其-arch:标志。 x64编译器在此处仅支持两个变体:AVX和AVX2(或无标志,如果有内存,则基本上表示SSE 4.2a)。 x86版本的编译器为较旧的指令集扩展(例如SSE)添加了更多标志,但我怀疑您是否再对此感到担心。

另一类正在生成可在多种体系结构中的任何一种上运行的代码,但它们之间却相互青睐。 -favor开关支持此功能,该开关支持ATOM,AMD64,INTEL64和“ blend”(基本上是指不偏爱一个以牺牲其他一个为代价)的目标。

它没有任何(已记录的)标记,例如偏爱Skylake与Haswell或Broadwell之类的东西。