Conversion Operations for Streaming SIMD Extensions

The conversions operations are listed in the following table followed by a description of each intrinsic with the most recent mnemonic naming convention. The alternate name is provided in case you have used these intrinsics before.

Intrinsic Name Corresponding Instruction

_mm_cvtss_si32

CVTSS2SI

_mm_cvtps_pi32

CVTPS2PI

_mm_cvttss_si32

CVTTSS2SI

_mm_cvttps_pi32

CVTTPS2PI

_mm_cvtsi32_ss

CVTSI2SS

_mm_cvtpi32_ps

CVTTPS2PI

_mm_cvtpi16_ps

composite

_mm_cvtpu16_ps

composite

_mm_cvtpi8_ps

composite

_mm_cvtpu8_ps

composite

_mm_cvtpi32x2_ps

composite

_mm_cvtps_pi16

composite

_mm_cvtps_pi8

composite

 

int _mm_cvtss_si32(__m128 a )

Convert the lower SP FP value of a to a 32-bit integer according to the current rounding mode.

r := (int)a0

 

__m64 _mm_cvtps_pi32(__m128 a )

Convert the two lower SP FP values of a to two 32-bit integers according to the current rounding mode, returning the integers in packed form.

r0 := (int)a0

r1 := (int)a1

 

int _mm_cvttss_si32(__m128 a )

Convert the lower SP FP value of a to a 32-bit integer with truncation.

r := (int)a0

 

__m64 _mm_cvttps_pi32(__m128 a )

Convert the two lower SP FP values of a to two 32-bit integer with truncation, returning the integers in packed form.

r0 := (int)a0

r1 := (int)a1

 

__m128 _mm_cvtsi32_ss(__m128 a, int b )

Convert the 32-bit integer value b to an SP FP value; the upper three SP FP values are passed through from a.

r0 := (float)b

r1 := a1 ; r2 := a2 ; r3 := a3

 

__m128 _mm_cvtpi32_ps(__m128 a, __m64 b )

Convert the two 32-bit integer values in packed form in b to two SP FP values; the upper two SP FP values are passed through from a.

r0 := (float)b0

r1 := (float)b1

r2 := a2

r3 := a3

 

__m128 _mm_cvtpi16_ps(__m64 a)

Convert the four 16-bit signed integer values in a to four single precision FP values.

r0 := (float)a0

r1 := (float)a1

r2 := (float)a2

r3 := (float)a3

 

__m128 _mm_cvtpu16_ps(__m64 a)

Convert the four 16-bit unsigned integer values in a to four single precision FP values.

r0 := (float)a0

r1 := (float)a1

r2 := (float)a2

r3 := (float)a3

 

__m128 _mm_cvtpi8_ps(__m64 a)

Convert the lower four 8-bit signed integer values in a to four single precision FP values.

r0 := (float)a0

r1 := (float)a1

r2 := (float)a2

r3 := (float)a3

 

__m128 _mm_cvtpu8_ps(__m64 a)

Convert the lower four 8-bit unsigned integer values in a to four single precision FP values.

r0 := (float)a0

r1 := (float)a1

r2 := (float)a2

r3 := (float)a3

 

__m128 _mm_cvtpi32x2_ps(__m64 a, __m64 b)

Convert the two 32-bit signed integer values in a and the two 32-bit signed integer values in b to four single precision FP values.

r0 := (float)a0

r1 := (float)a1

r2 := (float)b0

r3 := (float)b1

 

__m64 _mm_cvtps_pi16( __m128 a)

Convert the four single precision FP values in a to four signed 16-bit integer values.

r0 := (short)a0

r1 := (short)a1

r2 := (short)a2

r3 := (short)a3

 

__m64 _mm_cvtps_pi8( __m128 a)

Convert the four single precision FP values in a to the lower four signed 8-bit integer values of the result.

r0 := (char)a0

r1 := (char)a1

r2 := (char)a2

r3 := (char)a3