/arch:AVX
是否在Visual Studio 2012 Update 4上启用了AVX2(具有256位整数SIMD指令和一些新的FP随机洗牌)?思路:
是的,它启用了AVX,因为VS没有提到AVX2。但我认为VS可以使用AVX2,因为我的内在工作。
不是,它不支持,因为AVX和AVX2是单独的CPU功能(Sandybridge vs. Haswell,或Excavator/Zen vs. Bulldozer),就像SSE和SSE2是单独的一样。
/arch:AVX
是否在Visual Studio 2012 Update 4上启用了AVX2(具有256位整数SIMD指令和一些新的FP随机洗牌)?是的,它启用了AVX,因为VS没有提到AVX2。但我认为VS可以使用AVX2,因为我的内在工作。
不是,它不支持,因为AVX和AVX2是单独的CPU功能(Sandybridge vs. Haswell,或Excavator/Zen vs. Bulldozer),就像SSE和SSE2是单独的一样。
这里提到的是 AVX 而不是 AVX2。根据微软的说法,这主要适用于浮点运算。 无论此标志如何,VS2012都支持 AVX2 内部函数。 AVX 可在 SandyBridge 和 IvyBridge 的 i3、i5 和 i7 变种上使用。 AVX2 是从 Haswell 开始使用的。
/arch:AVX
,AVX2 intrinsics的代码生成将会更好。而不是它将让编译器自己发明AVX2指令的用途;这需要/arch:AVX2
。(旧版MSVC在没有使用/arch:AVX
的情况下使用AVX或AVX2 intrinsics会创建SSE/AVX转换停顿。我IRC现代MSVC更好)。 - Peter Cordes我已经确认了,当启用/arch:AVX时,Visual Studio 2013 Update 5仍会将代码的某些部分编译为AVX2,目前还没有选项可以只编译为AVX,希望微软能够修复这个问题。
/arch:AVX
来启用VEX编码即可。如果/arch:AVX2
存在,则允许编译器自动使用它们 - 但我怀疑这将成为可能,因为Visual Studio一直落后于自动向量化方面的发展历程。 - Mysticial