次の表に、ストリーミング 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) |