diff options
Diffstat (limited to 'gcc/config/s390/2084.md')
-rw-r--r-- | gcc/config/s390/2084.md | 46 |
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" |