MMX Technology

MMX™ Data Transfer

Instruction Description
MOVD Move DWORD
MOVQ Move QWORD

MMX™ Conversion Instructions

Instruction Description
PACKSSWB Pack With Signed Saturation WORDs into BYTEs
PACKSSDW Pack With Signed Saturation DWORDs into WORDs
PACKUSWB Pack With Unsigned Saturation WORDs into BYTEs
PUNPCKHBW Unpack High BYTEs into WORDs
PUNPCKHWD Unpack High WORDs into DWORDs
PUNPCKHDQ Unpack High DWORDs into QWORDs
PUNPCKLBW Unpack Low BYTEs into WORDs
PUNPCKLWD Unpack Low WORDs into DWORDs
PUNPCKLDQ Unpack Low DWORDs into QWORDs

MMX™ Comparison Instructions

Instruction Description
PCMPEQB Compare Equal To for BYTEs
PCMPEQW Compare Equal To for WORDs
PCMPEQD Compare Equal To for DWORDs
PCMPGTB Compare Greater Than for BYTEs
PCMPGTW Compare Greater Than for WORDs
PCMPGTD Compare Greater Than for DWORDs

MMX™ Logic Instructions

Instruction Description
PAND Bitwise logical AND
PANDN Bitwise logical AND NOT
POR Bitwise logical OR
PXOR Bitwise logical XOR

MMX™ Packed Arithmetic Instructions

Instruction Description
PADDB Add BYTEs
PADDW Add WORDs
PADDD Add DWORDs
PADDSB Add With Signed Saturation BYTEs
PADDSW Add With Signed Saturation WORDs
PADDUSB Add With Unsigned Saturation BYTEs
PADDUSW Add With Unsigned Saturation WORDs
PSUBB Subtract BYTEs
PSUBW Subtract WORDs
PSUBD Subtract DWORDs
PSUBSB Subtract With Signed Saturation BYTEs
PSUBSW Subtract With Signed Saturation WORDs
PSUBUSB Subtract With Unsigned Saturation BYTEs
PSUBUSW Subtract With Unsigned Saturation WORDs
PMULLW Multiply Low BYTEs
PMULHW Multiply High BYTEs
PMADDWD Multiply and Add WORDs into DWORDs

MMX™ Shift and Rotate Instructions

Instruction Description
PSLLW Shift Left Logical WORDs
PSLLD Shift Left Logical DWORDs
PSLLQ Shift Left Logical QWORDs
PSRLW Shift Right Logical WORDs
PSRLD Shift Right Logical DWORDs
PSRLQ Shift Right Logical QWORDs
PSRAD Shift Right Arithmtetic DWORDs
PSRAQ Shift Right Arithmtetic QWORDs

Streaming SIMD Extensions 1/2/3

SSE Data Transfer Instructions

Instruction Description
MOVSS Move Scalar Single
MOVAPS Move Aligned Packed Single
MOVUPS Move Unaligned Packed Single
MOVHPS Move High Packed Single
MOVLPS Move Low Packed Single
MOVHLPS Move High to Low Packed Single
MOVLHPS Move Low to High Packed Single
MOVMSKPS Move Mask Packed Single

SSE2 Data Transfer Instructions

Instruction Description
MOVSD Move Scalar Double
MOVAPD Move Aligned Packed Double
MOVUPD Move Unaligned Packed Double
MOVHPD Move High Packed Double
MOVLPD Move Low Packed Double
MOVMSKPD Move Mask Packed Double

SSE CONVERSION INSTRUCTIONS

Instruction Description
CVTPI2PS Convert Packed Integer to Packed Single
CVTPS2PI Convert Packed Single to Packed Integer
CVTSI2SS Convert Scalar Integer to Scalar Single
CVTSS2SI Convert Scalar Single to Scalar Integer
CVTTSS2SI Convert with truncate Scalar Single to Scalar Integer
CVTTPS2PI Convert with truncate Packed Single to Packed Integer

SSE2 CONVERSION INSTRUCTIONS

Instruction Description
CVTPD2PI Convert Packed Double to Packed Integer
CVTPI2PD Convert Packed Integer to Packed Double
CVTPD2PS Convert Packed Double to Packed Single
CVTPS2PD Convert Packed Single to Packed Double
CVTSD2SI Convert Scalar Double to Scalar Single
CVTSI2SD Convert Scalar Integer to Scalar Double
CVTSD2SS Convert Scalar Double to Scalar Single
CVTSS2SD Convert Scalar Single to Scalar Double
CVTPD2DQ Convert Packed Double to Packed DWORD
CVTPS2DQ Convert Packed Single to Packed DWORD
CVTDQ2PD Convert Packed DWORD to Packed Double
CVTDQ2PS Convert Packed DWORD to Packed Single
CVTTPS2DQ Convert with truncate Packed Single to Packed DWORD
CVTTPD2DQ Convert with truncate Packed Double to Packed DWORD
CVTTSD2SI Convert with truncate Scalar Double to Scalar Integer
CVTTPD2PI Convert with truncate Packed Double to Packed Integer

SSE COMPARISON INSTRUCTIONS

Instruction Description
CMPSS Compare Scalar Single
CMPEQSS Compare For Equal Scalar Single
CMPLTSS Compare For Less Than Scalar Single
CMPLESS Compare For Less Than or Equal To Scalar Single
CMPNEQSS Compare For Not Equal To Scalar Single
CMPNLTSS Compare For Not Less Than (Greater Than or Equal To) Scalar Single
CMPNLESS Compare For Not Less Than Or Equal To (Greater Than) Scalar Single
CMPUNORDSS Compare For Unordered Scalar Single
CMPORDSS Compare For Ordered Scalar Single
CMPPS Compare Packed Single
CMPEQPS Compare For Equal Packed Single
CMPLTPS Compare For Less Than Packed Single
CMPLEPS Compare For Less Than or Equal To Packed Single
CMPNEQPS Compare For Not Equal To Packed Single
CMPNLTPS Compare For Not Less Than (Greater Than or Equal To) Packed Single
CMPNLEPS Compare For Not Less Than Or Equal To (Greater Than) Packed Single
CMPUNORDPS Compare For Unordered Packed Single
CMPORDPS Compare For Ordered Packed Single
COMISS Compare Ordered Scalar Single and set EFLAGS
UCOMISS Compare Unordered Scalar Single and set EFLAGS

SSE2 COMPARISON INSTRUCTIONS

Instruction Description
CMPSD Compare Scalar Double
CMPPD Compare Packed Double
COMISD Compare Ordered Scalar Double and set EFLAGS
UCOMISD Compare Unordered Scalar Double and set EFLAGS

SSE LOGICAL INSTRUCTIONS

Instruction Description
ANDPS Bitwise AND; Packed Single
ANDNPS Bitwise AND NOT; Packed Single
ORPS Bitwise OR; Packed Single
XORPS Bitwise XOR; Packed Single

SSE2 LOGICAL INSTRUCTIONS

Instruction Description
ANDPD Bitwise AND; Packed Double
ANDNPD Bitwise AND NOT; Packed Double
ORPD Bitwise OR; Packed Double
XORPD Bitwise XOR; Packed Double

SSE CACHEABILITY CONTROL INSTRUCTIONS

Instruction Description
MASKMOVQ Mask move QWORD
MOVNTQ Move Non-Temporal QWORD
MOVNTPS Move Non-Temporal Packed Single.
PREFETCH Prefetch instructions
SFENCE Store Fence

SSE PACKED SINGLE ARITHMETIC INSTRUCTIONS

Instruction Description
ADDSS Add Scalar Single
ADDPS Add Packed Single
SUBSS Subtract Scalar Single
SUBPS Subtract Packed Single
MULSS Multiply Scalar Single
MULPS Multiply Packed Single
DIVSS Divide Scalar Single
DIVPS Divide Packed Single
SQRTSS Square root Scalar Single
SQRTPS Square root Packed Single
MAXSS Maximum Scalar Single
MAXPS Maximum Packed Single
MINSS Minimum Scalar Single
MINPS Minimum Packed Single

SSE2 PACKED DOUBLE ARITHMETIC INSTRUCTIONS

Instruction Description
ADDSD Add Scalar Double
ADDPD Add Packed Double
SUBSD Subtract Scalar Double
SUBPD Subtract Packed Double
MULSD Multiply Scalar Double
MULPD Multiply Packed Double
DIVSD Divide Scalar Double
DIVPD Divide Packed Double
SQRTSD Square root Scalar Double
SQRTPD Square root Packed Double
MAXSD Maximum Scalar Double
MAXPD Maximum Packed Double
MINSD Minimum Scalar Double
MINPD Minimum Packed Double

SSE DATA SHUFFLE INSTRUCTIONS

Instruction Description
SHUFPS Shuffle Packed Single
UNPCKHPS Unpack high Packed Single
UNPCKLPS Unpack low Packed Single

SSE2 DATA SHUFFLE INSTRUCTIONS

Instruction Description
SHUFPD Shuffle Packed Double
UNPCKHPD Unpack high Packed Double
UNPCKLPD Unpack low Packed Double

SSE SIMD-INTEGER INSTRUCTIONS

Instruction Description
PAVGB Average of Bytes
PAVGW Average of Words
PMINUB Minimum of unsigned Bytes
PMINSW Minimum of signed Words
PMAXUB Maximum of unsigned Bytes
PMAXSW Maximum of signed Words
PMOVMSKB Mask move Bytes
PMULHUW Multiply high unsigned words
PSADSBW Sum of Absolute Differences Bytes to Words
PSHUFW Shuffle words
PEXTRW Extract word
PINSRW Insert word

SSE2 SIMD-INTEGER INSTRUCTIONS

Instruction Description
MOVDQA Move DQWORD; Aligned
MOVDQU Move DQWORD; Unaligned
MOVDQ2Q Move Move QWORD from XMM to MMX Register
MOVQ2DQ Move Move QWORD from MMX to XMM Register
PADDQ Add QWORD
PMULUDQ Multiply Unsigned DWORDs into QWORD
PSHUFD Shuffle DWORDs
PSHUFHW Shuffle High WORDs
PSHUFLW Shuffle Low WORDs
PSLLDQ Shift left logical DQWORD
PSRLDQ Shift right logical DQWORDs
PSHUFHW Shuffle High WORDs
PUNPCKHQDQ Unpack High QWORDs into DQWORD
PUNPCKLQDQ Unpack Low QWORDs into DQWORD

SSE3 SIMD-INTEGER INSTRUCTIONS

Instruction Description
MOVDDUP Move Packed Double and Duplicate
MOVSHDUP Move Packed Single High and Duplicate
MOVSLDUP Move Packed Single Low and Duplicate
LDDQU Load DQWORD; Unaligned

SSE STATE MANAGEMENT INSTRUCTIONS

Instruction Description
LDMXCSR Load MXCSR Register
STMXCSR Store MXCSR Register
FXSAVE FPU/SIMD Flag Registers: Save
FXSAVE FPU/SIMD Flag Registers: Restore