ここでは、整数変換操作用のインテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2) の組込み関数について説明します。インテル® SSE2 の組込み関数のプロトタイプは、ヘッダーファイル emmintrin.h 内にあります。
各組込み関数演算の結果はレジスターに配置されます。各レジスターに配置される値については、次の表の関数名の詳細で示します。R、R0、R1、R2、R3 は、結果が配置されるレジスターを表します。
* が付いている組込み関数は、インテル® 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
|
切り捨てを使用して単精度浮動小数点値から変換する
|
なし
|
__m128d _mm_cvtsi64_sd(__m128d a, __int64 b)
b の符号付き 64 ビット整数値を倍精度浮動小数点値に変換します。
a の上位の倍精度浮動小数点値はそのまま渡されます。
インテル® 64 アーキテクチャーのみで使用します。
__int64 _mm_cvtsd_si64(__m128d a)
現在の丸めモードに従って、a の下位の倍精度浮動小数点値を符号付き 64 ビット整数値に変換します。
インテル® 64 アーキテクチャーのみで使用します。
__int64 _mm_cvttsd_si64(__m128d a)
切り捨てを使用して、a の下位の倍精度浮動小数点値を符号付き 64 ビット整数値に変換します。
インテル® 64 アーキテクチャーのみで使用します。
__m128 _mm_cvtepi32_ps(__m128i a)
a の 4 つの符号付き 32 ビット整数値を単精度浮動小数点値に変換します。
R0
|
R1
|
R2
|
R3
|
(float) a0
|
(float) a1
|
(float) a2
|
(float) a3
|
__m128i _mm_cvtps_epi32(__m128 a)
a の 4 つの単精度浮動小数点値を符号付き 32 ビット整数値に変換します。
R0
|
R1
|
R2
|
R3
|
(int) a0
|
(int) a1
|
(int) a2
|
(int) a3
|
__m128i _mm_cvttps_epi32(__m128 a)
切り捨てを使用して、a の 4 つの単精度浮動小数点値を符号付き 32 ビット整数値に変換します。
R0
|
R1
|
R2
|
R3
|
(int) a0
|
(int) a1
|
(int) a2
|
(int) a3
|