CPUID
MMX
CPUID.01H:EDX[23]
Instructions
47 mnemonics
Processors
Every x86-64 processor in XED’s model and Zen 3 to Zen 6
Linux flag
mmx

MMX, introduced with the Pentium MMX in 1997, was the first SIMD extension of x86: eight 64-bit registers, MM0 to MM7, with integer instructions on packed bytes, words and doublewords, with or without saturation. The MMX registers are the significands of the x87 data registers, so the two cannot be used at once: an MMX instruction marks the x87 stack as in use, and code has to run EMMS before any x87 instruction follows.

SSE2 brought the same operations to the 128-bit XMM registers, where the pages of these mnemonics list them next to the MMX forms, and 64-bit compilers do not emit MMX code for ordinary C. The MMX forms remain in old libraries and in 32-bit code. SSE and SSE2 added a few more instructions for MMX registers, such as PSHUFW and PADDQ; they need the CPUID bit of the extension that added them and are listed there.

Instructions

Mnemonics with at least one form in MMX. Each page lists all forms of the mnemonic, including those of other extensions.
MnemonicSummaryForms
EMMSMarks every x87 register empty at the end of MMX code, so that x87 instructions can use the register stack again.1
MOVDMoves 32 bits between an MMX or XMM register and a general-purpose register or memory, zeroing the rest of a vector register.4
MOVQMoves 64 bits between MMX or XMM registers, general-purpose registers and memory, zeroing the rest of an XMM destination.8
PACKSSDWNarrows signed doublewords of two MMX or XMM operands to words with signed saturation.2
PACKSSWBNarrows signed words of two MMX or XMM operands to bytes with signed saturation.2
PACKUSWBNarrows signed words of two MMX or XMM operands to bytes with unsigned saturation.2
PADDBAdds packed bytes of MMX or XMM registers, wrapping around on overflow.2
PADDDAdds packed doublewords of MMX or XMM registers, wrapping around on overflow.2
PADDSBAdds packed signed bytes of MMX or XMM registers with signed saturation.2
PADDSWAdds packed signed words of MMX or XMM registers with signed saturation.2
PADDUSBAdds packed unsigned bytes of MMX or XMM registers with unsigned saturation.2
PADDUSWAdds packed unsigned words of MMX or XMM registers with unsigned saturation.2
PADDWAdds packed words of MMX or XMM registers, wrapping around on overflow.2
PANDComputes the bitwise AND of two MMX or XMM operands.2
PANDNComputes the bitwise AND of the inverted destination with the source, in MMX or XMM registers.2
PCMPEQBCompares packed bytes of MMX or XMM registers for equality, into all-ones or all-zeros bytes.2
PCMPEQDCompares packed doublewords of MMX or XMM registers for equality, into all-ones or all-zeros elements.2
PCMPEQWCompares packed words of MMX or XMM registers for equality, into all-ones or all-zeros words.2
PCMPGTBTests packed signed bytes of MMX or XMM registers for greater than, into all-ones or all-zeros bytes.2
PCMPGTDTests packed signed doublewords of MMX or XMM registers for greater than, into all-ones or all-zeros elements.2
PCMPGTWTests packed signed words of MMX or XMM registers for greater than, into all-ones or all-zeros words.2
PMADDWDMultiplies packed signed words of MMX or XMM registers and adds adjacent products into doublewords.2
PMULHWMultiplies packed signed words of MMX or XMM registers and keeps the high 16 bits of each product.2
PMULLWMultiplies packed words of MMX or XMM registers and keeps the low 16 bits of each product.2
PORComputes the bitwise OR of two MMX or XMM operands.2
PSLLDShifts packed doublewords of an MMX or XMM register left by a count from a register, memory or an immediate.3
PSLLQShifts packed quadwords of an MMX or XMM register left by a count from a register, memory or an immediate.3
PSLLWShifts packed words of an MMX or XMM register left by a count from a register, memory or an immediate.3
PSRADShifts packed doublewords of an MMX or XMM register right arithmetically by a count from a register, memory or an immediate.3
PSRAWShifts packed words of an MMX or XMM register right arithmetically by a count from a register, memory or an immediate.3
PSRLDShifts packed doublewords of an MMX or XMM register right logically by a count from a register, memory or an immediate.3
PSRLQShifts packed quadwords of an MMX or XMM register right logically by a count from a register, memory or an immediate.3
PSRLWShifts packed words of an MMX or XMM register right logically by a count from a register, memory or an immediate.3
PSUBBSubtracts packed bytes of MMX or XMM registers, wrapping around on overflow.2
PSUBDSubtracts packed doublewords of MMX or XMM registers, wrapping around on overflow.2
PSUBSBSubtracts packed signed bytes of MMX or XMM registers with signed saturation.2
PSUBSWSubtracts packed signed words of MMX or XMM registers with signed saturation.2
PSUBUSBSubtracts packed unsigned bytes of MMX or XMM registers with unsigned saturation.2
PSUBUSWSubtracts packed unsigned words of MMX or XMM registers with unsigned saturation.2
PSUBWSubtracts packed words of MMX or XMM registers, wrapping around on overflow.2
PUNPCKHBWInterleaves the high bytes of two MMX or XMM operands.2
PUNPCKHDQInterleaves the high doublewords of two MMX or XMM operands.2
PUNPCKHWDInterleaves the high words of two MMX or XMM operands.2
PUNPCKLBWInterleaves the low bytes of two MMX or XMM operands.2
PUNPCKLDQInterleaves the low doublewords of two MMX or XMM operands.2
PUNPCKLWDInterleaves the low words of two MMX or XMM operands.2
PXORComputes the bitwise XOR of two MMX or XMM operands; with the same register twice it zeroes it.2

CPUID and processors

XED splits MMX into 1 ISA set. Software can use a form when the processor reports every CPUID bit of one alternative of the form's ISA set.

XED ISA sets of MMX. Alternatives are separated by “or”; processors follow XED’s chip model, whose AMD processors end with Zen 2, and the CPU data of this site for Zen 3 to Zen 6.
ISA setCPUIDProcessors
PENTIUMMMX

MMX
CPUID.01H:EDX[23] MMX

Every x86-64 processor in XED’s model and Zen 3 to Zen 6

Sources

  1. Intel XED v2026.08.23 (commit 0bcb6237345c): forms, encodings, ISA sets, CPUID bits and chip model.
  2. The CPU data of x86-64.net: Zen 3 to Zen 6, from GCC’s -march feature sets and AMD’s Processor Programming References, which the page of each processor cites.
  3. Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 2 (325383-093, September 2026)
  4. Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 1 (253665-093, September 2026)

The tables are derived from Intel XED, Copyright Intel Corporation, licensed under the Apache License 2.0; x86-64.net converted and reformatted them. The text is our own.