On Sat, 2014-05-03 at 07:52 +0100, Richard Sandiford wrote:
> > Old:
> >
> > li $5,305397760 # 0x12340000
> > addiu $4,$5,1
> > addiu $5,$5,-1
> >
> > New:
> >
> > li $5,305332224 # 0x12330000
> > ori $5,$5,0xffff
> > addiu $4,$5,2
>
> This isn't as good though -- $4 now depends on two previous
> instructions. Do you know which specific change was responsible?
>
> Thanks,
> Richard
A quick follow up. The code in question is:
void f () { g (0x12340001, 0x1233ffff); }
And if I swap the arguments I get something more like the old code.
But if I run an older GCC on that new swapped code then I get something
like the new code. So while the old code may have been better for this
example, the new code is better if I swap the arguments around.
Steve Ellcey
[email protected]