ストリーミング SIMD 拡張命令 (SSE) の組み込み関数のプロトタイプは、ヘッダーファイル xmmintrin.h 内にあります。
各組み込み関数演算の結果はレジスターに配置されます。ここでは、このレジスターを組み込み関数ごとに R0 から R3 までを使用して示します。結果レジスターの 4 つの 32 ビット部分を、R0、R1、R2、および R3 とそれぞれ表します。
次の表の組み込み関数名をクリックすると、その組み込み関数の詳細が表示されます。
組み込み関数 | 操作 | 対応する SSE 命令 |
---|---|---|
_mm_add_ss | 加算 | ADDSS |
_mm_add_ps | 加算 | ADDPS |
_mm_sub_ss | 減算 | SUBSS |
_mm_sub_ps | 減算 | SUBPS |
_mm_mul_ss | 乗算 | MULSS |
_mm_mul_ps | 乗算 | MULPS |
_mm_div_ss | 除算 | DIVSS |
_mm_div_ps | 除算 | DIVPS |
_mm_sqrt_ss | 平方根 | SQRTSS |
_mm_sqrt_ps | 平方根 | SQRTPS |
_mm_rcp_ss | 逆数 | RCPSS |
_mm_rcp_ps | 逆数 | RCPPS |
_mm_rsqrt_ss | 平方根の逆数 | RSQRTSS |
_mm_rsqrt_ps | 平方根の逆数 | RSQRTPS |
_mm_min_ss | 最小値の計算 | MINSS |
_mm_min_ps | 最小値の計算 | MINPS |
_mm_max_ss | 最大値の計算 | MAXSS |
_mm_max_ps | 最大値の計算 | MAXPS |
__m128 _mm_add_ss(__m128 a, __m128 b)
a と b の最下位の単精度浮動小数点値 (SP FP) を加算します。上位 3 つの単精度浮動小数点値は、a からそのまま渡されます。
R0 |
R1 | R2 | R3 |
---|---|---|---|
a0 + b0 | a1 | a2 | a3 |
__m128 _mm_add_ps(__m128 a, __m128 b)
a と b の 4 つの単精度浮動小数点値を加算します。
R0 | R1 | R2 | R3 |
---|---|---|---|
a0 + b0 | a1 + b1 | a2 + b2 | a3 + b3 |
__m128 _mm_sub_ss(__m128 a, __m128 b)
a の最下位の単精度浮動小数点値から、b の最下位の単精度浮動小数点値を引きます。上位 3 つの単精度浮動小数点値は a からそのまま渡されます。
R0 | R1 | R2 | R3 |
---|---|---|---|
a0 - b0 | a1 | a2 | a3 |
__m128 _mm_sub_ps(__m128 a, __m128 b)
a の 4 つの単精度浮動小数点値から、b の 4 つの単精度浮動小数点値を引きます。
R0 | R1 | R2 | R3 |
---|---|---|---|
a0 - b0 | a1 - b1 | a2 - b2 | a3 - b3 |
__m128 _mm_mul_ss(__m128 a, __m128 b)
a と b の最下位の単精度浮動小数点値を乗算します。上位 3 つの単精度浮動小数点値は、a からそのまま渡されます。
R0 | R1 | R2 | R3 |
---|---|---|---|
a0 * b0 | a1 | a2 | a3 |
__m128 _mm_mul_ps(__m128 a, __m128 b)
a と b の 4 つの単精度浮動小数点値を乗算します。
R0 | R1 | R2 | R3 |
---|---|---|---|
a0 * b0 | a1 * b1 | a2 * b2 | a3 * b3 |
__m128 _mm_div_ss(__m128 a, __m128 b )
a の最下位の単精度浮動小数点値を、b の最下位の単精度浮動小数点値で割ります。上位 3 つの単精度浮動小数点値は、a からそのまま渡されます。
R0 | R1 | R2 | R3 |
---|---|---|---|
a0 / b0 | a1 | a2 | a3 |
__m128 _mm_div_ps(__m128 a, __m128 b)
a の 4 つの単精度浮動小数点値を、b の 4 つの単精度浮動小数点値で割ります。
R0 | R1 | R2 | R3 |
---|---|---|---|
a0 / b0 | a1 / b1 | a2 / b2 | a3 / b3 |
__m128 _mm_sqrt_ss(__m128 a)
a の最下位の単精度浮動小数点値の平方根を計算します。上位 3 つの単精度浮動小数点値はそのまま渡されます。
R0 | R1 | R2 | R3 |
---|---|---|---|
sqrt(a0) | a1 | a2 | a3 |
__m128 _mm_sqrt_ps(__m128 a)
a の 4 つの単精度浮動小数点値の平方根を計算します。
R0 | R1 | R2 | R3 |
---|---|---|---|
sqrt(a0) | sqrt(a1) | sqrt(a2) | sqrt(a3) |
__m128 _mm_rcp_ss(__m128 a)
a の最下位の単精度浮動小数点値の逆数の近似値を計算します。上位 3 つの単精度浮動小数点値はそのまま渡されます。
R0 | R1 | R2 | R3 |
---|---|---|---|
recip(a0) | a1 | a2 | a3 |
__m128 _mm_rcp_ps(__m128 a)
a の 4 つの単精度浮動小数点値の逆数の近似値を計算します。
R0 | R1 | R2 | R3 |
---|---|---|---|
recip(a0) | recip(a1) | recip(a2) | recip(a3) |
__m128 _mm_rsqrt_ss(__m128 a)
a の最下位の単精度浮動小数点値の平方根の逆数の近似値を計算します。上位 3 つの単精度浮動小数点値はそのまま渡されます。
R0 | R1 | R2 | R3 |
---|---|---|---|
recip(sqrt(a0)) | a1 | a2 | a3 |
__m128 _mm_rsqrt_ps(__m128 a)
a の 4 つの単精度浮動小数点値の平方根の逆数の近似値を計算します。
R0 | R1 | R2 | R3 |
---|---|---|---|
recip(sqrt(a0)) | recip(sqrt(a1)) | recip(sqrt(a2)) | recip(sqrt(a3)) |
__m128 _mm_min_ss(__m128 a, __m128 b)
a と b の最下位の単精度浮動小数点値について、小さい方の値を計算をします。上位 3 つの単精度浮動小数点値は、a からそのまま渡されます。
R0 | R1 | R2 | R3 |
---|---|---|---|
min(a0, b0) | a1 | a2 | a3 |
__m128 _mm_min_ps(__m128 a, __m128 b)
a と b の 4 つの単精度浮動小数点値について、それぞれ小さい方の値を計算します。
R0 | R1 | R2 | R3 |
---|---|---|---|
min(a0, b0) | min(a1, b1) | min(a2, b2) | min(a3, b3) |
__m128 _mm_max_ss(__m128 a, __m128 b)
a と b の最下位の単精度浮動小数点値について、大きい方の値を計算をします。上位 3 つの単精度浮動小数点値は、a からそのまま渡されます。
R0 | R1 | R2 | R3 |
---|---|---|---|
max(a0, b0) | a1 | a2 | a3 |
__m128 _mm_max_ps(__m128 a, __m128 b)
a と b の 4 つの単精度浮動小数点値について、大きい方の値を計算します。
R0 | R1 | R2 | R3 |
---|---|---|---|
max(a0, b0) | max(a1, b1) | max(a2, b2) | max(a3, b3) |