2011-10-20 72 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。 –