This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] PR 46353, fix FMA breakage on powerpc


Richard Henderson is evidently working on a system wide cleanup of the FMA
issues.

This particular patch fixes the FMA issues on the powerpc.  Note, I don't seem
to be able to test the paired patches at this point, so I'm providing two
patches.  One patch fixes the normal power/vsx/altivec side of things.  It
fixes the ppc-fma-*.c and ppc-fmadd-*.c tests that were broken with no other
regressions.  The second patch adds the same changes to the paired.md file.

Ideally, my patch and Richard's will be harmonized to be checked in.  It would
be useful if somebody has a linuxpaired setup could check the paired changes on
their system.

2010-11-10  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/46353
	* config/rs6000/vector.md (fma<mode>4): Define vector versions of
	the fma patterns for Altivec, VSX, and paired floating point.
	(fms<mode>4): Ditto.
	(fnma<mode>4): Ditto.
	(fnms<mode>4): Ditto.

	* config/rs6000/rs6000.opt (-mfused-madd): Make -mfused-madd an
	alias for -ffp-contract=fast, and -mno-fused-madd an alias for
	-ffp-contract=off.

	* config/rs6000/vsx.md (vsx_fnmadd<mode>4_3): New combiner insn
	for fused multiply/add with the multiply negated for use with
	-ffast-math.
	(vsx_fnmsub<mode>4_3): Ditto.
	* config/rs6000/altivec.md (altivec_vnmsubfp_3): Ditto.

	* config/rs6000/rs6000.h (TARGET_FUSED_MADD): Define in terms of
	-ffp-contract.

	* config/rs6000/rs6000.md (fmssf4): Rename to use standard name
	for fused multiply/add instructions.  Add -ffast-math support for
	negating the multiply during the fma.
	(fnmasf4): Ditto.
	(fnmssf4): Ditto.
	(fmadf4): Use 'd' constraint for double, not 'f'.
	(fmsdf4): Use 'd' constraint for double, not 'f'.  Use standard
	name for fused multiply/add instructions.
	(fnmadf4): Ditto.
	(fnmadf4_fpr_1): Ditto.
	(fnmsdf4): Ditto.
	(fnmsdf4_fpr_1): Ditto.
	(fnmasf4_2): New combiner insn for fused multiply/add with the
	multiply negated for use with -ffast-math.
	(fnmssf4_2): Ditto.
	(fnmadf4_fpr_2): Ditto.
	(fnmsdf4_fpr_2): Ditto.

	* config/rs6000/paired.md (paired_madd): Rewrite to use fma.
	(paired_msub): Ditto.
	(paired_madd_2): Rename combiner pattern.
	(paired_msub_2): Ditto.
	(paired_nmadd_2): New pattern to use fma.
	(paired_nmadd_3): Ditto.
	(paired_nmsub_2): Ditto.
	(paired_nmsub_3): Ditto.

-- 
Michael Meissner, IBM
5 Technology Place Drive, M/S 2757, Westford, MA 01886-3141, USA
meissner@linux.vnet.ibm.com

Attachment: gcc-power7.patch186b
Description: Text document

Attachment: gcc-power7.patch187c
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]