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 (SSE3). This action involves copying a number to temporary space in the processor for use in other computations.
Specifically, MOVDDUP causes one, double-precision, floating-point source to be copied to both the lower half and upper half of an XMM register.
Usage
editOpcode | F2 0F 12 /r
|
---|---|
Assembly (Intel syntax) | MOVDDUP xmm1, xmm2/m64
|
Assembly (AT&T syntax) | MOVDDUP xmm2/m64, xmm1
|
icc intrinsic equivalent(s) | __m128d _mm_movedup_pd(__m128d a) __m128d _mm_load_pd1(const double * mem_addr)
|
gcc built-in(s) | 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).
Potential exceptions
editThis section is empty. You can help by adding to it. (July 2010) |
References
edit- gcc info documentation.
- Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2A: Instruction Set Reference, A-M, November, 2006.
- https://software.intel.com/sites/landingpage/IntrinsicsGuide/