MOVDDUP
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...

, MOVDDUP is the name for a specific action performable by modern x86 processors with 3rd-generation Streaming SIMD Extensions (SSE3)
SSE3
SSE3, Streaming SIMD Extensions 3, also known by its Intel code name Prescott New Instructions , is the third iteration of the SSE instruction set for the IA-32 architecture. Intel introduced SSE3 in early 2004 with the Prescott revision of their Pentium 4 CPU...

. This action involves copying a number to temporary space in the processor for use in other computations.

Specifically, MOVDDUP causes one, double-precision
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...

, floating-point
Floating point
In computing, floating point describes a method of representing real numbers in a way that can support a wide range of values. Numbers are, in general, represented approximately to a fixed number of significant digits and scaled using an exponent. The base for the scaling is normally 2, 10 or 16...

 source to be copied to both the lower half and upper half of 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.

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)
F2 0F 12 /r MOVDDUP xmm1, xmm2/m64 MOVDDUP xmm2/m64, xmm1 __m128d _mm_movedup_pd(__m128d a)
__m128d _mm_loaddup_pd(const double *dp)
v2df __builtin_ia32_movddup(v2df)


The source operand can be either an XMM register (xmm2) or a memory address (m64). When the source operand is an XMM register, the lower half of the register is used in the operation. When the source operand is a memory address, it is assumed to be the address of an 8-byte region, the value at which is used in the operation.

The destination operand must be an XMM register (xmm1).

See also

  • MOVAPS/MOVAPD
    MOVAPD
    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 . This action involves copying a pair of numbers to temporary space in the processor for use in other computations...

  • MOVDDUP
  • 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