On Tue, Jul 29, 2014 at 10:56 AM, Peter Bergner <berg...@vnet.ibm.com> wrote:
> ..after cleaning up the conflicting long double builtins and fixing a
> few bugs in the test cases, I'd like to resubmit the following:
>
> Currently, the IBM long double routines in libgcc use a union to construct
> a long double from two double values.  This causes horrific code generation
> that copies the two double from the FP registers over to GPRs and back
> again, giving us two loads and two stores, which leads to two load-hit-store
> hazzards.  The following patch makes use of the new __builtin_pack_longdouble
> builtin to construct the long double giving us at worse, one or two fmrs.
>
> This passed bootstrap and regtesting on powerpc64-linux.  Ok for trunk?
>
> Peter
>
>
> libgcc/
>         * config/rs6000/ibm-ldouble.c (typedef union longDblUnion): Delete.
>         (pack_ldouble): New function.
>         (__gcc_qadd): Use it.
>         (__gcc_qmul): Likewise.
>         (__gcc_qdiv): Likewise.
>         (__gcc_qneg): Likewise.
>         (__gcc_stoq): Likewise.
>         (__gcc_dtoq): Likewise.

Okay.

Thanks, David

Reply via email to