インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
変換操作用のインテル® ストリーミング SIMD 拡張命令 (インテル® SSE) の組込み関数のプロトタイプは、ヘッダーファイル xmmintrin.h 内にあります。
これらの組込み関数を使用する場合、次のように immintrin.h ファイルをインクルードします。
#include <immintrin.h>
各組込み関数演算の結果はレジスターに配置されます。ここでは、このレジスターを組込み関数ごとに R または R0 から R3 までを使用して示します。R0、R1、R2、および R3 はそれぞれ、結果レジスターの 4 つの 32 ビット部分を表します。
* が付いている組込み関数は、インテル® 64 アーキテクチャーでのみ利用できます。残りの組込み関数は、IA-32 アーキテクチャーおよびインテル® 64 アーキテクチャーの両方で利用できます。
組込み関数名 |
演算 |
対応するインテル® SSE 命令 |
---|---|---|
_mm_cvtss_si32 |
32 ビット整数値への変換 |
CVTSS2SI |
_mm_cvtss_si64* |
64 ビット整数値への変換 |
CVTSS2SI |
_mm_cvtps_pi32 |
2 つの 32 ビット整数値への変換 |
CVTPS2PI |
_mm_cvttss_si32 |
32 ビット整数値への変換 |
CVTTSS2SI |
_mm_cvttss_si64* |
64 ビット整数値への変換 |
CVTTSS2SI |
_mm_cvttps_pi32 |
2 つの 32 ビット整数値への変換 |
CVTTPS2PI |
_mm_cvtsi32_ss |
32 ビット整数値からの変換 |
CVTSI2SS |
_mm_cvtsi64_ss* |
64 ビット整数値からの変換 |
CVTSI2SS |
_mm_cvtpi32_ps |
2 つの 32 ビット整数値からの変換 |
CVTTPI2PS |
_mm_cvtpi16_ps |
4 つの 16 ビット整数値からの変換 |
複合 |
_mm_cvtpu16_ps |
4 つの 16 ビット整数値からの変換 |
複合 |
_mm_cvtpi8_ps |
4 つの 8 ビット整数値からの変換 |
複合 |
_mm_cvtpu8_ps |
4 つの 8 ビット整数値からの変換 |
複合 |
_mm_cvtpi32x2_ps |
4 つの 32 ビット整数値からの変換 |
複合 |
_mm_cvtps_pi16 |
4 つの 16 ビット整数値への変換 |
複合 |
_mm_cvtps_pi8 |
4 つの 8 ビット整数値への変換 |
複合 |
_mm_cvtss_f32 |
抽出 |
複合 |
int _mm_cvtss_si32(__m128 a);
現在の丸めモードに従って、a の下位の単精度浮動小数点値を 32 ビット整数に変換します。
R |
---|
(int)a0 |
__int64 _mm_cvtss_si64(__m128 a);
現在の丸めモードに従って、a の下位の単精度浮動小数点値を符号付き 64 ビット整数値に変換します。
インテル® 64 アーキテクチャーのみで使用します。
R |
---|
(__int64)a0 |
__m64 _mm_cvtps_pi32(__m128 a);
現在の丸めモードに従って、a の下位 2 つの単精度浮動小数点値を 2 つの 32 ビット整数に変換し、パックド形式で返します。
R0 |
R1 |
---|---|
(int)a0 |
(int)a1 |
int _mm_cvttss_si32(__m128 a);
a の単精度浮動小数点値の下位側を、切り捨てモードで 1 つの 32 ビット整数に変換します。
R |
---|
(int)a0 |
__int64 _mm_cvttss_si64(__m128 a);
a の単精度浮動小数点値の下位側を、切り捨てモードで 1 つの 32 ビット整数に変換します。
インテル® 64 アーキテクチャーのみで使用します。
R |
---|
(__int64)a0 |
__m64 _mm_cvttps_pi32(__m128 a);
切り捨てを使用して、a の下位 2 つの単精度浮動小数点値を 2 つの 32 ビット整数に変換し、パックド形式で返します。
R0 |
R1 |
---|---|
(int)a0 |
(int)a1 |
__m128 _mm_cvtsi32_ss(__m128 a, int b);
32 ビット整数 b を単精度浮動小数点値に変換します。上位 3 つの単精度浮動小数点値は、a からそのまま渡されます。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(float)b |
a1 |
a2 |
a3 |
__m128 _mm_cvtsi64_ss(__m128 a, __int64 b);
64 ビット整数 b を単精度浮動小数点値に変換します。上位 3 つの単精度浮動小数点値は、a からそのまま渡されます。
インテル® 64 アーキテクチャーのみで使用します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(float)b |
a1 |
a2 |
a3 |
__m128 _mm_cvtpi32_ps(__m128 a, __m64 b);
b のパックド形式の 2 つの 32 ビット整数値を、2 つの単精度浮動小数点値に変換します。上位 2 つの単精度浮動小数点値は、a からそのまま渡されます。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(float)b0 |
(float)b1 |
a2 |
a3 |
__m128 _mm_cvtpi16_ps(__m64 a);
a の 4 つの符号付き 16 ビット整数値を、4 つの単精度浮動小数点値に変換します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(float)a0 |
(float)a1 |
(float)a2 |
(float)a3 |
__m128 _mm_cvtpu16_ps(__m64 a);
a の 4 つの符号付き 16 ビット整数値を、4 つの単精度浮動小数点値に変換します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(float)a0 |
(float)a1 |
(float)a2 |
(float)a3 |
__m128 _mm_cvtpi8_ps(__m64 a);
a の下位 4 つの符号付き 8 ビット整数値を、4 つの単精度浮動小数点値に変換します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(float)a0 |
(float)a1 |
(float)a2 |
(float)a3 |
__m128 _mm_cvtpu8_ps(__m64 a);
a の下位 4 つの符号なし 8 ビット整数値を、4 つの単精度浮動小数点値に変換します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(float)a0 |
(float)a1 |
(float)a2 |
(float)a3 |
__m128 _mm_cvtpi32x2_ps(__m64 a, __m64 b);
a の 2 つの符号付き 32 ビット整数値と b の 2 つの符号付き 32 ビット整数値を、4 つの単精度浮動小数点値に変換します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(float)a0 |
(float)a1 |
(float)b0 |
(float)b1 |
__m64 _mm_cvtps_pi16(__m128 a);
a の 4 つの単精度浮動小数点値を、4 つの符号付き 16 ビット整数値に変換します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(short)a0 |
(short)a1 |
(short)a2 |
(short)a3 |
__m64 _mm_cvtps_pi8(__m128 a);
a の 4 つの単精度浮動小数点値を、結果の下位 4 つの符号付き 8 ビット整数値に変換します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(char)a0 |
(char)a1 |
(char)a2 |
(char)a3 |
float _mm_cvtss_f32(__m128 a);
__m128 の最初のベクトル要素から単精度浮動小数点値を抽出します。使用されるコンテキストで可能な最も効率的な方法で行われます。