转自 http://www.gursey.gov.tr/Gilgamesh-WWW/IntelCompDocs/c_ug/linux337.htm
The prototypes for MMX technology intrinsics are in the mmintrin.h header file.
Intrinsic Name | Alternate Name | Corresponding Instruction | Operation | Signed | Saturation |
---|---|---|---|---|---|
_m_empty | _mm_empty | EMMS | Empty MM state | -- | -- |
_m_from_int | _mm_cvtsi32_si64 | MOVD | Convert from int | -- | -- |
_m_to_int | _mm_cvtsi64_si32 | MOVD | Convert from int | -- | -- |
_m_packsswb | _mm_packs_pi16 | PACKSSWB | Pack | Yes | Yes |
_m_packssdw | _mm_packs_pi32 | PACKSSDW | Pack | Yes | Yes |
_m_packuswb | _mm_packs_pu16 | PACKUSWB | Pack | No | Yes |
_m_punpckhbw | _mm_unpackhi_pi8 | PUNPCKHBW | Interleave | -- | -- |
_m_punpckhwd | _mm_unpackhi_pi16 | PUNPCKHWD | Interleave | -- | -- |
_m_punpckhdq | _mm_unpackhi_pi32 | PUNPCKHDQ | Interleave | -- | -- |
_m_punpcklbw | _mm_unpacklo_pi8 | PUNPCKLBW | Interleave | -- | -- |
_m_punpcklwd | _mm_unpacklo_pi16 | PUNPCKLWD | Interleave | -- | -- |
_m_punpckldq | _mm_unpacklo_pi32 | PUNPCKLDQ | Interleave | -- | -- |
void _m_empty(void)
Empty the multimedia state.
See The EMMS Instruction: Why You Need It figure for details.
Convert the integer object i to a 64-bit __m64 object. The integer value is zero-extended to 64 bits.
int _m_to_int(__m64 m)Convert the lower 32 bits of the __m64 object m to an integer.
__m64 _m_packsswb(__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 _m_packssdw(__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 _m_packuswb(__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 _m_punpckhbw(__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 _m_punpckhwd(__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 _m_punpckhdq(__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 _m_punpcklbw(__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 _m_punpcklwd(__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 _m_punpckldq(__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.