User Guide
160 128-Bit Media and Scientific Programming
AMD64 Technology 24592—Rev. 3.15—November 2009
64-bit memory location. In the memory-to-register case, the low-order 64 bits of the destination XMM
register are not modified.
The MOVLPS and MOVLPD instructions copy a vector of two single-precision floating-point values
(MOVLPS) or one double-precision floating-point value (MOVLPD) from a 64-bit memory location
to the low-order 64 bits of an XMM register, or from the low-order 64 bits of an XMM register to a 64-
bit memory location. In the memory-to-register case, the high-order 64 bits of the destination XMM
register are not modified.
The MOVHLPS instruction copies a vector of two single-precision floating-point values from the
high-order 64 bits of an XMM register to the low-order 64 bits of another XMM register. The high-
order 64 bits of the destination XMM register are not modified. The MOVLHPS instruction performs
an analogous operation except in the opposite direct (low-order to high-order), and the low-order 64
bits of the destination XMM register are not modified.
The MOVSS instruction copies a scalar single-precision floating-point value from the low-order 32
bits of an XMM register or a 32-bit memory location to the low-order 32 bits of another XMM register,
or vice versa. If the source operand is an XMM register, the high-order 96 bits of the destination XMM
register are not modified. If the source operand is a 32-bit memory location, the high-order 96 bits of
the destination XMM register are cleared to all 0s.
The MOVSD instruction copies a scalar double-precision floating-point value from the low-order 64
bits of an XMM register or a 64-bit memory location to the low-order 64 bits of another XMM register,
or vice versa. If the source operand is an XMM register, the high-order 64 bits of the destination XMM
register are not modified. If the source operand is a memory location, the high-order 64 bits of the
destination XMM register are cleared to all 0s.
The above MOVSD instruction should not be confused with the same-mnemonic MOVSD (move
string doubleword) instruction in the general-purpose instruction set. Assemblers distinguish the two
instructions by their operand data types.
Move with Duplication. These instructions move two copies of the affected data segments from the
source XMM register or 128-bit memory operand to the target destination register.
The MOVDDUP moves one copy of the lower quadword of the source operand into each quadword
half of the destination operand.
The MOVSLDUP instruction moves two copies of the first doubleword of the source operand into the
first two doubleword segments of the destination operand and moves two copies of the third
doubleword of the source operand into the third and fourth doubleword segments of the destination
operand.
The MOVSHDUP instruction moves two copies of the second doubleword of the source operand into
the first two doubleword segments of the destination operand and moves two copies of the fourth
doubleword of the source operand into the upper two doubleword segments of the destination operand.