[Bug tree-optimization/18463] [4.0 Regression] Moving floating point through an integer register

pinskia at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Sat Nov 13 17:54:00 GMT 2004


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-11-13 17:54 -------
For PPC at least IV-OPTS should note that we have post increment and decrement the pointers before 
the loop and then increment all of them inside the loop, aka:
void
fcpy(float *restrict a,  float *restrict b,
     float *restrict aa, float *restrict bb, unsigned n)
{
        unsigned i;
        aa-=1; a-=1; bb-=1; b-=1;
        for(i = 0; i < n; i++) {
        aa+=1; a+=1; bb+=1; b+=1;
                *bb=*b;
                *aa=*a;
        }
}
So we get:
L4:
        lfsu f0,4(r4)
        lfsu f13,4(r3)
        stfsu f0,4(r6)
        stfsu f13,4(r5)
        bdnz L4
which is the most optimal for PPC

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18463



More information about the Gcc-bugs mailing list