Opcode Type Mnemonic Description Arithmetic PADD[B,W,D]..........Packed add with wraparound on [byte, word, doubleword] PADDS[B,W]...........Packed add signed with saturation on [byte, word] PADDUS[B,W] .........Packed add unsigned with saturation on [byte,word] PSUB[B,W,D] .........Packed subtract with wraparound on [byte, word, doubleword] PSUBS[B,W] ..........Packed subtract signed with saturation on [byte,word] PSUBUS [B,W] ........Packed subtract unsigned with saturation on [byte,word] PMULHW...............Packed multiply high on words PMULLW...............Packed multiply low on words PMADDWD..............Packed multiply on words and add resulting pairs Comparison PCMPEQ[B,W,D]........Packed compare for equality [byte, word, doubleword] PCMPGT[B,W,D]........Packed compare greater than [byte, word, doubleword] Conversion PACKUSWB.............Pack words into byte (unsigned saturation) PACKSS[WB,DW]........Pack [words into bytes, doublewords into words] signed with saturation PUNPCKH[BW,WD,DQ]....Unpack high-order [bytes, words, doublewords] from MMX register PUNCKL[BW,WD,DQ].....Unpack low-order [bytes, words, doublewords] from MMX register Logical PAND.................Packed bitwise AND PANDN................Packed bitwise AND NOT POR..................Packed bitwise OR PXOR.................Packed bitwise XOR Shift PSLL[W,D,Q]..........Packed shift left logical [word, doubleword, quadword] by MMX register or immediate value PSRL[W,D,Q]..........Packed shift right logical [word, doubleword, quadword] by MMX register or immediate value PSRA[W,D]............Packed shift left arithmetic [word, doubleword] by MMX register or immediate value Data transfer MOV[D,Q,]............Move [doubleword, quadword] to or from MMX register FP/MMX State EMMS.................Empty MMX state