User Guide
4 Overview of the AMD64 Architecture
AMD64 Technology 24592—Rev. 3.15—November 2009
1.1.3 Instruction Set
The AMD64 architecture supports the full legacy x86 instruction set, with additional instructions to
support long mode (see Table 1-1 on page 2 for a summary of operating modes). The application-
programming instructions are organized into three subsets, as follows:
• General-Purpose Instructions—These are the basic x86 integer instructions used in virtually all
programs. Most of these instructions load, store, or operate on data located in the general-purpose
registers (GPRs) or memory. Some of the instructions alter sequential program flow by branching
to other program locations.
• 128-Bit and 256-bit Media Instructions—These are the streaming SIMD extension (SSE, SSE2,
SSE3, SSSE3, SSE4, SSE4A, AVX) instructions that load, store, or operate on data located
primarily in the 128-bit XMM registers. They perform integer and floating-point operations on
vector (packed) and scalar data types. Because the vector instructions can independently and
simultaneously perform a single operation on multiple sets of data, they are called single-
instruction, multiple-data (SIMD) instructions. They are useful for high-performance media and
scientific applications that operate on blocks of data.
• 64-Bit Media Instructions—These are the multimedia extension (MMX™ technology) and AMD
3DNow!™ technology instructions. These instructions load, store, or operate on data located
primarily in the 64-bit MMX registers. Like their 128-bit counterparts, described above, they
perform integer and floating-point operations on vector (packed) and scalar data types. Thus, they
are also SIMD instructions and are useful in media applications that operate on blocks of data.
AMD no longer recommends the use of 3DNow! instructions, which have been superceded by
their more efficient 128-bit media counterparts. Relevant recommendations are provided in
Chapter 5, “64-Bit Media Programming” on page 193, and in the AMD64 Programmer’s Manual
Volume 4: 64-Bit Media and x87 Floating-Point Instructions.
• x87 Floating-Point Instructions—These are the floating-point instructions used in legacy x87
applications. They load, store, or operate on data located in the x87 registers.
Some of these application-programming instructions bridge two or more of the above subsets. For
example, there are instructions that move data between the general-purpose registers and the XMM or
MMX registers, and many of the integer vector (packed) instructions can operate on either XMM or
MMX registers, although not simultaneously. If instructions bridge two or more subsets, their
descriptions are repeated in all subsets to which they apply.
1.1.4 Media Instructions
Media applications—such as image processing, music synthesis, speech recognition, full-motion
video, and 3D graphics rendering—share certain characteristics:
• They process large amounts of data.
• They often perform the same sequence of operations repeatedly across the data.
• The data are often represented as small quantities, such as 8 bits for pixel values, 16 bits for audio
samples, and 32 bits for object coordinates in floating-point format.