MMX(TM) Technology General Support Intrinsics

The prototypes for MMX™ technology intrinsics are in the mmintrin.h header file.

To see detailed information about an intrinsic, click on that intrinsic in the following table.

Intrinsic Name Operation Corresponding MMX Instruction
_mm_empty Empty MM state EMMS
_mm_cvtsi32_si64 Convert from int MOVD
_mm_cvtsi64_si32 Convert to int MOVD
_mm_cvtsi64_m64 Convert from __int64 MOVQ
_mm_cvtm64_si64 Convert to __int64

MOVQ

_mm_packs_pi16 Pack PACKSSWB
_mm_packs_pi32 Pack PACKSSDW
_mm_packs_pu16 Pack PACKUSWB
_mm_unpackhi_pi8 Interleave PUNPCKHBW
_mm_unpackhi_pi16 Interleave PUNPCKHWD
_mm_unpackhi_pi32 Interleave

PUNPCKHDQ

_mm_unpacklo_pi8 Interleave PUNPCKLBW
_mm_unpacklo_pi16 Interleave PUNPCKLWD
_mm_unpacklo_pi32 Interleave PUNPCKLDQ

 

void _mm_empty(void)

Empty the multimedia state.

 

__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_cvtsi64_m64(__int64 i)

Move the 64-bit integer object i to a __mm64 object

 

__int64 _mm_cvtm64_si64(__m64 m)

Move the __m64 object m to a 64-bit 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.