Vol. 2A 3-673
INSTRUCTION SET REFERENCE, A-M
MOVSD—Move Scalar Double-Precision Floating-Point Value
MOVSD—Move Scalar Double-Precision Floating-Point Value
Description
Moves a scalar double-precision floating-point value from the source operand
(second operand) to the destination operand (first operand). The source and destina-
tion operands can be XMM registers or 64-bit memory locations. This instruction can
be used to move a double-precision floating-point value to and from the low quad-
word of an XMM register and a 64-bit memory location, or to move a double-precision
floating-point value between the low quadwords of two XMM registers. The instruc-
tion cannot be used to transfer data between memory locations.
When the source and destination operands are XMM registers, the high quadword of
the destination operand remains unchanged. When the source operand is a memory
location and destination operand is an XMM registers, the high quadword of the desti-
nation operand is cleared to all 0s.
In 64-bit mode, use of the REX.R prefix permits this instruction to access additional
registers (XMM8-XMM15).
Operation
MOVSD instruction when source and destination operands are XMM registers:
DEST[63:0] ← SRC[63:0];
(* DEST[127:64] unchanged *)
MOVSD instruction when source operand is XMM register and destination operand is
memory location:
DEST ← SRC[63:0];
MOVSD instruction when source operand is memory location and destination operand is
XMM register:
DEST[63:0] ← SRC;
DEST[127:64] ← 0000000000000000H;
Intel C/C++ Compiler Intrinsic Equivalent
MOVSD __m128d _mm_load_sd (double *p)
Opcode Instruction 64-Bit
Mode
Compat/
Leg Mode
Description
F2 0F 10 /r MOVSD xmm1,
xmm2/m64
Valid Valid Move scalar double-precision
floating-point value from
xmm2/m64 to xmm1 register.
F2 0F 11 /r MOVSD xmm2/m64,
xmm1
Valid Valid Move scalar double-precision
floating-point value from xmm1
register to xmm2/m64.