Intel 64 and IA-32 Architectures Software Developers Manual Volume 1, Basic Architecture

5-14 Vol. 1
INSTRUCTION SET SUMMARY
Initially, these instructions operated only on the x87 FPU (and MMX) registers to
perform a fast save and restore, respectively, of the x87 FPU and MMX state. With the
introduction of SSE extensions in the Pentium III processor family, these instructions
were expanded to also save and restore the state of the XMM and MXCSR registers.
Intel 64 architecture also supports these instructions.
See Section 10.5, “FXSAVE and FXRSTOR Instructions,” for more detail.
5.4 MMX™ INSTRUCTIONS
Four extensions have been introduced into the IA-32 architecture to permit IA-32
processors to perform single-instruction multiple-data (SIMD) operations. These
extensions include the MMX technology, SSE extensions, SSE2 extensions, and SSE3
extensions. For a discussion that puts SIMD instructions in their historical context,
see Section 2.2.4, “SIMD Instructions.
MMX instructions operate on packed byte, word, doubleword, or quadword integer
operands contained in memory, in MMX registers, and/or in general-purpose regis-
ters. For more detail on these instructions, see Chapter 9, “Programming with Intel®
MMX™ Technology.
MMX instructions can only be executed on Intel 64 and IA-32 processors that support
the MMX technology. Support for these instructions can be detected with the CPUID
instruction. See the description of the CPUID instruction in Chapter 3, “Instruction
Set Reference, A-M,” of the Intel® 64 and IA-32 Architectures Software Developer’s
Manual, Volume 2A.
MMX instructions are divided into the following subgroups: data transfer, conversion,
packed arithmetic, comparison, logical, shift and rotate, and state management
instructions. The sections that follow introduce each subgroup.
5.4.1 MMX Data Transfer Instructions
The data transfer instructions move doubleword and quadword operands between
MMX registers and between MMX registers and memory.
MOVD Move doubleword
MOVQ Move quadword
5.4.2 MMX Conversion Instructions
The conversion instructions pack and unpack bytes, words, and doublewords
PACKSSWB Pack words into bytes with signed saturation
PACKSSDW Pack doublewords into words with signed saturation
PACKUSWB Pack words into bytes with unsigned saturation.
PUNPCKHBW Unpack high-order bytes