The XMM register has 128 bits, and use cvtsi2sdonly fills the low 64 bits. Therefore, the command is xorpsused to clear possible values of garbage and / or chains of dependencies that would otherwise affect subsequent operations.
Basically, the sequence of operations you have:
mov eax, 16Dh ; load 0x16D into lower 32 bits of RAX register
xorps xmm1, xmm1 ; zero xmm1
cvtsi2sd xmm1, rax ; load lower 32 bits from RAX into xmm1
<do more stuff with xmm1>
, , . xor x, x .
. ( , ) , xor (mov x, 0, and x, 0).