Opcode |
Instruction |
Description |
|
66 0F 6F /r |
MOVDQA xmm1, xmm2/m128 |
Move aligned double quadword from xmm2/m128 to xmm1. |
|
66 0F 7F /r |
MOVDQA xmm2/m128, xmm1 |
Move aligned double quadword from xmm1 to xmm2/m128. |
Moves a double quadword from the source operand (second operand) to the destination operand (first operand). This instruction can be used to move a double quadword to and from an XMM register and a 128-bit memory location, or between two XMM registers. When the source or destination 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 a double quadword to or from unaligned memory locations, use the MOVDQU instruction.
While executing in 16-bit addressing mode, a linear address for a 128-bit data access that overlaps the end of a 16-bit segment is not allowed and is defined as reserved behavior. A specific processor implementation may or may not generate a #GP exception in this situation, and the address that spans the end of the segment may or may not wrap around to the beginning of the segment.
DEST
SRC;
MOVDQA __m128i _mm_load_si128 ( __m128i *p) MOVDQA void _mm_store_si128 ( __m128i *p, __m128i a)
None.
#GP(0) - If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit. If memory operand is not aligned on a 16-byte boundary, regardless of segment.
#SS(0) - If a memory operand effective address is outside the SS segment limit.
#NM - If TS in CR0 is set.
#UD - If EM in CR0 is set. If OSFXSR in CR4 is 0. If CPUID feature flag SSE-2 is 0.
#PF(fault-code) - If a page fault occurs.
#GP(0) - If memory operand is not aligned on a 16-byte boundary, regardless of segment. If any part of the operand lies outside of the effective address space from 0 to FFFFH.
#NM - If TS in CR0 is set.
#UD - If EM in CR0 is set. If OSFXSR in CR4 is 0. If CPUID feature flag SSE2 is 0.
Same exceptions as in Real Address Mode.
#PF(fault-code) - For a page fault.