* config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
inverted and documentation adjusted.
("mhard-dfp", "msoft-dfp"): New options.
* config/s390/s390.c (s390_handle_arch_option): New architecture
switch: z9-ec.
(override_options): Sanity checks for the new options added.
* config.gcc: New architecture switch: z9-ec.
* config/s390/s390.h (processor_flags): PF_DFP added.
(TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
(TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
when the bit is NOT set so remove it from the defaults.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123055
138bc75d-0d04-0410-961f-
82ee72b054a4
+2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
+ inverted and documentation adjusted.
+ ("mhard-dfp", "msoft-dfp"): New options.
+ * config/s390/s390.c (s390_handle_arch_option): New architecture
+ switch: z9-ec.
+ (override_options): Sanity checks for the new options added.
+ * config.gcc: New architecture switch: z9-ec.
+ * config/s390/s390.h (processor_flags): PF_DFP added.
+ (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
+ (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
+ when the bit is NOT set so remove it from the defaults.
+
2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
* genemit.c (main): Print include statement for dfp.h.
for which in arch tune; do
eval "val=\$with_$which"
case ${val} in
- "" | g5 | g6 | z900 | z990 | z9-109)
+ "" | g5 | g6 | z900 | z990 | z9-109 | z9-ec)
# OK
;;
*)
| PF_LONG_DISPLACEMENT},
{"z9-109", PROCESSOR_2094_Z9_109, PF_IEEE_FLOAT | PF_ZARCH
| PF_LONG_DISPLACEMENT | PF_EXTIMM},
+ {"z9-ec", PROCESSOR_2094_Z9_109, PF_IEEE_FLOAT | PF_ZARCH
+ | PF_LONG_DISPLACEMENT | PF_EXTIMM | PF_DFP },
};
size_t i;
}
/* Sanity checks. */
- if (TARGET_ZARCH && !(s390_arch_flags & PF_ZARCH))
+ if (TARGET_ZARCH && !TARGET_CPU_ZARCH)
error ("z/Architecture mode not supported on %s", s390_arch_string);
if (TARGET_64BIT && !TARGET_ZARCH)
error ("64-bit ABI not supported in ESA/390 mode");
+ if (TARGET_HARD_DFP && (!TARGET_CPU_DFP || !TARGET_ZARCH))
+ {
+ if (target_flags_explicit & MASK_SOFT_DFP)
+ {
+ if (!TARGET_CPU_DFP)
+ error ("Hardware decimal floating point instructions"
+ " not available on %s", s390_arch_string);
+ if (!TARGET_ZARCH)
+ error ("Hardware decimal floating point instructions"
+ " not available in ESA/390 mode");
+ }
+ else
+ target_flags |= MASK_SOFT_DFP;
+ }
+
+ if ((target_flags_explicit & MASK_SOFT_FLOAT) && TARGET_SOFT_FLOAT)
+ {
+ if ((target_flags_explicit & MASK_SOFT_DFP) && TARGET_HARD_DFP)
+ error ("-mhard-dfp can't be used in conjunction with -msoft-float");
+
+ target_flags |= MASK_SOFT_DFP;
+ }
+
/* Set processor cost function. */
if (s390_tune == PROCESSOR_2094_Z9_109)
s390_cost = &z9_109_cost;
;; this description is also used for the g5 and g6.
(include "2064.md")
-;; Pipeline description for z990.
+;; Pipeline description for z990, z9-109 and z9-ec.
(include "2084.md")
;; Predicates
Target Report Mask(FUSED_MADD)
Enable fused multiply/add instructions
+mhard-dfp
+Target Report RejectNegative InverseMask(SOFT_DFP, HARD_DFP)
+Enable hardware decimal floating point
+
mhard-float
-Target Report RejectNegative Mask(HARD_FLOAT)
-Use hardware fp
+Target Report RejectNegative InverseMask(SOFT_FLOAT, HARD_FLOAT)
+Enable hardware floating point
mlong-double-128
Target Report RejectNegative Mask(LONG_DOUBLE_128)
Target Report Mask(SMALL_EXEC)
Use bras for executable < 64k
+msoft-dfp
+Target Report RejectNegative Mask(SOFT_DFP)
+Disable hardware decimal floating point
+
msoft-float
-Target Report RejectNegative InverseMask(HARD_FLOAT, SOFT_FLOAT)
-Don't use hardware fp
+Target Report RejectNegative Mask(SOFT_FLOAT)
+Disable hardware floating point
mstack-guard=
Target RejectNegative Joined