re PR bootstrap/77993 (bootstrap failure on PowerPC/Linux)

2016-11-03  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/77993
	* config/rs6000/rs6000.h (FLOAT128_IBM_P): Do not allow IFmode or
	ICmode unless we have standard PowerPC floating point.
	* config/rs6000/rs6000.md (FP iterator): Likewise.
	(FMOVE128 iterator): Likewise.

From-SVN: r241833
This commit is contained in:
Michael Meissner 2016-11-03 21:25:12 +00:00 committed by Michael Meissner
parent 6905c577d1
commit 0bc36dec0f
3 changed files with 13 additions and 4 deletions

View File

@ -1,3 +1,11 @@
2016-11-03 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/77993
* config/rs6000/rs6000.h (FLOAT128_IBM_P): Do not allow IFmode or
ICmode unless we have standard PowerPC floating point.
* config/rs6000/rs6000.md (FP iterator): Likewise.
(FMOVE128 iterator): Likewise.
2016-11-03 Jakub Jelinek <jakub@redhat.com>
Alexandre Oliva <aoliva@redhat.com>
Jason Merrill <jason@redhat.com>

View File

@ -442,14 +442,15 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
point. KFmode was added as a way to represent IEEE 128-bit floating point,
even if the default for long double is the IBM long double format.
Similarly IFmode is the IBM long double format even if the default is IEEE
128-bit. */
128-bit. Don't allow IFmode if -msoft-float. */
#define FLOAT128_IEEE_P(MODE) \
((TARGET_IEEEQUAD && ((MODE) == TFmode || (MODE) == TCmode)) \
|| ((MODE) == KFmode) || ((MODE) == KCmode))
#define FLOAT128_IBM_P(MODE) \
((!TARGET_IEEEQUAD && ((MODE) == TFmode || (MODE) == TCmode)) \
|| ((MODE) == IFmode) || ((MODE) == ICmode))
|| (TARGET_HARD_FLOAT && TARGET_FPRS \
&& ((MODE) == IFmode) || ((MODE) == ICmode)))
/* Helper macros to say whether a 128-bit floating point type can go in a
single vector register, or whether it needs paired scalar values. */

View File

@ -376,7 +376,7 @@
(TF "TARGET_HARD_FLOAT
&& (TARGET_FPRS || TARGET_E500_DOUBLE)
&& TARGET_LONG_DOUBLE_128")
(IF "TARGET_LONG_DOUBLE_128")
(IF "TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_LONG_DOUBLE_128")
(KF "TARGET_FLOAT128_TYPE")
(DD "TARGET_DFP")
(TD "TARGET_DFP")])
@ -398,7 +398,7 @@
(define_mode_iterator FMOVE64 [DF DD])
(define_mode_iterator FMOVE64X [DI DF DD])
(define_mode_iterator FMOVE128 [(TF "TARGET_LONG_DOUBLE_128")
(IF "TARGET_LONG_DOUBLE_128")
(IF "FLOAT128_IBM_P (IFmode)")
(TD "TARGET_HARD_FLOAT && TARGET_FPRS")])
(define_mode_iterator FMOVE128_FPR [(TF "FLOAT128_2REG_P (TFmode)")