Intel 253666-024US Computer Hardware User Manual


 
3-610 Vol. 2A MOVAPD—Move Aligned Packed Double-Precision Floating-Point Values
INSTRUCTION SET REFERENCE, A-M
MOVAPD—Move Aligned Packed Double-Precision Floating-Point
Values
Description
Moves a double quadword containing two packed double-precision floating-point
values from the source operand (second operand) to the destination operand (first
operand). This instruction can be used to load an XMM register from a 128-bit
memory location, to store the contents of an XMM register into a 128-bit memory
location, or to move data between two XMM registers. When the source or destina-
tion operand is a memory operand, the operand must be aligned on a 16-byte
boundary or a general-protection exception (#GP) will be generated.
To move double-precision floating-point values to and from unaligned memory loca-
tions, use the MOVUPD instruction.
In 64-bit mode, use of the REX.R prefix permits this instruction to access additional
registers (XMM8-XMM15).
Operation
DEST SRC;
(* #GP if SRC or DEST unaligned memory operand *)
Intel C/C++ Compiler Intrinsic Equivalent
__m128 _mm_load_pd(double * p)
void _mm_store_pd(double *p, __m128 a)
SIMD Floating-Point Exceptions
None.
Opcode Instruction 64-Bit
Mode
Compat/
Leg Mode
Description
66 0F 28 /r MOVAPD xmm1,
xmm2/m128
Valid Valid Move packed double-precision
floating-point values from
xmm2/m128 to xmm1.
66 0F 29 /r MOVAPD
xmm2/m128, xmm1
Valid Valid Move packed double-precision
floating-point values from xmm1 to
xmm2/m128.