Miscellaneous Operations for Streaming SIMD Extensions 2

The prototypes for Streaming SIMD Extensions 2 intrinsics are in the emmintrin.h header file.

__m128d _mm_unpackhi_pd(__m128d a, __m128d b)

(uses UNPCKHPD) Interleaves the upper DP FP values of a and b.
r0 := a1
r1 := b1

__m128d _mm_unpacklo_pd(__m128d a, __m128d b)

(uses UNPCKLPD) Interleaves the lower DP FP values of a and b.
r0 := a0
r1 := b0

int _mm_movemask_pd(__m128d a)

(uses MOVMSKPD) Creates a two-bit mask from the sign bits of the two DP FP values of a.
r := sign(a1) << 1 | sign(a0)

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

(uses SHUFPD) Selects two specific DP FP values from a and b, based on the mask i. The mask must be an immediate. See Macro Function for Shuffle for a description of the shuffle semantics.