ストリーミング SIMD 拡張命令 2 の浮動小数点算術演算

次の表に、ストリーミング SIMD 拡張命令 2 (SSE2) の算術演算組み込み関数のリストを示します。SSE2 の組み込み関数のプロトタイプは、ヘッダーファイル emmintrin.h 内にあります。

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

各組み込み関数演算の結果はレジスターに配置されます。ここでは、このレジスターを組み込み関数ごとに R0 および R1 を使用して示します。R0 および R1 はそれぞれ、結果レジスターの 1 つの部分を表します。

サンプルコード Double Complex では、これらの組み込み関数の使用方法を紹介しています。

組み込み関数名 操作 対応する SSE2 命令
_mm_add_sd 加算 ADDSD
_mm_add_pd 加算 ADDPD
_mm_sub_sd 減算 SUBSD
_mm_sub_pd 減算 SUBPD
_mm_mul_sd 乗算 MULSD
_mm_mul_pd 乗算 MULPD
_mm_div_sd 除算 DIVSD
_mm_div_pd 除算 DIVPD
_mm_sqrt_sd 平方根の計算 SQRTSD
_mm_sqrt_pd 平方根の計算 SQRTPD
_mm_min_sd 最小値の計算 MINSD
_mm_min_pd 最小値の計算 MINPD
_mm_max_sd 最大値の計算 MAXSD
_mm_max_pd 最大値の計算 MAXPD

 

__m128d _mm_add_sd(__m128d a, __m128d b)

ab の下位の倍精度浮動小数点値を加算します。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0 R1
a0 + b0 a1

 

__m128d _mm_add_pd(__m128d a, __m128d b)

ab の 2 つの倍精度浮動小数点値を加算します。

R0 R1
a0 + b0 a1 + b1

 

__m128d _mm_sub_sd(__m128d a, __m128d b)

a の下位の倍精度浮動小数点値から、b の下位の倍精度浮動小数点値を引きます。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0 R1
a0 - b0 a1

 

__m128d _mm_sub_pd(__m128d a, __m128d b)

a の 2 つの倍精度浮動小数点値から、b の 2 つの倍精度浮動小数点値を引きます。

R0 R1
a0 - b0 a1 - b1

 

__m128d _mm_mul_sd(__m128d a, __m128d b)

ab の下位の倍精度浮動小数点値を乗算します。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0 R1
a0 * b0 a1

 

__m128d _mm_mul_pd(__m128d a, __m128d b)

ab の 2 つの倍精度浮動小数点値を乗算します。

R0 R1
a0 * b0 a1 * b1

 

__m128d _mm_div_sd(__m128d a, __m128d b)

a の下位の倍精度浮動小数点値を、b の下位の倍精度浮動小数点値で割ります。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0 R1
a0 / b0 a1

 

__m128d _mm_div_pd(__m128d a, __m128d b)

a の 2 つの倍精度浮動小数点値を、b の 2 つの倍精度浮動小数点値で割ります。

R0 R1
a0 / b0 a1 / b1

 

__m128d _mm_sqrt_sd(__m128d a, __m128d b)

b の下位の倍精度浮動小数点値の平方根を計算します。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0 R1
sqrt(b0) a1

 

__m128d _mm_sqrt_pd(__m128d a)

a の 2 つの倍精度浮動小数点値の平方根を計算します。

R0 R1
sqrt(a0) sqrt(a1)

 

__m128d _mm_min_sd(__m128d a, __m128d b)

ab の下位の倍精度浮動小数点値について、小さい方の値を計算します。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0 R1
min (a0, b0) a1

 

__m128d _mm_min_pd(__m128d a, __m128d b)

ab の 2 つの倍精度浮動小数点値について、それぞれ小さい方の値を計算します。

R0 R1
min (a0, b0) min(a1, b1)

 

__m128d _mm_max_sd(__m128d a, __m128d b)

ab の下位の倍精度浮動小数点値について、大きい方の値を計算します。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0 R1
max (a0, b0) a1

 

__m128d _mm_max_pd(__m128d a, __m128d b)

ab の 2 つの倍精度浮動小数点値について、それぞれ大きい方の値を計算します。

R0 R1
max (a0, b0) max (a1, b1)