インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
3 つの float32 ベクトルを使用して、パックド単精度浮動小数点値の乗算-加算-減算を行います。対応する FMA 命令は VFMADDSUB<XXX>PS で、XXX は 132、213、または 231 です。
128 ビットのベクトルの場合
extern __m128 _mm_fmaddsub_ps(__m128 a, __m128 b, __m128 c); |
256 ビットのベクトルの場合
extern __m256 _mm256_fmaddsub_ps(__m256 a, __m256 b, __m256 c); |
a |
演算に使用する float32 ベクトル |
b |
演算に使用する float32 ベクトル |
c |
演算に使用する float32 ベクトル |
3 つのソースベクトル/オペランド a、b、および c を使用して、パックド単精度浮動小数点値の SIMD 乗算-加算-減算を行います。2 つのオペランド a と b の対応する値を乗算し、無限の精度の中間結果を取得します。3 つ目のオペランド c の奇数の値は中間結果に足し、偶数の値は中間結果から引きます。最終結果は、最も近い float32 値に丸められます。
コンパイラーは、デフォルトで VFMADDSUB213PS 命令を使用し、低レベルの最適化で有効または必要と判断された場合のみほかの形式 (VFMADDSUB132PS または VFMADDSUB231PS) を使用します。例えば、レジスターの使用を抑えたり、移動を排除できる場合、コンパイラーはほかの形式を使用します。
乗算-加算-減算の結果。