The prototypes for MMX(TM) technology intrinsics are in the mmintrin.h header file.
Intrinsic Name |
Alternate Name | Corresponding Instruction |
Operation | Signed | Argument Values/Bits |
Result Values/Bits |
---|---|---|---|---|---|---|
_m_paddb | _mm_add_pi8 | PADDB | Addition | -- | 8/8 | 8/8 |
_m_paddw | _mm_add_pi16 | PADDW | Addition | -- | 4/16 | 4/16 |
_m_paddd | _mm_add_pi32 | PADDD | Addition | -- | 2/32 | 2/32 |
_m_paddsb | _mm_adds_pi8 | PADDSB | Addition | Yes | 8/8 | 8/8 |
_m_paddsw | _mm_adds_pi16 | PADDSW | Addition | Yes | 4/16 | 4/16 |
_m_paddusb | _mm_adds_pu8 | PADDUSB | Addition | No | 8/8 | 8/8 |
_m_paddusw | _mm_adds_pu16 | PADDUSW | Addition | No | 4/16 | 4/16 |
_m_psubb | _mm_sub_pi8 | PSUBB | Subtraction | -- | 8/8 | 8/8 |
_m_psubw | _mm_sub_pi16 | PSUBW | Subtraction | -- | 4/16 | 4/16 |
_m_psubd | _mm_sub_pi32 | PSUBD | Subtraction | -- | 2/32 | 2/32 |
_m_psubsb | _mm_subs_pi8 | PSUBSB | Subtraction | Yes | 8/8 | 8/8 |
_m_psubsw | _mm_subs_pi16 | PSUBSW | Subtraction | Yes | 4/16 | 4/16 |
_m_psubusb | _mm_subs_pu8 | PSUBUSB | Subtraction | No | 8/8 | 8/8 |
_m_psubusw | _mm_subs_pu16 | PSUBUSW | Subtraction | No | 4/16 | 4/16 |
_m_pmaddwd | _mm_madd_pi16 | PMADDWD | Multiplication | -- | 4/16 | 2/32 |
_m_pmulhw | _mm_mulhi_pi16 | PMULHW | Multiplication | Yes | 4/16 | 4/16 (high) |
_m_pmullw | _mm_mullo_pi16 | PMULLW | Multiplication | -- | 4/16 | 4/16 (low) |
__m64 _m_paddb(__m64 m1, __m64 m2)
Add the eight 8-bit values in m1 to the eight 8-bit values in m2.
__m64 _m_paddw(__m64 m1, __m64 m2)
Add the four 16-bit values in m1 to the four 16-bit values in m2.
__m64 _m_paddd(__m64 m1, __m64 m2)
Add the two 32-bit values in m1 to the two 32-bit values in m2.
__m64 _m_paddsb(__m64 m1, __m64 m2)
Add the eight signed 8-bit values in m1 to the eight signed 8-bit values in m2 using saturating arithmetic.
__m64 _m_paddsw(__m64 m1, __m64 m2)
Add the four signed 16-bit values in m1 to the four signed 16-bit values in m2 using saturating arithmetic.
__m64 _m_paddusb(__m64 m1, __m64 m2)
Add the eight unsigned 8-bit values in m1 to the eight unsigned 8-bit values in m2 and using saturating arithmetic.
__m64 _m_paddusw(__m64 m1, __m64 m2)
Add the four unsigned 16-bit values in m1 to the four unsigned 16-bit values in m2 using saturating arithmetic.
__m64 _m_psubb(__m64 m1, __m64 m2)
Subtract the eight 8-bit values in m2 from the eight 8-bit values in m1.
__m64 _m_psubw(__m64 m1, __m64 m2)
Subtract the four 16-bit values in m2 from the four 16-bit values in m1.
__m64 _m_psubd(__m64 m1, __m64 m2)
Subtract the two 32-bit values in m2 from the two 32-bit values in m1.
__m64 _m_psubsb(__m64 m1, __m64 m2)
Subtract the eight signed 8-bit values in m2 from the eight signed 8-bit values in m1 using saturating arithmetic.
__m64 _m_psubsw(__m64 m1, __m64 m2)
Subtract the four signed 16-bit values in m2 from the four signed 16-bit values in m1 using saturating arithmetic.
__m64 _m_psubusb(__m64 m1, __m64 m2)
Subtract the eight unsigned 8-bit values in m2 from the eight unsigned 8-bit values in m1 using saturating arithmetic.
__m64 _m_psubusw(__m64 m1, __m64 m2)
Subtract the four unsigned 16-bit values in m2 from the four unsigned 16-bit values in m1 using saturating arithmetic.
__m64 _m_pmaddwd(__m64 m1, __m64 m2)
Multiply four 16-bit values in m1 by four 16-bit values in m2 producing four 32-bit intermediate results, which are then summed by pairs to produce two 32-bit results.
__m64 _m_pmulhw(__m64 m1, __m64 m2)
Multiply four signed 16-bit values in m1 by four signed 16-bit values in m2 and produce the high 16 bits of the four results.
__m64 _m_pmullw(__m64 m1, __m64 m2)
Multiply four 16-bit values in m1 by four 16-bit values in m2 and produce the low 16 bits of the four results.