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

次の表に、変換操作のリストを示します。 表の後に、最新のニーモニック命名規則に従って、各組込み関数の説明を示します。これらの組込み関数を以前に使用していた場合に備えて、別名を用意しています。

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

組込み関数名 別名 対応する命令
_mm_cvt_ss2si _mm_cvtss_si32 CVTSS2SI
int _mm_cvt_ps2pi _mm_cvtps_pi32 CVTPS2PI
_mm_cvtt_ss2si _mm_cvttss_si32 CVTTSS2SI
_mm_cvtt_ps2pi _mm_cvttps_pi32 CVTTPS2PI
_mm_cvt_si2ss _mm_cvtsi32_ss CVTSI2SS
_mm_cvt_pi2ps _mm_cvtpi32_ps CVTTPS2PI
_mm_cvtpi16_ps   複合
_mm_cvtpu16_ps   複合
_mm_cvtpi8_ps   複合
_mm_cvtpu8_ps   複合
_mm_cvtpi32x2_ps   複合
_mm_cvtps_pi16   複合
_mm_cvtps_pi8   複合
 

int _mm_cvt_ss2si(__m128 a)

現在の丸めモードに従って、aの最下位の単精度浮動小数点値を32ビット整数に変換します。

r := (int)a0

__m64 _mm_cvt_ps2pi(__m128 a)

現在の丸めモードに従って、aの下位2個の単精度浮動小数点値を2個の32ビット整数に変換し、パックド形式で返します。

r0 := (int) a0
r1 := (int) a1

int _mm_cvtt_ss2si(__m128 a)

切り捨てを使用して、aの最下位の単精度浮動小数点値を32ビット整数に変換します。

r := (int)a0

__m64 _mm_cvtt_ps2pi(__m128 a)

切り捨てを使用して、aの下位2個の単精度浮動小数点値を2個の32ビット整数に変換し、パックド形式で返します。

r0 := (int) a0
r1 := (int) a1

__m128 _mm_cvt_si2ss(__m128, int)

32ビット整数bを単精度浮動小数点値に変換します。 上位3個の単精度浮動小数点値は、aからそのまま渡されます。  

r0 := (float)b
r1 := a1 ; r2 := a2 ; r3 := a3

__m128 _mm_cvt_pi2ps(__m128, __m64)

bのパックド形式の2個の32ビット整数値を、2個の単精度浮動小数点値に変換します。 上位2個の単精度浮動小数点値は、aからそのまま渡されます。

r0 := (float)b0
r1 := (float)b1

r2 := a2

r3 := a3

__inline __m128 _mm_cvtpi16_ps(__m64 a)

aの4個の符号付き16ビット整数値を、4個の単精度浮動小数点値に変換します。

r0 := (float) a0
r1 := (float) a1

r2 := (float) a2

r3 := (float) a3

__inline __m128 _mm_cvtpu16_ps(__m64 a)

aの4個の符号なし16ビット整数値を、4個の単精度浮動小数点値に変換します。

r0 := (float) a0
r1 := (float) a1

r2 := (float) a2

r3 := (float) a3

__inline __m128 _mm_cvtpi8_ps(__m64 a)

aの下位4個の符号付き8ビット整数値を、4個の単精度浮動小数点値に変換します。

r0 := (float) a0
r1 := (float) a1

r2 := (float) a2

r3 := (float) a3

__inline __m128 _mm_cvtpu8_ps(__m64 a)

aの下位4個の符号なし8ビット整数値を、4個の単精度浮動小数点値に変換します。

r0 := (float) a0
r1 := (float) a1

r2 := (float) a2

r3 := (float) a3

__inline __m128 _mm_cvtpi32x2_ps(__m64 a, __m64 b)

aの2個の符号付き32ビット整数値とbの2個の符号付き32ビット整数値を、4個の単精度浮動小数点値に変換します。

r0 := (float) a0
r1 := (float) a1

r2 := (float)b0

r3 := (float)b1

__inline __m64 _mm_cvtps_pi16(__m128 a)

aの4個の単精度浮動小数点値を、4個の符号付き16ビット整数値に変換します。

r0 := (short)a0
r1 := (short)a1

r2 := (short)a2

r3 := (short)a3

__inline __m64 _mm_cvtps_pi8(__m128 a)

aの4個の単精度浮動小数点値を、結果の下位4個の符号付き8ビット整数値に変換します。

r0 := (char)a0
r1 := (char)a1

r2 := (char)a2

r3 := (char)a3