次の表に、ストリーミング 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)
a と b の下位の倍精度浮動小数点値を加算します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
| R0 | R1 |
|---|---|
| a0 + b0 | a1 |
__m128d _mm_add_pd(__m128d a, __m128d b)
a と b の 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)
a と b の下位の倍精度浮動小数点値を乗算します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
| R0 | R1 |
|---|---|
| a0 * b0 | a1 |
__m128d _mm_mul_pd(__m128d a, __m128d b)
a と b の 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)
a と b の下位の倍精度浮動小数点値について、小さい方の値を計算します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
| R0 | R1 |
|---|---|
| min (a0, b0) | a1 |
__m128d _mm_min_pd(__m128d a, __m128d b)
a と b の 2 つの倍精度浮動小数点値について、それぞれ小さい方の値を計算します。
| R0 | R1 |
|---|---|
| min (a0, b0) | min(a1, b1) |
__m128d _mm_max_sd(__m128d a, __m128d b)
a と b の下位の倍精度浮動小数点値について、大きい方の値を計算します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
| R0 | R1 |
|---|---|
| max (a0, b0) | a1 |
__m128d _mm_max_pd(__m128d a, __m128d b)
a と b の 2 つの倍精度浮動小数点値について、それぞれ大きい方の値を計算します。
| R0 | R1 |
|---|---|
| max (a0, b0) | max (a1, b1) |