【发布时间】:2016-09-14 06:59:29
【问题描述】:
这是一个显示受支持指令集的类示例。 https://msdn.microsoft.com/en-us/library/hskdteyh.aspx
我想为一个函数编写三个不同的实现,每一个都使用不同的指令集。但是由于标志 /ARCH:AVX2,例如,这个应用程序只能在第 4 代以上的英特尔处理器上运行,所以整个检查点毫无意义。
所以,问题是:究竟这个标志是做什么的?启用支持或启用使用提供的指令集进行编译器优化?
换句话说,我可以完全删除这个标志并继续使用 immintrin.h、emmintrin.h 等中的函数吗?
【问题讨论】:
-
MSVC 中没有 SSE3 选项。在 64 位模式下,唯一的选项是
AVX和AVX2。AVX的重点是告诉 MSVC 使用 vex 编码指令。我真的不知道AVX2的意义。我认为这主要是为了从 FMA3 进行优化。
标签: visual-c++ simd avx