# 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];
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 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 |