下面是一个显示支持的指令集的类的例子。 https://msdn.microsoft.com/en-us/library/hskdteyh.aspxMSVC/arch:[指令集] - SSE3,AVX,AVX2
我想写三个不同的函数实现,每个函数都使用不同的指令集。但是,例如,由于flag/ARCH:AVX2,这款应用程序不会运行在第4代以上的英特尔处理器上,因此整个检查点是毫无意义的。
那么,问题是:什么究竟是这个标志呢?启用支持或启用使用提供的指令集进行编译器优化?
换句话说,我可以完全删除此标志,并继续使用immintrin.h,emmintrin.h等功能?
MSVC中没有SSE3选项。在64位模式下,唯一的选择是“AVX”和“AVX2”。 “AVX”的要点是告诉MSVC使用vex编码指令。我真的不知道'AVX2'的重点。我认为这主要是从FMA3进行优化。 –