# MOVD
# Move Doubleword
Opcode | Mnemonic | Description |
---|---|---|
0F 6E /r | MOVD mm, r/m32 | Move doubleword from r/m32 to mm. |
0F 7E /r | MOVD r/m32, mm | Move doubleword from mm to r/m32. |
66 0F 6E /r | MOVD xmm, r/m32 | Move doubleword from r/m32 to xmm. |
66 0F 7E /r | MOVD r/m32, xmm | Move doubleword from xmm register to r/m32. |
# Description
Copies a doubleword from the source operand (second operand) to the destination operand (first operand). The source and destination operands can be general-purpose registers, MMX technology registers, XMM registers, or 32-bit memory locations. This instruction can be used to move a doubleword to and from the low doubleword of an MMX technology register and a general-purpose register or a 32-bit memory location, or to and from the low doubleword of an XMM register and a general-purpose register or a 32-bit memory location. The instruction cannot be used to transfer data between MMX technology registers, between XMM registers, between general-purpose registers, or between memory locations.
When the destination operand is an MMX technology register, the source operand is written to the low doubleword of the register, and the register is zero-extended to 64 bits. When the destination operand is an XMM register, the source operand is written to the low doubleword of the register, and the register is zero-extended to 128 bits.
# Operation
//MOVD instruction when destination operand is MMX technology register:
if(IsMMXRegister(Destination)) {
Destination[0..31] = Source;
Destination[32..63] = 0;
}
//MOVD instruction when destination operand is XMM register:
else if(IsXMMRegister(Destination)) {
Destination[0..31] = Source;
Destination[32..127] = 0;
}
//MOVD instruction when source operand is MMX technology or XMM register:
else Destination = Source[0..31];
2
3
4
5
6
7
8
9
10
11
12
13
# Flags affected
None.
# SIMD Floating-Point Exceptions
None.
# Protected Mode Exceptions
# Real-Address Mode Exceptions
# Virtual-8086 Mode Exceptions
Same exceptions as in Real Address Mode
#PF(fault-code) | If a page fault occurs. |
#PF(fault-code) | If a page fault occurs. |
Instruction | Latency | Throughput | Execution Unit |
---|---|---|---|
CPUID | 0F3n/0F2n/069n | 0F3n/0F2n/069n | 0F2n |
MOVD mm, r32 | 2/2/- | 1/1/- | MMX_ALU |
MOVD r32, mm | 5/5/- | 1/1/- | FP_MISC |
MOVD xmm, r32 | 6/6/1 | 2/2/2 | MMX_MISC MMX_SHFT |
MOVD r32, xmm | 10/10/1+1 | 1/1/2 | FP_MOVE FP_MISC |