インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
ここでは、整数変換操作用のインテル® ストリーミング 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 アーキテクチャーのみで使用します。
R0 |
R1 |
---|---|
(double)b |
a1 |
__int64 _mm_cvtsd_si64(__m128d a);
現在の丸めモードに従って、a の下位の倍精度浮動小数点値を符号付き 64 ビット整数値に変換します。
インテル® 64 アーキテクチャーのみで使用します。
R |
---|
(__int64) a0 |
__int64 _mm_cvttsd_si64(__m128d a);
切り捨てを使用して、a の下位の倍精度浮動小数点値を符号付き 64 ビット整数値に変換します。
インテル® 64 アーキテクチャーのみで使用します。
R |
---|
(__int64) a0 |
__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 |