VS2010 SP1是否仅支持部分AVX指令集?

时间:2011-10-20 20:01:15

标签: c++ visual-studio-2010 sse avx fma

Microsoft声明VS2010支持全套AVX指令:

http://blogs.msdn.com/b/vcblog/archive/2009/11/02/visual-c-code-generation-in-visual-studio-2010.aspx

... 在VS2010版本中,所有AVX功能和说明均通过内在和/arch:AVX 完全支持。 ...

但我找不到任何用于融合乘法运算的内在函数

http://software.intel.com/sites/products/documentation/studio/composer/en-us/2011/compiler_c/intref_cls/common/intref_bk_avx_fma.htm#intref_bk_avx_fma

我需要使用_mm256_fmadd_ps函数,但在“immintrin.h”标题中缺少它。我真的很困惑。

1 个答案:

答案 0 :(得分:5)

Fused-Multiply Add内在函数不是AVX的一部分。英特尔在后来的AVX版本中摆脱了它。所以FMA是单独的指令集。

更糟糕的是,其中有两个FMA3(Intel - Haswell),FMA4(AMD - Bulldozer)。

VS2010 SP1支持FMA4 - AMD的版本。

目前尚未发布任何处理器产品线(除了AMD - Interlagos,它是Bulldozer的服务器部分)。

英特尔FMA内在函数适用于FMA3。由于没有处理器实现它,您将无法使用/测试它。