インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

算術演算組込み関数

算術演算用のインテル® ストリーミング 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

_mm_add_ss

__m128 _mm_add_ss(__m128 a, __m128 b);

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

R0

R1

R2

R3

a0 + b0

a1

a2

a3

_mm_add_ps

__m128 _mm_add_ps(__m128 a, __m128 b);

ab の 4 つの単精度浮動小数点値を加算します。

R0

R1

R2

R3

a0 +b0

a1 + b1

a2 + b2

a3 + b3

_mm_sub_ss

__m128 _mm_sub_ss(__m128 a, __m128 b);

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

R0

R1

R2

R3

a0 - b0

a1

a2

a3

_mm_sub_ps

__m128 _mm_sub_ps(__m128 a, __m128 b);

ab の 4 つの単精度浮動小数点値を減算します。

R0

R1

R2

R3

a0 - b0

a1 - b1

a2 - b2

a3 - b3

_mm_mul_ss

__m128 _mm_mul_ss(__m128 a, __m128 b);

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

R0

R1

R2

R3

a0 * b0

a1

a2

a3

_mm_mul_ps

__m128 _mm_mul_ps(__m128 a, __m128 b);

ab の 4 つの単精度浮動小数点値を乗算します。

R0

R1

R2

R3

a0 * b0

a1 * b1

a2 * b2

a3 * b3

_mm_div_ss

__m128 _mm_div_ss(__m128 a, __m128 b);

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

R0

R1

R2

R3

a0 / b0

a1

a2

a3

_mm_div_ps

__m128 _mm_div_ps(__m128 a, __m128 b);

ab の 4 つの単精度浮動小数点値を除算します。

R0

R1

R2

R3

a0 / b0

a1 / b1

a2 / b2

a3 / b3

_mm_sqrt_ss

__m128 _mm_sqrt_ss(__m128 a);

a の下位の単精度浮動小数点値の平方根を計算します。上位 3 つの単精度浮動小数点値はそのまま渡されます。

R0

R1

R2

R3

sqrt(a0)

a1

a2

a3

_mm_sqrt_ps

__m128 _mm_sqrt_ps(__m128 a);

a の 4 つの単精度浮動小数点値の平方根を計算します。

R0

R1

R2

R3

sqrt(a0)

sqrt(a1)

sqrt(a2)

sqrt(a3)

_mm_rcp_ss

__m128 _mm_rcp_ss(__m128 a);

a の下位の単精度浮動小数点値の逆数の近似値を計算します。上位 3 つの単精度浮動小数点値はそのまま渡されます。

R0

R1

R2

R3

recip(a0)

a1

a2

a3

_mm_rcp_ps

__m128 _mm_rcp_ps(__m128 a);

a の 4 つの単精度浮動小数点値の逆数の近似値を計算します。

R0

R1

R2

R3

recip(a0)

recip(a1)

recip(a2)

recip(a3)

_mm_rsqrt_ss

__m128 _mm_rsqrt_ss(__m128 a);

a の下位の単精度浮動小数点値の平方根の逆数の近似値を計算します。上位 3 つの単精度浮動小数点値はそのまま渡されます。

R0

R1

R2

R3

recip(sqrt(a0))

a1

a2

a3

_mm_rsqrt_ps

__m128 _mm_rsqrt_ps(__m128 a);

a の 4 つの単精度浮動小数点値の平方根の逆数の近似値を計算します。

R0

R1

R2

R3

recip(sqrt(a0))

recip(sqrt(a1))

recip(sqrt(a2))

recip(sqrt(a3))

_mm_min_ss

__m128 _mm_min_ss(__m128 a, __m128 b);

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

R0

R1

R2

R3

min(a0, b0)

a1

a2

a3

_mm_min_ps

__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)

_mm_max_ss

__m128 _mm_max_ss(__m128 a, __m128 b);

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

R0

R1

R2

R3

max(a0, b0)

a1

a2

a3

_mm_max_ps

__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)