summaryrefslogtreecommitdiff
path: root/gcc/config/s390/2084.md
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/s390/2084.md')
-rw-r--r--gcc/config/s390/2084.md46
1 files changed, 24 insertions, 22 deletions
diff --git a/gcc/config/s390/2084.md b/gcc/config/s390/2084.md
index cff4420f29a..c07f4cf9ffd 100644
--- a/gcc/config/s390/2084.md
+++ b/gcc/config/s390/2084.md
@@ -61,6 +61,18 @@
;; Simple insns
;;
+(define_insn_reservation "x_int" 1
+ (and (eq_attr "cpu" "z990")
+ (and (eq_attr "type" "integer")
+ (eq_attr "atype" "reg")))
+ "x-e1-st,x-wr-st")
+
+(define_insn_reservation "x_agen" 1
+ (and (eq_attr "cpu" "z990")
+ (and (eq_attr "type" "integer")
+ (eq_attr "atype" "agen")))
+ "x-e1-st,x-wr-st")
+
(define_insn_reservation "x_lr" 1
(and (eq_attr "cpu" "z990")
(eq_attr "type" "lr"))
@@ -100,11 +112,16 @@
;; Multicycle insns
;;
-(define_insn_reservation "x_ss" 1
+(define_insn_reservation "x_cs" 1
(and (eq_attr "cpu" "z990")
- (eq_attr "op_type" "SS"))
+ (eq_attr "type" "cs"))
"x-e1-np,x-wr-np")
+(define_insn_reservation "x_vs" 1
+ (and (eq_attr "cpu" "z990")
+ (eq_attr "type" "vs"))
+ "x-e1-np*10,x-wr-np")
+
(define_insn_reservation "x_stm" 1
(and (eq_attr "cpu" "z990")
(eq_attr "type" "stm"))
@@ -115,9 +132,9 @@
(eq_attr "type" "lm"))
"x-e1-np*10,x-wr-np")
-(define_insn_reservation "x_nn" 1
+(define_insn_reservation "x_other" 1
(and (eq_attr "cpu" "z990")
- (eq_attr "op_type" "NN"))
+ (eq_attr "type" "other"))
"x-e1-np,x-wr-np")
;;
@@ -183,21 +200,6 @@
(define_bypass 1 "x_floads" "x_fsimps,x_fstores,x_floads")
;;
-;; Insns still not mentioned are checked for
-;; the usage of the agen unit
-;;
-
-(define_insn_reservation "x_int" 1
- (and (eq_attr "cpu" "z990")
- (eq_attr "atype" "reg"))
- "x-e1-st,x-wr-st")
-
-(define_insn_reservation "x_agen" 1
- (and (eq_attr "cpu" "z990")
- (eq_attr "atype" "agen"))
- "x-e1-st+x-mem,x-wr-st")
-
-;;
;; s390_agen_dep_p returns 1, if a register is set in the
;; first insn and used in the dependent insn to form a address.
;;
@@ -208,7 +210,7 @@
;;
(define_bypass 5 "x_int,x_agen,x_lr"
- "x_agen,x_la,x_call,x_load,x_store,x_ss,x_stm,x_lm"
+ "x_agen,x_la,x_branch,x_call,x_load,x_store,x_cs,x_stm,x_lm,x_other"
"s390_agen_dep_p")
(define_bypass 9 "x_int,x_agen,x_lr"
@@ -221,7 +223,7 @@
;;
(define_bypass 4 "x_load"
- "x_agen,x_la,x_call,x_load,x_store,x_ss,x_stm,x_lm"
+ "x_agen,x_la,x_branch,x_call,x_load,x_store,x_cs,x_stm,x_lm,x_other"
"s390_agen_dep_p")
(define_bypass 5 "x_load"
@@ -235,7 +237,7 @@
;;
(define_bypass 3 "x_larl,x_la"
- "x_agen,x_la,x_call,x_load,x_store,x_ss,x_stm,x_lm"
+ "x_agen,x_la,x_branch,x_call,x_load,x_store,x_cs,x_stm,x_lm,x_other"
"s390_agen_dep_p")
(define_bypass 5 "x_larl, x_la"