What MMX Adds to Intel Instructions


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