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 65569, Fix powerpc long double regression PF 65240 caused


Pat Haugen runs a spec regression tester on various PowerPC boxes, and he
noticed that my fix for PR 65240 (the bug involving floating point constants
and -ffast-math under VSX) caused a regression in building the dealII benchmark
on power6x.  I looked into it, and discovered I had missed extenddftf2_fprs
relying on (const_double 0.0) being used in RTL code.  This works on VSX
systems, where you can use the XXLXOR instruction, but it does not work on
previous systems.

This patch fixes the problem.  I have bootstrapped and ran make check on a
power7 big endian system and a power8 little endian system.  On power7, the
following test had been failing, and is now fixed (it doesn't fail on power8):

	g++.dg/torture/pr58369.C

I have also built the power8-vsx, power7-vsx, power6x-altivec suite with no
failures.  I'm building power6x-scalar, and power5-scalar shortly.  Assuming
that the last two spec runs build without errors, can I apply the patch?

2015-03-25  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/65569
	* config/rs6000/rs6000.md (extenddftf2_fprs): On VSX systems use
	XXLXOR to create 0.0.  On pre-VSX systems make sure the constant
	0.0 is correctly setup.
	(extenddftf2_internal): Likewise.

-- 
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA
email: meissner@linux.vnet.ibm.com, phone: +1 (978) 899-4797

Attachment: pr65569.patch01b
Description: Text document


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