On Tue, Jul 19, 2011 at 5:02 PM, Michael Meissner
<meiss...@linux.vnet.ibm.com> wrote:
> (I had an emacs failure when sending out this message, and I may have sent out
> a blank message by accident -- sorry if I did).
>
> When I did the original power7 support, I switched all of the floating point
> operations to use VSX instructions instead of the traditional instructions.
> The traditional fused multiply and add instructions (FMA) have 4 operands so
> that the destination can be a separate register from the inputs, while the VSX
> encoding requires the output to overlap the addend or one of the multiplies.
> Occasionally you would get better code if the register allocator had the
> freedom to use a different output register.  This patch adds 4 operand FMAs
> back for scalar double precision.  It also adds the Altivec 4 operand FMAs for
> vector single precision where the Altivec instruction set provides suitable
> instructions.  It also adjusts the tests that were depending on using the VSX
> form of the instructions.
>
> I have bootstrapped the patches and reran the test suite with no regressions.
> In addition, I have built and run all of Spec 2006 with the patches.  Are 
> these
> patches ok to install in GCC 4.7?
>
> [gcc]
> 2011-07-19  Michael Meissner  <meiss...@linux.vnet.ibm.com>
>
>        * config/rs6000/vsx.md (vsx_fma*): Use 4 argument fma instructions
>        where we can use them from the standard and altivec instruction
>        sets, instead of always using the 3 operand VSX forms that require
>        the destination to overlap one of the inputs.
>        (vsx_fms*): Ditto.
>        (vsx_fnma*): Ditto.
>        (vsx_fnms*): Ditto.
>
>        * config/rs6000/rs6000.md (fmadf4_fpr): Set fp_type fp_maddsub_d
>        for DF types.
>        (fmsdf4_fpr): Ditto.
>        (nfmadf4_fpr): Ditto.
>        (nfmsdf4_fpr): Ditto.
>
> [gcc/testsuite]
> 2011-07-12  Michael Meissner  <meiss...@linux.vnet.ibm.com>
>
>        * gcc.target/powerpc/ppc-fma-1.c: Adjust to allow non-VSX fmas to
>        be generated.
>        * gcc.target/powerpc/ppc-fma-2.c: Ditto.
>        * gcc.target/powerpc/recip-3.c: Ditto.

Okay.

Thanks, David

Reply via email to