This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: Patch to implement rotates by zero
>>>>> "Richard" == Richard Sandiford <rsandifo@redhat.com> writes:
Richard> Hmm, having had a bit more chance to think about it, I'd
Richard> like to stick with the original patch...
Richard> cgd@broadcom.com writes:
>> it just makes the binutils code simpler. People who do rotate by
>> 0 and expect an optimization should lose. it wouldn't happen if
>> they had real rotate instructions (i.e., they'd get an actual
>> instruction). So, they might as well get the 'normal' rotate
>> macro expansion.
I think the point is this: it's an across-the-board rule in MIPS that
32 bit operands in 64-bit registers MUST be properly sign-extended or
the result is unpredictable.
There's just one single exception to that, which is sll. It seems
that this special exception was created to shorten the common code
sequence:
dsll rx,rx,32
dsra rx,rx,32
which you will see all over the place when compilers are making sure
that 32-bit operands are properly formed.
It seems logical for a macro to obey the standard data format rule,
which is that 32-bit data must be properly sign-extended in 64 bit
registers.
paul