This is the mail archive of the
mailing list for the glibc project.
Re: PowerPC's math_ldbl.h
- From: Adhemerval Zanella <azanella at linux dot vnet dot ibm dot com>
- To: libc-alpha at sourceware dot org
- Date: Thu, 21 Feb 2013 10:53:37 -0300
- Subject: Re: PowerPC's math_ldbl.h
- References: <email@example.com>
On 02/21/2013 09:57 AM, Thomas Schwinge wrote:
> I just noticed that PowerPC's sysdeps/powerpc/fpu/math_ldbl.h is slightly
> different from the generic sysdeps/ieee754/ldbl-128ibm/math_ldbl.h.
> Is especially the assertion that Âgcc generates disgusting code to pack
> and unpack long doublesÂ still true in today's world?
> Also, it seems to me that Anton's spelling fix commit
> 2ccdea26f290f6990606f4a43de5272afa1a784d should be applied to the generic
> file, too, and vice versa Adhemerval's bug fix commit
> 34ae0b3270c67cae0c54ac98b693fdf7d010a206 might be needed for the
> PowerPC-specific file, too?
> In the end, can we perhaps completely get rid of the PowerPC-specific
I just checked with GCC 4.4.6, 4.6.4, and 4.7.3 and neither of them can infer that
the 'ldbl_pack' does not need to spill the double registers and load them back from stack.
As the comment pointed out, the ldbl_pack is just a nop while the foo_unpack just need
to issue two 'stfd'. From what I could check, even at -O3 GCC spills and reloads the
double value from stack.
I believe that's why the pack/unpack function was redefined for PowerPC. Maybe we can
do something more clever and make 'sysdeps/powerpc/fpu/math_ldbl.h' include
'sysdeps/ieee754/ldbl-128ibm/math_ldbl.h' and just redefine 'pack/unpack'. What do