MOVAPD
Encyclopedia
In the x86 assembly programming language
, MOVAPD is the name for a specific action performable by modern x86 processors with 2nd-generation Streaming SIMD Extensions (SSE2)
. This action involves copying a pair of numbers to temporary space in the processor for use in other computations. MOVAPD is one of the fastest ways to accomplish this effect.
Specifically, MOVAPD causes a 16-byte-aligned packed-doubles
source to be copied to an XMM
register or a 16-byte memory region.
The source operand can be either an XMM register (xmm2) or a memory address (m128).
The destination operand can be either an XMM register (xmm1) or a memory address (m128). Note, however, that the source and destination operands cannot both be memory addresses.
x86 instruction listings
X86 assembly language
x86 assembly language is a family of backward-compatible assembly languages, which provide some level of compatibility all the way back to the Intel 8008. x86 assembly languages are used to produce object code for the x86 class of processors, which includes Intel's Core series and AMD's Phenom and...
, MOVAPD is the name for a specific action performable by modern x86 processors with 2nd-generation Streaming SIMD Extensions (SSE2)
SSE2
SSE2, Streaming SIMD Extensions 2, is one of the Intel SIMD processor supplementary instruction sets first introduced by Intel with the initial version of the Pentium 4 in 2001. It extends the earlier SSE instruction set, and is intended to fully supplant MMX. Intel extended SSE2 to create SSE3...
. This action involves copying a pair of numbers to temporary space in the processor for use in other computations. MOVAPD is one of the fastest ways to accomplish this effect.
Specifically, MOVAPD causes a 16-byte-aligned packed-doubles
Double precision
In computing, double precision is a computer number format that occupies two adjacent storage locations in computer memory. A double-precision number, sometimes simply called a double, may be defined to be an integer, fixed point, or floating point .Modern computers with 32-bit storage locations...
source to be copied to an XMM
Streaming SIMD Extensions
In computing, Streaming SIMD Extensions is a SIMD instruction set extension to the x86 architecture, designed by Intel and introduced in 1999 in their Pentium III series processors as a reply to AMD's 3DNow! . SSE contains 70 new instructions, most of which work on single precision floating point...
register or a 16-byte memory region.
Usage
Opcode | Assembly (Intel syntax) | Assembly (AT&T syntax) | icc Intel C++ Compiler Intel C++ Compiler is a group of C and C++ compilers from Intel Corporation available for GNU/Linux, Mac OS X, and Microsoft Windows.... intrinsic equivalent(s) |
gcc GNU Compiler Collection The GNU Compiler Collection is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain... built-in(s) |
---|---|---|---|---|
66 0F 28 /r | MOVAPD xmm1, xmm2/m128 | MOVAPD xmm2/m128, xmm1 | __m128 _mm_load_pd(double* p) |
|
66 0F 29 /r | MOVAPD xmm1/m128, xmm2 | MOVAPD xmm2, xmm1/m128 | void _mm_store_pd(double* p, __m128 a) |
The source operand can be either an XMM register (xmm2) or a memory address (m128).
The destination operand can be either an XMM register (xmm1) or a memory address (m128). Note, however, that the source and destination operands cannot both be memory addresses.
Potential Exceptions
If a memory address operand is not 16-byte-aligned, a general protection exception (#GP) will be raised.See also
- MOVAPS/MOVAPD
- MOVDDUPMOVDDUPIn the x86 assembly programming language, MOVDDUP is the name for a specific action performable by modern x86 processors with 3rd-generation Streaming SIMD Extensions...
- MOVHLPS
- MOVHPS/MOVHPDMOVHPDIn the x86 assembly programming language, MOVHPD is the name for a specific action performable by modern x86 processors with 2nd-generation Streaming SIMD Extensions...
- MOVLHPS
- MOVLPS/MOVLPD
- MOVMSKPS/MOVMSKPD
- MOVNTPS
- MOVSHDUP
- MOVSLDUP
- MOVSS/MOVSD
- MOVUPS/MOVUPD
x86 instruction listings
X86 instruction listings
The x86 instruction set has been extended several times, introducing wider registers and datatypes and/or new functionality.-x86 integer instructions:...