NASM 2.05 based x86 Instruction Reference[ch231]
A.5.207 PCMPxx: Compare Packed Integers. PCMPEQB mm1,mm2/m64 ; 0F 74 /r [PENT,MMX] PCMPEQW mm1,mm2/m64 ; 0F 75 /r [PENT,MMX] PCMPEQD mm1,mm2/m64 ; 0F 76 /r [PENT,MMX] PCMPGTB mm1,mm2/m64 ; 0F 64 /r [PENT,MMX] PCMPGTW mm1,mm2/m64 ; 0F 65 /r [PENT,MMX] PCMPGTD mm1,mm2/m64 ; 0F 66 /r [PENT,MMX] PCMPEQB xmm1,xmm2/m128 ; 66 0F 74 /r [WILLAMETTE,SSE2] PCMPEQW xmm1,xmm2/m128 ; 66 0F 75 /r [WILLAMETTE,SSE2] PCMPEQD xmm1,xmm2/m128 ; 66 0F 76 /r [WILLAMETTE,SSE2] PCMPGTB xmm1,xmm2/m128 ; 66 0F 64 /r [WILLAMETTE,SSE2] PCMPGTW xmm1,xmm2/m128 ; 66 0F 65 /r [WILLAMETTE,SSE2] PCMPGTD xmm1,xmm2/m128 ; 66 0F 66 /r [WILLAMETTE,SSE2] The PCMPxx instructions all treat their operands as vectors of bytes, words, or doublewords; corresponding elements of the source and destination are compared, and the corresponding element of the destination (first) operand is set to all zeros or all ones depending on the result of the comparison. - PCMPxxB treats the operands as vectors of bytes; - PCMPxxW treats the operands as vectors of words; - PCMPxxD treats the operands as vectors of doublewords; - PCMPEQx sets the corresponding element of the destination operand to all ones if the two elements compared are equal; - PCMPGTx sets the destination element to all ones if the element of the first (destination) operand is greater (treated as a signed integer) than that of the second (source) operand.