Miscellaneous Operations (Floating-Point SSE2 Intrinsics)

Microsoft Specific

For an explanation of the syntax used in code samples in this topic, see Floating-Point Intrinsics Using Streaming SIMD Extensions.

SSE2 intrinsics use the __m128, __m128i, and __m128d data types, which are not supported on Itanium Processor Family (IPF) processors. Any SSE2 intrinsics that use the __m64 data type are not supported on x64 processors.

The emmintrin.h header file contains the declarations for the SSE2 instructions intrinsics.

__m128d _mm_unpackhi_pd (__m128d a, __m128d b);

UNPCKHPD

Interleaves the upper double-precision, floating-point values of a and b.

r0 := a1
r1 := b1

__m128d _mm_unpacklo_pd (__m128d a, __m128d b);

UNPCKLPD

Interleaves the lower double-precision, floating-point values of a and b.

r0 := a0
2 := b0

int _mm_movemask_pd (__m128d a);

MOVMSKPD

Creates a two-bit mask from the sign bits of the two double-precision, floating-point values of a.

r := sign(a1) << 1 | sign(a0)

__m128d _mm_shuffle_pd (__m128d a, __m128d b, int i);

SHUFPD

Selects two specific double-precision, floating-point values from a and b, based on the mask i. The mask must be an immediate. See Macro Function for Shuffle Using Streaming SIMD Extensions 2 Instructions section for a description of the shuffle semantics.

See Also

Concepts

Floating-Point Intrinsics Using Streaming SIMD Extensions 2 Instructions