On Mon, Nov 17, 2003 at 11:36:47PM +1030, Alan Modra wrote:
> On Mon, Nov 17, 2003 at 11:42:34AM +0100, Gabriel Paubert wrote:
> > What does it do about floating point constants?
> 
> Puts them in the TOC, then accesses with, eg.
> 
>         lfd     f1,some_offset(r2)
> 
> > Recent versions of GCC have an annoying bug which makes many
> > (but not all) floating-point constant load take 3 instructions 
> > in 32 bit mode (never tried 64 bit, no hardware):
> > 
> >     li rx,[EMAIL PROTECTED]@
> >     la ry,[EMAIL PROTECTED](rx)
> >     lfd frz,0(ry)
> 
> Hmm, that does seem a bit poor.

With -fpic this gives:

        lwz 9,[EMAIL PROTECTED](30)
        lfd 0,0(9)

for every single damned FP constant in the code (double
indirection just for the sake of making the code slower
and both i- and d-cache footprints bigger). With -fPIC
it is more or less the same:

        lwz 31,.LC13-.LCTOC1(30)
        lfd 8,0(31)

at least I'm happy to see that PPC64 looks much better
in this respect.
                
Anyway, I'm going to do a few more tests with more recent
GCC snapshots (building from gcc's CVS right now) before 
sending a report to gcc mailing lists.

        Gabriel

Reply via email to