算術演算組み込み関数

算術演算用のインテル® ストリーミング SIMD 拡張命令 (インテル® SSE) の組み込み関数のプロトタイプは、ヘッダーファイル xmmintrin.h 内にあります。

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

組み込み関数

演算子

対応する
インテル® 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)

ab の最下位の単精度浮動小数点値 (SP FP) を加算します。上位 3 つの単精度浮動小数点値は、a からそのまま渡されます。

R0

R1

R2

R3

a0 + b0

a1

a2

a3

 

__m128 _mm_add_ps(__m128 a, __m128 b)

ab の 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)

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

R0

R1

R2

R3

a0 * b0

a1

a2

a3

 

__m128 _mm_mul_ps(__m128 a, __m128 b)

ab の 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)

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

R0

R1

R2

R3

min(a0, b0)

a1

a2

a3

 

__m128 _mm_min_ps(__m128 a, __m128 b)

ab の 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)

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

R0

R1

R2

R3

max(a0, b0)

a1

a2

a3

 

__m128 _mm_max_ps(__m128 a, __m128 b)

ab の 4 つの単精度浮動小数点値について、大きい方の値を計算します。

R0

R1

R2

R3

max(a0, b0)

max(a1, b1)

max(a2, b2)

max(a3, b3)