ストリーミング SIMD 拡張命令 3 を使用する単精度浮動小数点ベクトル組み込み関数

次の浮動小数点組み込み関数は、ストリーミング SIMD 拡張命令 3 (SSE3) 対応のインテル(R) Pentium(R) 4 プロセッサー用に設計されたものです。

各組み込み関数演算の結果は、R0、R1、R2、および R3 レジスターに配置されます。

次の表の組み込み関数名をクリックすると、その組み込み関数の詳細が表示されます。

これらの組み込み関数のプロトタイプは、ヘッダーファイル pmmintrin.h 内にあります。

組み込み関数名 操作 対応する SSE3
命令
_mm_addsub_ps 減算および加算 ADDSUBPS
_mm_hadd_ps 加算 HADDPS
_mm_hsub_ps 減算 HSUBPS
_mm_movehdup_ps 複製 MOVSHDUP
_mm_moveldup_ps 複製 MOVSLDUP

 

extern __m128 _mm_addsub_ps(__m128 a, __m128 b);

奇数ベクトル要素を加え、偶数ベクトル要素を引きます。

R0 R1 R2 R3
a0 - b0; a1 + b1; a2 - b2; a3 + b3;

 

extern __m128 _mm_hadd_ps(__m128 a, __m128 b);

隣接したベクトル要素を加えます。

R0 R1 R2 R3
a0 + a1; a2 + a3; b0 + b1; b2 + b3;

 

extern __m128 _mm_hsub_ps(__m128 a, __m128 b);

隣接したベクトル要素を引きます。

R0 R1 R2 R3
a0 - a1; a2 - a3; b0 - b1; b2 - b3;

 

extern __m128 _mm_movehdup_ps(__m128 a);

奇数ベクトル要素を偶数ベクトル要素へ複製します。

R0 R1 R2 R3
a1; a1; a3; a3;

 

extern __m128 _mm_moveldup_ps(__m128 a);

偶数ベクトル要素を奇数ベクトル要素へ複製します。

R0 R1 R2 R3
a0; a0; a2; a2;