Intel 253666-024US Manuel D’Utilisation

Page de 760
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 /MOVSD xmm1
xmm2/m64
Valid
Valid
Move scalar double-precision 
floating-point value from 
xmm2/m64 to xmm1 register.
F2 0F 11 /MOVSD xmm2/m64
xmm1
Valid
Valid
Move scalar double-precision 
floating-point value from xmm1 
register to xmm2/m64.