x86 Instruction Set Reference
MOVDDUP
Move One Double-FP and Duplicate
| Opcode | Mnemonic | Description |
|---|---|---|
F2 0F 12 /r |
MOVDDUP xmm1, xmm2/m64 |
Move 64 bits representing the lower DP data element from xmm2/m64 to xmm1 register and duplicate. |
| Description |
|---|
|
The linear address corresponds to the address of the least-significant byte of the referenced memory data. When a memory address is indicated, the 8 bytes of data at memory location m64 are loaded. When the register-register form of this operation is used, the lower half of the 128- bit source register is duplicated and copied into the 128-bit destination register. |
| Operation |
|---|
if(Source == m64) { //Load instruction xmm1[0..63] = m64; xmm1[64..127] = m64; } else { //Move instruction xmm1[0..63] = xmm2[0..63]; xmm1[64..127] = xmm2[0..63]; } |
| Exceptions |
|---|
| None. |
| Numeric Exceptions |
|---|
| None. |
| Protected Mode Exceptions | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| Real-Address Mode Exceptions | ||||||
|---|---|---|---|---|---|---|
|
| Virtual-8086 Mode Exceptions | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
| Instruction | Latency | Throughput | Execution Unit |
|---|---|---|---|
CPUID | 0F3n | 0F3n | 0F3n |
MOVDDUP xmm1, xmm2 | 4 | 2 | FP_MOVE |