2011-10-20 65 views
3

微软称VS2010支持全套的AVX指令:VS2010 SP1是否仅支持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”头不见了。我真的很坚持。

回答

5

Fused-Multiply Add intrinsics不是AVX的一部分。英特尔在之后的AVX修订版中摆脱了它。所以FMA是单独的指令集。

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

VS2010 SP1支持FMA4 - AMD的版本。

两条处理器产品线都未发布(除了AMD-- Interlagos,这是Bulldozer的服务器部分)。

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

+0

哦,我不知道这个命令不是AVX的一部分。似乎我想从当前的硬件太多:)好吧,我将使用_mm256_mul_ps + _mm256_add_ps来代替。谢谢! – Mike

+0

你不是唯一一个想要更多...... :)我在等待AVX大约一年之后才出来。现在我急切地等待FMA3,FMA4/XOP和AVX2。 XD – Mysticial

+0

FMA4实际上原本是英特尔的,但在开发过程中它们更改为FMA3。 –