インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

_mm_fmsubadd_pd、_mm256_fmsubadd_pd

3 つの float64 ベクトルを使用して、パックド倍精度浮動小数点値の乗算-減算-加算を行います。対応する FMA 命令は VFMSUBADD<XXX>PD で、XXX は 132、213、または 231 です。

構文

128 ビットのベクトルの場合

extern __m128d _mm_fmsubadd_pd(__m128d a, __m128d b, __m128d c);

256 ビットのベクトルの場合

extern __m256d _mm256_fmsubadd_pd(__m256d a, __m256d b, __m256d c);

引数

a

演算に使用する float64 ベクトル

b

演算に使用する float64 ベクトル

c

演算に使用する float64 ベクトル

説明

3 つのソースベクトル/オペランド ab、および c を使用して、パックド倍精度浮動小数点値の SIMD 乗算-減算-加算を行います。2 つのオペランド ab の対応する値を乗算し、無限の精度の中間結果を取得します。3 つ目のオペランド c の奇数の値は中間結果から引き、偶数の値は中間結果に足します。最終結果は、最も近い float64 値に丸められます。

コンパイラーは、デフォルトで VFMSUBADD213PD 命令を使用し、低レベルの最適化で有効または必要と判断された場合のみほかの形式 (VFMSUBADD132PD または VFMSUBSADD231PD) を使用します。例えば、レジスターの使用を抑えたり、移動を排除できる場合、コンパイラーはほかの形式を使用します。

戻り値

乗算-減算-加算の結果。