Logic if destination = mm mm(63..0) <- ZeroExtend(r/m32) else r/m32 <- mm(31..0) endif
MOVD copies 32 bits from the source operand to the destination operand. The destination and source operands can be either MMX registers, 32-bit memory operands, or 32-bit integer registers. MOVD cannot transfer data from an MMX register to an MMX register, from memory to memory, or from an integer register to an integer register.
When the destination operand is an MMX register, the 32-bit source operand is written to the low-order 32 bits of the 64-bit destination register. The destination register is zero-extended to 64 bits.
When the source operand is an MMX register, the low-order 32 bits of the MMX register are written to the 32-bit integer register or 32-bit memory location.
Opcode Format 0F 6E /r MOVD mm, r/m32 0F 7E /r MOVD r/m32, mm