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