Now assembler generates two consecutive .4byte directives to store 64-bit `li.d' operand. The first directive stores high 4-byte of the value. The second directive stores low 4-byte of the value. But on 64-bit system we load this value at once and get wrong result if the system is little-endian.
This patch fixes the bug. It stores the `li.d' operand as a single 8-byte value.
With the elimination of HiImmOp64 and LoImmOp64 here the use of most of these variables goes down to a single place in the code which creates a chance for inlining, though they look fine even without that.