MOVAPD
Encyclopedia
In the x86 assembly programming language
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
  • MOVDDUP
    MOVDDUP
    In 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/MOVHPD
    MOVHPD
    In 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:...

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK