<<<    Index    >>>
C-6
COMPILER INTRINSICS AND FUNCTIONAL EQUIVALENTS
PANDN
__m64 _m_pandn(__m64 m1, __m64 m2)
__m64 _mm_andnot_si64(__m64 m1, __m64 m2)
Perform a logical NOT on the 64-bit value 
in m1 and use the result in a bitwise AND 
with the 64-bit value in m2.
PAVGB
__m64 _mm_pavgb(__m64 a, __m64 b)
__m64 _mm_avg_pu8(__m64 a, __m64 b)
Perform the packed average on the eight 8-
bit values of the two operands.
PAVGW
__m64 _mm_pavgw(__m64 a, __m64 b)
__m64 _mm_avg_pu16(__m64 a, __m64 b)
Perform the packed average on the four 
16-bit values of the two operands.
PCMPEQB__m64 _m_pcmpeqb (__m64 m1, __m64 m2)
__m64 _mm_cmpeq_pi8(__m64 m1, __m64 m2)
If the respective 8-bit values in m1 are 
equal to the respective 8-bit values in m2 
set the respective 8-bit resulting values to 
all ones, otherwise set them to all zeroes.
PCMPEQW__m64 _m_pcmpeqw (__m64 m1, __m64 m2)
__m64 _mm_cmpeq_pi16 (__m64 m1, __m64 m2)
If the respective 16-bit values in m1 are 
equal to the respective 16-bit values in m2 
set the respective 16-bit resulting values to 
all ones, otherwise set them to all zeroes.
PCMPEQD__m64 _m_pcmpeqd (__m64 m1, __m64 m2)
__m64 _mm_cmpeq_pi32(__m64 m1, __m64 m2)
If the respective 32-bit values in m1 are 
equal to the respective 32-bit values in m2 
set the respective 32-bit resulting values to 
all ones, otherwise set them to all zeroes.
PCMPGTB__m64 _m_pcmpgtb (__m64 m1, __m64 m2)
__m64 _mm_cmpgt_pi8 (__m64 m1, __m64 m2)
If the respective 8-bit values in m1 are 
greater than the respective 8-bit values in 
m2 set the respective 8-bit resulting values 
to all ones, otherwise set them to all 
zeroes.
PCMPGTW__m64 _m_pcmpgtw (__m64 m1, __m64 m2)
__m64 _m_cmpgt_pi16 (__m64 m1, __m64 m2)
If the respective 16-bit values in m1 are 
greater than the respective 16-bit values in 
m2 set the respective 16-bit resulting 
values to all ones, otherwise set them to all 
zeroes.
PCMPGTD__m64 _m_pcmpgtd (__m64 m1, __m64 m2)
__m64 _mm_cmpgt_pi32(__m64 m1, __m64 m2)
If the respective 32-bit values in m1 are 
greater than the respective 32-bit values in 
m2 set the respective 32-bit resulting 
values to all ones, otherwise set them all to 
zeroes.
PEXTRWint _m_pextrw(__m64 a, int  n)
int _mm_extract_pi16(__m64 a, int  n)
Extracts one of the four words of a. The 
selector n must be an immediate.
PINSRW__m64 _m_pinsrw(__m64 a, int  d, int  n)
__m64 _mm_insert_pi16(__m64 a, int  d, int  n)
Inserts word d into one of four words of a. 
The selector n must be an immediate.
PMADDWD__m64 _m_pmaddwd(__m64 m1, __m64 m2)
__m64 _mm_madd_pi16(__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.
PMAXSW__m64 _m_pmaxsw(__m64 a, __m64 b)
__m64 _mm_max_pi16(__m64 a, __m64 b)
Computes the element-wise maximum of 
the words in a and b.
PMAXUB__m64 _m_pmaxub(__m64 a, __m64 b)
__m64 _mm_max_pu8(__m64 a, __m64 b)
Computes the element-wise maximum of 
the unsigned bytes in a and b.
PMINSW__m64 _m_pminsw(__m64 a, __m64 b)
__m64 _mm_min_pi16(__m64 a, __m64 b)
Computes the element-wise minimum of 
the words in a and b.
PMINUB__m64 _m_pminub(__m64 a, __m64 b)
__m64 _m_min_pu8(__m64 a, __m64 b)
Computes the element-wise minimum of 
the unsigned bytes in a and b.
PMOVMSKBint _m_pmovmskb(__m64 a)
int _mm_movemask_pi8(__m64 a)
Creates an 8-bit mask from the most 
significant bits of the bytes in a.
Table C-1.  Simple Intrinsics
Mnemonic
Intrinsic
Description
<<<    Index    >>>