Intrinsic Name | Corresponding Instruction | Operation | Signed | Saturation |
---|---|---|---|---|
_mm_empty |
EMMS |
Empty MM state |
-- |
-- |
_mm_cvtsi32_si64 |
MOVD |
Convert from int |
-- |
-- |
_mm_cvtsi64_si32 |
MOVD |
Convert from int |
-- |
-- |
_mm_packs_pi16 |
PACKSSWB |
Pack |
Yes |
Yes |
_mm_packs_pi32 |
PACKSSDW |
Pack |
Yes |
Yes |
_mm_packs_pu16 |
PACKUSWB |
Pack |
No |
Yes |
_mm_unpackhi_pi8 |
PUNPCKHBW |
Interleave |
-- |
-- |
_mm_unpackhi_pi16 |
PUNPCKHWD |
Interleave |
-- |
-- |
_mm_unpackhi_pi32 |
PUNPCKHDQ |
Interleave |
-- |
-- |
_mm_unpacklo_pi8 |
PUNPCKLBW |
Interleave |
-- |
-- |
_mm_unpacklo_pi16 |
PUNPCKLWD |
Interleave |
-- |
-- |
_mm_unpacklo_pi32 |
PUNPCKLDQ |
Interleave |
-- |
-- |
void _mm_empty (void)
Empty the multimedia state.
See The EMMS Instruction: Why You Need It figure
for details.
__m64 _mm_cvtsi32_si64 (int i)
Convert the integer object i to a 64-bit __m64 object. The integer value is zero-extended to 64 bits.
int _mm_cvtsi64_si32 (__m64 m)
Convert the lower 32 bits of the __m64 object m to an integer.
__m64 _mm_packs_pi16 (__m64 m1, __m64 m2)
Pack the four 16-bit values from m1 into the lower four 8-bit values of the result with signed saturation, and pack the four 16-bit values from m2 into the upper four 8-bit values of the result with signed saturation.
__m64 _mm_packs_pi32 (__m64 m1, __m64 m2)
Pack the two 32-bit values from m1 into the lower two 16-bit values of the result with signed saturation, and pack the two 32-bit values from m2 into the upper two 16-bit values of the result with signed saturation.
__m64 _mm_packs_pu16 (__m64 m1, __m64 m2)
Pack the four 16-bit values from m1 into the lower four 8-bit values of the result with unsigned saturation, and pack the four 16-bit values from m2 into the upper four 8-bit values of the result with unsigned saturation.
__m64 _mm_unpackhi_pi8 (__m64 m1, __m64 m2)
Interleave the four 8-bit values from the high half of m1 with the four values from the high half of m2. The interleaving begins with the data from m1.
__m64 _mm_unpackhi_pi16 (__m64 m1, __m64 m2)
Interleave the two 16-bit values from the high half of m1 with the two values from the high half of m2. The interleaving begins with the data from m1.
__m64 _mm_unpackhi_pi32 (__m64 m1, __m64 m2)
Interleave the 32-bit value from the high half of m1 with the 32-bit value from the high half of m2. The interleaving begins with the data from m1.
__m64 _mm_unpacklo_pi8 (__m64 m1, __m64 m2)
Interleave the four 8-bit values from the low half of m1 with the four values from the low half of m2. The interleaving begins with the data from m1.
__m64 _mm_unpacklo_pi16 (__m64 m1, __m64 m2)
Interleave the two 16-bit values from the low half of m1 with the two values from the low half of m2. The interleaving begins with the data from m1.
__m64 _mm_unpacklo_pi32 (__m64 m1, __m64 m2)
Interleave the 32-bit value from the low half of m1 with the 32-bit value from the low half of m2. The interleaving begins with the data from m1.