Both MOVZX r32, r/m16 and MOVZX r64, r/m16 have the opcode 0F B7, but the latter has a REX.W prefix. What makes these two instructions different? Shouldnt both of them zero the upper 32-bits of the destination operand anyways since according to
Intel 64 and IA-32 Architectures - Software Developer’s Manual, Volume 1, 3.4.1.1
: General-Purpose Registers in 64-Bit Mode.
the following statement holds:
32-bit operands generate a 32-bit result,
zero-extended to a 64-bit result in the destination general-purpose register.