ストリーミング SIMD 拡張命令の変換操作

次の表の組み込み関数名をクリックすると、その組み込み関数の詳細が表示されます。

各組み込み関数演算の結果はレジスターに配置されます。ここでは、このレジスターを組み込み関数ごとに R または R0 から R3 までを使用して示します。結果レジスターの 4 つの 32 ビット部分を、R0、R1、R2、および R3 とそれぞれ表します。

次の表の組み込み関数名をクリックすると、その組み込み関数の詳細が表示されます。

ストリーミング SIMD 拡張命令 (SSE) の組み込み関数のプロトタイプは、ヘッダーファイル xmmintrin.h 内にあります。

組み込み関数名 操作 対応する 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 の最下位の単精度浮動小数点値を 32 ビット整数に変換します。
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 の最下位の単精度浮動小数点値を 32 ビット整数に変換します。
R
(int)a0
 
__int64 _mm_cvttss_si64(__m128 a)
切り捨てを使用して、a の最下位の単精度浮動小数点値を符号付き 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 からそのまま渡されます。

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 の最初のベクトル要素から単精度浮動小数点値を抽出します。使用されるコンテキストで可能な最も効率的な方法で行われます。