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

算術演算組込み関数

ここでは、浮動小数点算術演算用のインテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2) の組込み関数について説明します。インテル® SSE2 の組込み関数のプロトタイプは、ヘッダーファイル emmintrin.h 内にあります。

各組込み関数演算の結果はレジスターに配置されます。各レジスターに配置される値については、次の表の関数名の詳細で示します。各組込み関数の結果レジスターは R0R1 で示します。R0 および R1 はそれぞれ、結果レジスターの 1 つの部分を表します。

組込み関数名

演算

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

_mm_add_sd

__m128d _mm_add_sd(__m128d a, __m128d b);

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

R0

R1

a0 + b0

a1

_mm_add_pd

__m128d _mm_add_pd(__m128d a, __m128d b);

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

R0

R1

a0 + b0

a1 + b1

_mm_sub_sd

__m128d _mm_sub_sd(__m128d a, __m128d b);

a の下位の倍精度浮動小数点値から、b の下位の倍精度浮動小数点値を引きます。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0

R1

a0 - b0

a1

_mm_sub_pd

__m128d _mm_sub_pd(__m128d a, __m128d b);

a の 2 つの倍精度浮動小数点値から、b の 2 つの倍精度浮動小数点値を引きます。

R0

R1

a0 - b0

a1 - b1

_mm_mul_sd

__m128d _mm_mul_sd(__m128d a, __m128d b);

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

R0

R1

a0 * b0

a1

_mm_mul_pd

__m128d _mm_mul_pd(__m128d a, __m128d b);

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

R0

R1

a0 * b0

a1 * b1

_mm_div_sd

__m128d _mm_div_sd(__m128d a, __m128d b);

a の下位の倍精度浮動小数点値を、b の下位の倍精度浮動小数点値で割ります。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0

R1

a0 / b0

a1

_mm_div_pd

__m128d _mm_div_pd(__m128d a, __m128d b);

a の 2 つの倍精度浮動小数点値を、b の 2 つの倍精度浮動小数点値で割ります。

R0

R1

a0 / b0

a1 / b1

_mm_sqrt_sd

__m128d _mm_sqrt_sd(__m128d a, __m128d b);

b の下位の倍精度浮動小数点値の平方根を計算します。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0

R1

sqrt(b0)

a1

_mm_sqrt_pd

__m128d _mm_sqrt_pd(__m128d a);

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

R0

R1

sqrt(a0)

sqrt(a1)

_mm_min_sd

__m128d _mm_min_sd(__m128d a, __m128d b);

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

R0

R1

min (a0, b0)

a1

_mm_min_pd

__m128d _mm_min_pd(__m128d a, __m128d b);

ab の 2 つの倍精度浮動小数点値について、それぞれ小さい方の値を計算します。

R0

R1

min (a0, b0)

min(a1, b1)

_mm_max_sd

__m128d _mm_max_sd(__m128d a, __m128d b);

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

R0

R1

max (a0, b0)

a1

_mm_max_pd

__m128d _mm_max_pd(__m128d a, __m128d b);

ab の 2 つの倍精度浮動小数点値について、それぞれ大きい方の値を計算します。

R0

R1

max (a0, b0)

max (a1, b1)