If a "double" (64-bit) value has zero low 32-bits, it's possible to load such value into a GP/FP registers as an instruction immediate. But now assembler loads only high 32-bits of the value.
For example, if a target register is GPR the li.d $4, 1.0 instruction converts into the lui $4, 16368 one. As a result, we get 0x3FF00000 in the register. While a correct representation of the 1.0 value is 0x3FF0000000000000. The patch fixes that.
An alternative to this condition could be isGP64bit(). Do you think there's a case where this wouldn't work and what do you prefer?