次の表に、ストリーミング SIMD 拡張命令 2 の算術演算組込み関数のリストを示します。表の後に、各組込み関数の説明を示します。
ストリーミング SIMD 拡張命令 2 の組込み関数のプロトタイプは、ヘッダファイル emmintrin.h 内にあります。
組込み関数 の名前 |
対応する 命令 |
操作 | R0 の値 |
R1 の値 |
---|---|---|---|---|
_mm_add_sd | ADDSD | 加算 | a0 [op] b0 | a1 |
_mm_add_pd | ADDPD | 加算 | a0 [op] b0 | a1 [op] b1 |
_mm_sub_sd | SUBSD | 減算 | a0 [op] b0 | a1 |
_mm_sub_pd | SUBPD | 減算 | a0 [op] b0 | a1 [op] b1 |
_mm_mul_sd | MULSD | 乗算 | a0 [op] b0 | a1 |
_mm_mul_pd | MULPD | 乗算 | a0 [op] b0 | a1 [op] b1 |
_mm_div_sd | DIVSD | 除算 | a0 [op] b0 | a1 |
_mm_div_pd | DIVPD | 除算 | a0 [op] b0 | a1 [op] b1 |
_mm_sqrt_sd | SQRTSD | 平方根の計算 | a0 [op] b0 | a1 |
_mm_sqrt_pd | SQRTPD | 平方根の計算 | a0 [op] b0 | a1 [op] b1 |
_mm_min_sd | MINSD | 最小値の計算 | a0 [op] b0 | a1 |
_mm_min_pd | MINPD | 最小値の計算 | a0 [op] b0 | a1 [op] b1 |
_mm_max_sd | MAXSD | 最大値の計算 | a0 [op] b0 | a1 |
_mm_max_pd | MAXPD | 最大値の計算 | a0 [op] b0 | a1 [op] b1 |
__m128d _mm_add_sd(__m128d a, __m128d b)
a と b の下位の倍精度浮動小数点値を加算します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
r0 := a0 + b0
r1 := a1
__m128d _mm_add_pd(__m128d a, __m128d b)
a と b の 2 つの倍精度浮動小数点値を加算します。
r0 := a0 + b0
r1 := a1 + b1
__m128d _mm_sub_sd(__m128d a, __m128d b)
a の下位の倍精度浮動小数点値から、b の下位の倍精度浮動小数点値を引きます。上位の倍精度浮動小数点値は、a からそのまま渡されます。
r0 := a0 - b0
r1 := a1
__m128d _mm_sub_pd(__m128d a, __m128d b)
a の 2 つの倍精度浮動小数点値から、b の 2 つの倍精度浮動小数点値を引きます。
r0 := a0 - b0
r1 := a1 - b1
__m128d _mm_mul_sd(__m128d a, __m128d b)
a と b の下位の倍精度浮動小数点値を乗算します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
r0 := a0 * b0
r1 := a1
__m128d _mm_mul_pd(__m128d a, __m128d b)
a と b の 2 つの倍精度浮動小数点値を乗算します。
r0 := a0 * b0
r1 := a1 * b1
__m128d _mm_div_sd(__m128d a, __m128d b)
a の下位の倍精度浮動小数点値を、b の下位の倍精度浮動小数点値で割ります。上位の倍精度浮動小数点値は、a からそのまま渡されます。
r0 := a0 / b0
r1 := a1
__m128d _mm_div_pd(__m128d a, __m128d b)
a の 2 つの倍精度浮動小数点値を、b の 2 つの倍精度浮動小数点値で割ります。
r0 := a0 / b0
r1 := a1 / b1
__m128d _mm_sqrt_sd(__m128d a, __m128d b)
b の下位の倍精度浮動小数点値の平方根を計算します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
r0 := sqrt(b0)
r1 := a1
__m128d _mm_sqrt_pd(__m128d a)
a の 2 つの倍精度浮動小数点値の平方根を計算します。
r0 := sqrt(a0)
r1 := sqrt(a1)
__m128d _mm_min_sd(__m128d a, __m128d b)
a と b の下位の倍精度浮動小数点値について、小さい方の値を計算します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
r0 := min (a0, b0)
r1 := a1
__m128d _mm_min_pd(__m128d a, __m128d b)
a と b の 2 つの倍精度浮動小数点値について、それぞれ小さい方の値を計算します。
r0 := min(a0, b0)
r1 := min(a1, b1)
__m128d _mm_max_sd(__m128d a, __m128d b)
a と b の下位の倍精度浮動小数点値について、大きい方の値を計算します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
r0 := max (a0, b0)
r1 := a1
__m128d _mm_max_pd(__m128d a, __m128d b)
a と b の 2 つの倍精度浮動小数点値について、それぞれ大きい方の値を計算します。
r0 := max(a0, b0)
r1 := max(a1, b1)