My code is as follows : (In Windows 64 bit environment, debugging in Visual Express 2012 on Windows 7, Core i5 520M CPU)
mov edx, a_number_which_is_less than_16_bits
shl rdx,32 ; moves that number to upper 32 bits of RDX
<few lines that leave an useless number in EDX, but does not touch upper 32 bits of RDX>
xor edx,edx ; should clear the lower 32 bits of RDX keeping upper 32 bits intact
But it is clearing the upper 32 bits of RDX as well...leaving entire RDX as zero The Intel Manual for 64 bit processors does not specify that XOR instruction clears upper 32 bit as well (Vol 2 B, Page 4-531).
Has this been seen by other programmers as well ?