The following two conversion intrinsics and their respective instructions are functional in the Streaming SIMD Extensions 2 (SSE2).

The prototypes for SSE2 intrinsics are in the emmintrin.h header file.

__m128i _mm_cvtsi32_si128(int a)

(uses MOVD) Moves 32-bit integer
a to the least significant 32 bits of an __m128i object. Copies the sign bit of a
into the upper 96 bits of the __m128i object.

r0 := a

r1 := 0x0 ; r2 := 0x0 ; r3 := 0x0

int _mm_cvtsi128_si32(__m128i a)

(uses MOVD) Moves the least
significant 32 bits of a to a 32 bit integer.

r := a0

__m128 _mm_cvtepi32_ps(__m128i a)

Converts the 4 signed 32-bit integer values of a to SP FP values.

r0 := (float) a0

r1 := (float) a1

r2 := (float) a2

r3 := (float) a3

__m128i _mm_cvtps_epi32(__m128 a)

Converts the 4 SP FP values of a
to signed 32-bit integer values.

r0 := (int) a0

r1 := (int) a1

r2 := (int) a2

r3 := (int) a3

__m128i _mm_cvttps_epi32(__m128 a)

Converts the 4 SP FP values of a
to signed 32 bit integer values using truncate.

r0 := (int) a0

r1 := (int) a1

r2 := (int) a2

r3 := (int) a3