3-632 Vol. 2A MOVHPD—Move High Packed Double-Precision Floating-Point Value
INSTRUCTION SET REFERENCE, A-M
MOVHPD—Move High Packed Double-Precision Floating-Point Value
Description
Moves a double-precision floating-point value from the source operand (second
operand) to the destination operand (first operand). The source and destination
operands can be an XMM register or a 64-bit memory location. This instruction allows
a double-precision floating-point value to be moved to and from the high quadword
of an XMM register and memory. It cannot be used for register to register or memory
to memory moves. When the destination operand is an XMM register, the low quad-
word of the register remains unchanged.
In 64-bit mode, use of the REX.R prefix permits this instruction to access additional
registers (XMM8-XMM15).
Operation
MOVHPD instruction for memory to XMM move:
DEST[127:64] ← SRC;
(* DEST[63:0] unchanged *)
MOVHPD instruction for XMM to memory move:
DEST ← SRC[127:64];
Intel C/C++ Compiler Intrinsic Equivalent
MOVHPD __m128d _mm_loadh_pd ( __m128d a, double *p)
MOVHPD void _mm_storeh_pd (double *p, __m128d a)
SIMD Floating-Point Exceptions
None.
Opcode Instruction 64-Bit
Mode
Compat/
Leg Mode
Description
66 0F 16 /r MOVHPD xmm,
m64
Valid Valid Move double-precision floating-point
value from m64 to high quadword of
xmm.
66 0F 17 /r MOVHPD m64,
xmm
Valid Valid Move double-precision floating-point
value from high quadword of xmm to
m64.