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

変換組込み関数

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

各組込み関数演算の結果はレジスターに配置されます。各レジスターに配置される値については、次の表の関数名の詳細で示します。RR0R1R2R3 は、結果が配置されるレジスターを表します。

* が付いている組込み関数は、インテル® 64 アーキテクチャーのみに実装されます。残りの組込み関数は、IA-32 アーキテクチャーおよびインテル® 64 アーキテクチャーの両方に実装されます。

組込み関数名

演算

対応するインテル® SSE2 命令

_mm_cvtsi64_sd*

64 ビット整数値から倍精度浮動小数点値に変換し、上位の倍精度浮動小数点値はそのまま渡す

CVTSI2SD

_mm_cvtsd_si64*

丸めモードに従って変換する

CVTSD2SI

_mm_cvttsd_si64*

切り捨てを使用して変換する

CVTTSD2SI

_mm_cvtepi32_ps

単精度浮動小数点値に変換する

なし

_mm_cvtps_epi32

単精度浮動小数点値から変換する

なし

_mm_cvttps_epi32

切り捨てを使用して単精度浮動小数点値から変換する

なし

_mm_cvtsi64_sd

__m128d _mm_cvtsi64_sd(__m128d a, __int64 b);

b の符号付き 64 ビット整数値を倍精度浮動小数点値に変換します。a の上位の倍精度浮動小数点値はそのまま渡されます。

インテル® 64 アーキテクチャーのみで使用します。

R0

R1

(double)b

a1

_mm_cvtsd_si64

__int64 _mm_cvtsd_si64(__m128d a);

現在の丸めモードに従って、a の下位の倍精度浮動小数点値を符号付き 64 ビット整数値に変換します。

インテル® 64 アーキテクチャーのみで使用します。

R

(__int64) a0

_mm_cvttsd_si64

__int64 _mm_cvttsd_si64(__m128d a);

切り捨てを使用して、a の下位の倍精度浮動小数点値を符号付き 64 ビット整数値に変換します。

インテル® 64 アーキテクチャーのみで使用します。

R

(__int64) a0

_mm_cvtepi32_ps

__m128 _mm_cvtepi32_ps(__m128i a);

a の 4 つの符号付き 32 ビット整数値を単精度浮動小数点値に変換します。

R0

R1

R2

R3

(float) a0

(float) a1

(float) a2

(float) a3

_mm_cvtps_epi32

__m128i _mm_cvtps_epi32(__m128 a);

a の 4 つの単精度浮動小数点値を符号付き 32 ビット整数値に変換します。

R0

R1

R2

R3

(int) a0

(int) a1

(int) a2

(int) a3

_mm_cvttps_epi32

__m128i _mm_cvttps_epi32(__m128 a);

切り捨てを使用して、a の 4 つの単精度浮動小数点値を符号付き 32 ビット整数値に変換します。

R0

R1

R2

R3

(int) a0

(int) a1

(int) a2

(int) a3