変換組み込み関数は、データ型を他のデータ型に変換します。_mm_cvtpd_ps などの変換を実行すると、データの精度が低下します。このような場合に使用する丸めモードは、MXCSR レジスターの値によって決まります。デフォルトの丸めモードは、最近値への丸めです。ただし、C および C++ 言語は、型変換の実行時に切り捨てモードを使用します。_mm_cvttpd_epi32 および _mm_cvttsd_si32 組み込み関数は、MXCSR レジスターで指定した丸めモードに関係なく、切り捨てモードを使用します。
次の表に、ストリーミング SIMD 拡張命令 2 (SSE2) の変換操作組み込み関数のリストを示します。表の後に、各組み込み関数の説明を示します。
次の表の組み込み関数名をクリックすると、その組み込み関数の詳細が表示されます。
各組み込み関数演算の結果はレジスターに配置されます。各レジスターに配置される値については、次の表の関数名の詳細で示します。R、R0、R1、R2、R3 は、結果が配置されるレジスターを表します。
SSE2 の組み込み関数のプロトタイプは、ヘッダーファイル emmintrin.h 内にあります。
組み込み関数名 | 操作 | 対応する SSE2 命令 |
---|---|---|
_mm_cvtpd_ps | 倍精度浮動小数点値から単精度浮動小数点値への変換 | CVTPD2PS |
_mm_cvtps_pd | 単精度浮動小数点値から倍精度浮動小数点値への変換 | CVTPS2PD |
_mm_cvtepi32_pd | 下位の整数値から倍精度浮動小数点値への変換 | CVTDQ2PD |
_mm_cvtpd_epi32 | 倍精度浮動小数点値から整数値への変換 | CVTPD2DQ |
_mm_cvtsd_si32 | 下位の倍精度浮動小数点値から整数値への変換 | CVTSD2SI |
_mm_cvtsd_ss | 下位の倍精度浮動小数点値から単精度浮動小数点値への変換 | CVTSD2SS |
_mm_cvtsi32_sd | 符号付き整数値から倍精度浮動小数点値への変換 | CVTSI2SD |
_mm_cvtss_sd | 下位の単精度浮動小数点値から倍精度浮動小数点値への変換 | CVTSS2SD |
_mm_cvttpd_epi32 | 倍精度浮動小数点値から符号付き整数値への変換 | CVTTPD2DQ |
_mm_cvttsd_si32 | 下位の倍精度浮動小数点値から符号付き整数値への変換 | CVTTSD2SI |
_mm_cvtpd_pi32 | 2 つの倍精度浮動小数点値から符号付き整数値への変換 | CVTPD2PI |
_mm_cvttpd_pi32 | 切り捨てを使用した 2 つの倍精度浮動小数点値から符号付き整数値への変換 | CVTTPD2PI |
_mm_cvtpi32_pd | 2 つの符号付き整数値から倍精度浮動小数点値への変換 | CVTPI2PD |
_mm_cvtsd_f64 | 最初のベクトル要素から倍精度浮動小数点値の抽出 | なし |
__m128 _mm_cvtpd_ps(__m128d a)
a の 2 つの倍精度浮動小数点値を単精度浮動小数点値に変換します。
R0 | R1 | R2 | R3 |
---|---|---|---|
(float) a0 | (float) a1 | 0.0 | 0.0 |
__m128d _mm_cvtps_pd(__m128 a)
a の下位 2 つの単精度浮動小数点値を倍精度浮動小数点値に変換します。
R0 | R1 |
---|---|
(double) a0 | (double) a1 |
__m128d _mm_cvtepi32_pd(__m128i a)
a の下位 2 つの符号付き 32 ビット整数値を倍精度浮動小数点値に変換します。
R0 | R1 |
---|---|
(double) a0 | (double) a1 |
__m128i _mm_cvtpd_epi32(__m128d a)
a の 2 つの倍精度浮動小数点値を符号付き 32 ビット整数値に変換します。
R0 | R1 | R2 | R3 |
---|---|---|---|
(int) a0 | (int) a1 | 0x0 | 0x0 |
int _mm_cvtsd_si32(__m128d a)
a の下位の倍精度浮動小数点値を符号付き 32 ビット整数値に変換します。
R |
---|
(int) a0 |
__m128 _mm_cvtsd_ss(__m128 a, __m128d b)
b の下位の倍精度浮動小数点値を単精度浮動小数点値に変換します。a の上位の単精度浮動小数点値はそのまま渡されます。
R0 | R1 | R2 | R3 |
---|---|---|---|
(float) b0 | a1 | a2 | a3 |
__m128d _mm_cvtsi32_sd(__m128d a, int b)
b の符号付き整数値を倍精度浮動小数点値に変換します。a の上位の倍精度浮動小数点値はそのまま渡されます。
R0 | R1 |
---|---|
(double) b | a1 |
__m128d _mm_cvtss_sd(__m128d a, __m128 b)
b の下位の単精度浮動小数点値を倍精度浮動小数点値に変換します。a の上位の倍精度浮動小数点値はそのまま渡されます。
R0 | R1 |
---|---|
(double) b0 | a1 |
__m128i _mm_cvttpd_epi32(__m128d a)
切り捨てを使用して、a の 2 つの倍精度浮動小数点値を符号付き 32 ビット整数値に変換します。
R0 | R1 | R2 | R3 |
---|---|---|---|
(int) a0 | (int) a1 | 0x0 | 0x0 |
int _mm_cvttsd_si32(__m128d a)
切り捨てを使用して、a の下位の倍精度浮動小数点値を符号付き 32 ビット整数に変換します。
R |
---|
(int) a0 |
__m64 _mm_cvtpd_pi32(__m128d a)
a の 2 つの倍精度浮動小数点値を符号付き 32 ビット整数値に変換します。
R0 | R1 |
---|---|
(int)a0 | (int) a1 |
__m64 _mm_cvttpd_pi32(__m128d a)
切り捨てを使用して、a の 2 つの倍精度浮動小数点値を符号付き 32 ビット整数値に変換します。
R0 | R1 |
---|---|
(int)a0 | (int) a1 |
__m128d _mm_cvtpi32_pd(__m64 a)
a の 2 つの符号付き 32 ビット整数値を倍精度浮動小数点値に変換します。
R0 | R1 |
---|---|
(double)a0 | (double)a1 |
_mm_cvtsd_f64(__m128d a)
この組み込み関数は __m128d の最初のベクトル要素から倍精度浮動小数点値を抽出します。使用されるコンテキストで可能な最も効率的な方法で行われます。この組み込み関数は特定の SSE2 命令には対応付けられません。