diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2005-01-26 18:57:03 +0000 |
---|---|---|
committer | Aldy Hernandez <aldyh@gcc.gnu.org> | 2005-01-26 18:57:03 +0000 |
commit | af30facda40d9934551063d3966603a1533e8743 (patch) | |
tree | 7f2966054bc017e3df1a3100f1679bb04bc6f644 /gcc/config/frv | |
parent | b2802a4b4c280b6093752ee8b7672e3299ddbc2d (diff) | |
download | gcc-af30facda40d9934551063d3966603a1533e8743.tar.gz |
frv.md: Add fr400_integer automaton.
* config/frv/frv.md: Add fr400_integer automaton. Don't
allow TYPE_MUL, TYPE_MACC, or TYPE_CUT to issue in parallel
to TYPE_MACC.
From-SVN: r94272
Diffstat (limited to 'gcc/config/frv')
-rw-r--r-- | gcc/config/frv/frv.md | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/gcc/config/frv/frv.md b/gcc/config/frv/frv.md index bab77557273..0fc13e2a9e9 100644 --- a/gcc/config/frv/frv.md +++ b/gcc/config/frv/frv.md @@ -768,6 +768,9 @@ ;; of memory unit collision in the same packet. There's only one divide ;; unit too. +(define_automaton "fr400_integer") +(define_cpu_unit "fr400_mul" "fr400_integer") + (define_insn_reservation "fr400_i1_int" 1 (and (eq_attr "cpu" "fr400,fr405,fr450") (eq_attr "type" "int")) @@ -788,18 +791,18 @@ (define_insn_reservation "fr400_i1_mul" 3 (and (eq_attr "cpu" "fr400,fr405") (eq_attr "type" "mul")) - "i0") + "i0 + fr400_mul") (define_insn_reservation "fr450_i1_mul" 2 (and (eq_attr "cpu" "fr450") (eq_attr "type" "mul")) - "i0") + "i0 + fr400_mul") (define_bypass 1 "fr400_i1_macc" "fr400_i1_macc") (define_insn_reservation "fr400_i1_macc" 2 (and (eq_attr "cpu" "fr405,fr450") (eq_attr "type" "macc")) - "i0|i1") + "(i0|i1) + fr400_mul") (define_insn_reservation "fr400_i1_scan" 1 (and (eq_attr "cpu" "fr400,fr405,fr450") @@ -809,7 +812,7 @@ (define_insn_reservation "fr400_i1_cut" 2 (and (eq_attr "cpu" "fr405,fr450") (eq_attr "type" "cut")) - "i0") + "i0 + fr400_mul") ;; 20 is for a write-after-write hazard. (define_insn_reservation "fr400_i1_div" 20 |