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 4/N][rs6000, cft] -mfused-add cleanup


This patch continues the elimination -mfused-madd in favor of -ffp-contract,
converting the rs6000 backend.

This port was a whole lot trickier:

First, it kinda-sorta attempted use of FMA in its reciprical generation
functions.  I made the assumption that these algorithms actually rely on the
use of FMA, and the testing of !TARGET_FUSED_MADD is actually a red-herring
and should *not* be converted to test fp-contract.  So I just converted that
code to always emit the FMA.

Second, this target has

	-fma(a,b,c)	(call this NFMA)
	-fma(a,b,-c)	(call this NFMS)

instead of

	fma(-a,b,c)	(generically named FNMA)
	fma(-a,b,-c)	(generically named FNMS)

I represent the NFM[AS] instructions correctly, always.  But if signed zeros
are allowed to be ignored, I expand the FNM[AS] with the NFM[AS] patterns.

I make no attempt to create NFM[AS] optabs; I'm not convinced that it's really
necessary.  I think combine will be able to handle these just fine.  I'm happy
to be proven wrong, however.

This patch is UNTESTED beyond a cross-compile and running simple tests by hand.
I'm hoping that Meissner can test this faster than me pushing this through the
gcc compile farm -- it took 2 days to get a full test cycle done last time...


r~

Attachment: 0001-ppc-move-mfused-madd-to-ffp-contract.patch
Description: Text document


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