AMD amd64 architecture User Manual

Page of 336
110
128-Bit Media and Scientific Programming
AMD64 Technology
24592—Rev. 3.15—November 2009
4.2.5 Block Operations
Move instructions—along with unpack instructions—are among the most frequently used instructions
in 128-bit media procedures. Figure 4-6 on page 111 shows the combined set of move operations
supported by the integer and floating-point move instructions. These instructions provide a fast way to
copy large amounts of data between registers or between registers and memory. They support block
copies and sequential processing of contiguous data.
When moving between XMM registers, or between an XMM register and memory, each integer move
instruction can copy up to 16 bytes of data. When moving between an XMM register and an MMX or
GPR register, an integer move instruction can move 8 bytes of data. The floating-point
move instructions can copy vectors of four single-precision or two double-precision floating-point
operands in parallel.
Streaming-store versions of the move instructions permit bypassing the cache when storing data that is
accessed only once. This maximizes memory-bus utilization and minimizes cache pollution. There is
also a streaming-store integer move-mask instruction that stores bytes from one vector, as selected by
mask values in a second vector. Figure 4-7 on page 112 shows the MASKMOVDQU operation. It can
be used, for example, to handle end cases in block copies and block fills based on streaming stores.