On Thu, Feb 7, 2013 at 4:09 AM, Alan Modra wrote:
> After fixing PR54009 (again), I thought I'd take a look at why reload
> is generating the following correct but poor code
>
> stw 10,8(1)
> stw 11 12(1)
> ...
> lfd 0,8(1)
> stfd 0,x+32764@l(9)
>
> rather than
>
> addi 9,x+32764@l(9)
> ...
> stw 10,0(9)
> stw 11 4(9)
FWIW, left trunk vs. LRA right (with PR54009 patch on rs6000.c):
r: r:
stwu 1,-160(1) stwu 1,-160(1)
lis 9,x+32764@ha lis 9,x+32764@ha
la 9,x+32764@l(9) | la 8,x+32764@l(9)
lwz 10,0(9) <
lwz 11,4(9) <
lis 9,y@ha lis 9,y@ha
> lwz 10,0(8)
> lwz 11,4(8)
stfd ...
...
lfd ...
...
stw 10,y@l(9) stw 10,y@l(9)
stw 11,y+4@l(9) stw 11,y+4@l(9)
addi 1,1,160 addi 1,1,160
blr blr
w: w:
stwu 1,-160(1) stwu 1,-160(1)
lis 9,y@ha lis 9,y@ha
la 10,y@l(9) la 10,y@l(9)
> lis 9,x+32764@ha
lwz 11,4(10) lwz 11,4(10)
lwz 10,0(10) lwz 10,0(10)
lis 9,x+32764@ha | la 8,x+32764@l(9)
stfd ...
...
lfd ...
...
lfd 31,152(1) lfd 31,152(1)
lfd 0,8(1) | stw 10,0(8)
stfd 0,x+32764@l(9) | stw 11,4(8)
addi 1,1,160 addi 1,1,160
blr blr
I don't speak POWER but perhaps you can make sense of it :-)
Ciao!
Steven