summaryrefslogtreecommitdiff
path: root/gcc/config/s390/2084.md
diff options
context:
space:
mode:
authorkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>2006-02-03 07:52:57 +0000
committerkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>2006-02-03 07:52:57 +0000
commit429f9fdba5d2409925bbcb4ccaa2b3967f6e5b87 (patch)
treeb31e68702d10601b2097570d3a555e1dcca9925c /gcc/config/s390/2084.md
parent51e09d9d00e8c6fc4122f9ab5c3cef34e05aaec6 (diff)
downloadgcc-429f9fdba5d2409925bbcb4ccaa2b3967f6e5b87.tar.gz
2006-02-03 Andreas Krebbel <krebbel1@de.ibm.com>
Ulrich Weigand <uweigand@de.ibm.com> PR target/25864 * config/s390/2084.md ("x_fsimptf", "x_fmultf", "x_fdivtf", "x_floadtf", "x_ftrunctf", "x_ftruncdf"): New insn reservations. * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): New functions. * config/s390/s390.c (struct processor_costs): Add mxbr, sqxbr, dxbr and dxr fields. (z900_cost, z990_cost, z9_109_cost): Values for the new fields added. (s390_rtx_costs): Use the new fields to calculate rtx costs. (s390_secondary_input_reload_class, s390_secondary_output_reload_class): Define secondary reloads for TFmode moves. (constant_modes): Add TFmode. (NR_C_MODES): Set to 8. * config/s390/s390.h (TARGET_CPU_CPP_BUILTINS): Add __LONG_DOUBLE_128__ builtin define. (LONG_DOUBLE_TYPE_SIZE): Set to 128 or 64. (LIBGCC2_LONG_DOUBLE_TYPE_SIZE, WIDEST_HARDWARE_FP_SIZE): Define. (HARD_REGNO_NREGS, HARD_REGNO_MODE_OK, CLASS_MAX_NREGS, CANNOT_CHANGE_MODE_CLASS): Consider TFmode. * config/s390/s390.md ("type" attribute): Add fsimptf, floadtf, fmultf, fdivtf, fsqrttf, ftrunctf, ftruncdf as possible values. (FPR mode macro): Add TFmode. (DSF mode macro): New. (<de>, <dee> mode attributes): Removed. (<xde>, <xdee>, <RRe>, <RXe>, <Rf> mode attributes): New. ("*cmp<mode>_ccs_0", "*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs", "*cmp<mode>_ccs_ibm", "fix_trunc<FPR:mode><GPR:mode>2_ieee", "floatdi<mode>2", "floatsi<mode>2_ieee", "*add<mode>3", "*add<mode>3_cc", "*add<mode>3_cconly", "*add<mode>3_ibm", "*sub<mode>3", "*sub<mode>3_cc", "*sub<mode>3_cconly", "*sub<mode>3_ibm", "*mul<mode>3_ibm", "*fmadd<mode>", "*fmsub<mode>", "*div<mode>3", "*div<mode>3_ibm", "*neg<mode>2_cc", "*neg<mode>2_cconly", "*neg<mode>2", "*neg<mode>2_ibm", "*abs<mode>2_cc", "*abs<mode>2_cconly", "*abs<mode>2", "*abs<mode>2_ibm", "*negabs<mode>2_cc", "*negabs<mode>2_cconly", "*negabs<mode>2", "sqrt<mode>2"): Changed <de> to <xde>. R constraint replaced by <Rf>. ("*mul<mode>3"): Changed <dee> to <xdee>. R constraint replaced by <Rf>. ("fix_trunc<FPR:mode>di2"): 'FPR:' removed. ("*fmadd<mode>", "*fmsub<mode>"): FPR mode replaced by DSF. ("*movtf_64", "*movtf_31"): New insn definitions followed by 5 splitters. ("movtf", "reload_outtf", "reload_intf", "trunctfdf2", "trunctfsf2", "extenddftf2", "extendsftf2"): New expanders. ("*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee", "*trunctfsf2_ibm", "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee", "*extendsftf2_ibm"): New insn patterns. * config/s390/s390.opt (mlong-double-128, mlong-double-64): New options. * config/s390/t-crtstuff (TARGET_LIBGCC2_CFLAGS): Macro defined. * config/s390/libgcc-glibc.ver (__divtc3, __multc3, __powitf2, __fixtfti, __fixunstfti, __floattitf, __fixtfdi, __fixunstfdi, __floatditf): Add a GCC_4.1.0 symbol version tag. * doc/invoke.texi (-mlong-double-128, -mlong-double-64): Document the new options. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110539 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/s390/2084.md')
-rw-r--r--gcc/config/s390/2084.md44
1 files changed, 40 insertions, 4 deletions
diff --git a/gcc/config/s390/2084.md b/gcc/config/s390/2084.md
index be56f76ad14..3a4479a2937 100644
--- a/gcc/config/s390/2084.md
+++ b/gcc/config/s390/2084.md
@@ -1,5 +1,5 @@
;; Scheduling description for z990 (cpu 2084).
-;; Copyright (C) 2003,2004, 2005 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
;; Contributed by Hartmut Penner (hpenner@de.ibm.com) and
;; Ulrich Weigand (uweigand@de.ibm.com).
@@ -161,6 +161,11 @@
;; Floating point insns
;;
+(define_insn_reservation "x_fsimptf" 7
+ (and (eq_attr "cpu" "z990,z9_109")
+ (eq_attr "type" "fsimptf"))
+ "x_e1_t*2,x-wr-fp")
+
(define_insn_reservation "x_fsimpdf" 6
(and (eq_attr "cpu" "z990,z9_109")
(eq_attr "type" "fsimpdf,fmuldf"))
@@ -171,6 +176,18 @@
(eq_attr "type" "fsimpsf,fmulsf"))
"x_e1_t,x-wr-fp")
+
+(define_insn_reservation "x_fmultf" 33
+ (and (eq_attr "cpu" "z990,z9_109")
+ (eq_attr "type" "fmultf"))
+ "x_e1_t*27,x-wr-fp")
+
+
+(define_insn_reservation "x_fdivtf" 82
+ (and (eq_attr "cpu" "z990,z9_109")
+ (eq_attr "type" "fdivtf,fsqrttf"))
+ "x_e1_t*76,x-wr-fp")
+
(define_insn_reservation "x_fdivdf" 36
(and (eq_attr "cpu" "z990,z9_109")
(eq_attr "type" "fdivdf,fsqrtdf"))
@@ -181,6 +198,12 @@
(eq_attr "type" "fdivsf,fsqrtsf"))
"x_e1_t*30,x-wr-fp")
+
+(define_insn_reservation "x_floadtf" 6
+ (and (eq_attr "cpu" "z990,z9_109")
+ (eq_attr "type" "floadtf"))
+ "x_e1_t,x-wr-fp")
+
(define_insn_reservation "x_floaddf" 6
(and (eq_attr "cpu" "z990,z9_109")
(eq_attr "type" "floaddf"))
@@ -191,6 +214,7 @@
(eq_attr "type" "floadsf"))
"x_e1_t,x-wr-fp")
+
(define_insn_reservation "x_fstoredf" 1
(and (eq_attr "cpu" "z990,z9_109")
(eq_attr "type" "fstoredf"))
@@ -201,6 +225,18 @@
(eq_attr "type" "fstoresf"))
"x_e1_t,x-wr-fp")
+
+(define_insn_reservation "x_ftrunctf" 16
+ (and (eq_attr "cpu" "z990,z9_109")
+ (eq_attr "type" "ftrunctf"))
+ "x_e1_t*10,x-wr-fp")
+
+(define_insn_reservation "x_ftruncdf" 11
+ (and (eq_attr "cpu" "z990,z9_109")
+ (eq_attr "type" "ftruncdf"))
+ "x_e1_t*5,x-wr-fp")
+
+
(define_insn_reservation "x_ftoi" 1
(and (eq_attr "cpu" "z990,z9_109")
(eq_attr "type" "ftoi"))
@@ -234,7 +270,7 @@
"s390_agen_dep_p")
(define_bypass 9 "x_int,x_agen,x_lr"
- "x_floaddf, x_floadsf, x_fstoredf, x_fstoresf,\
+ "x_floadtf, x_floaddf, x_floadsf, x_fstoredf, x_fstoresf,\
x_fsimpdf, x_fsimpsf, x_fdivdf, x_fdivsf"
"s390_agen_dep_p")
;;
@@ -247,7 +283,7 @@
"s390_agen_dep_p")
(define_bypass 5 "x_load"
- "x_floaddf, x_floadsf, x_fstoredf, x_fstoresf,\
+ "x_floadtf, x_floaddf, x_floadsf, x_fstoredf, x_fstoresf,\
x_fsimpdf, x_fsimpsf, x_fdivdf, x_fdivsf"
"s390_agen_dep_p")
@@ -261,7 +297,7 @@
"s390_agen_dep_p")
(define_bypass 5 "x_larl, x_la"
- "x_floaddf, x_floadsf, x_fstoredf, x_fstoresf,\
+ "x_floadtf, x_floaddf, x_floadsf, x_fstoredf, x_fstoresf,\
x_fsimpdf, x_fsimpsf, x_fdivdf, x_fdivsf"
"s390_agen_dep_p")