aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2005-01-26 18:57:03 +0000
committerAldy Hernandez <aldyh@gcc.gnu.org>2005-01-26 18:57:03 +0000
commitaf30facda40d9934551063d3966603a1533e8743 (patch)
tree7f2966054bc017e3df1a3100f1679bb04bc6f644
parentb2802a4b4c280b6093752ee8b7672e3299ddbc2d (diff)
downloadgcc-af30facda40d9934551063d3966603a1533e8743.zip
gcc-af30facda40d9934551063d3966603a1533e8743.tar.gz
gcc-af30facda40d9934551063d3966603a1533e8743.tar.bz2
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
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/frv/frv.md11
2 files changed, 15 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 51b273e..4255c8e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2005-01-26 Aldy Hernandez <aldyh@redhat.com>
+
+ 2004-11-11 Eric Christopher <echristo@redhat.com>
+
+ * 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.
+
2005-01-26 Steven Bosscher <stevenb@suse.de>
PR middle-end/16585
diff --git a/gcc/config/frv/frv.md b/gcc/config/frv/frv.md
index bab7755..0fc13e2 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