我可以使用GCC / Clang / ICC / etc
-march=skylake
等生成针对特定微体系结构优化的代码,并且
-march=native
生成针对本地计算机优化的代码。
我该如何使用MSVC?
答案 0 :(得分:1)
Microsoft的编译器将此分为两个单独的区域。一种是生成特定于特定指令集的代码,该代码在不支持该指令集的CPU上不起作用。这属于其-arch:
标志。 x64编译器在此处仅支持两个变体:AVX和AVX2(或无标志,如果有内存,则基本上表示SSE 4.2a)。 x86版本的编译器为较旧的指令集扩展(例如SSE)添加了更多标志,但我怀疑您是否再对此感到担心。
另一类正在生成可在多种体系结构中的任何一种上运行的代码,但它们之间却相互青睐。 -favor
开关支持此功能,该开关支持ATOM,AMD64,INTEL64和“ blend”(基本上是指不偏爱一个以牺牲其他一个为代价)的目标。
它没有任何(已记录的)标记,例如偏爱Skylake与Haswell或Broadwell之类的东西。