Hello,

These look like typos:

* "power4-store-update" wants "iuX,iuY" for X=1|2 and Y=1|2. The
"iu2,iu1" case appeared twice.
* "power4-three" wants "iuX,iuX,iuY|iuX,iuY,iuY" for X=1|2 and Y=1|2.
The "iu1,iu1,iu2" case appeared twice.

Bootstrapped&tested on powerpc64-unknown-linux-gnu.
OK for trunk?

Note, it'd be nice if the size of the power4iu automaton could be
reduced somehow. It is by far the largest automaton in the rs6000 back
end, accounting for ~40% of the total.

Automaton `power4iu'
     8128 NDFA states,          68391 NDFA arcs
    12609 DFA states,           104521 DFA arcs
    10894 minimal DFA states,   89248 minimal DFA arcs
      683 all insns         23 insn equivalence classes
    0 locked states
107203 transition comb vector els, 250562 trans table els: use simple vect
250562 min delay table els, compression factor 1

(All:)
124282 all allocated states,     493955 all allocated arcs
811237 all allocated alternative states
248236 all transition comb vector els, 613376 all trans table els
613376 all min delay table els
    0 all locked states

For comparison, power7iu:

Automaton `power7iu'
     7697 NDFA states,          23034 NDFA arcs
     3738 DFA states,           10277 DFA arcs
     3690 minimal DFA states,   10056 minimal DFA arcs
      683 all insns          9 insn equivalence classes
    0 locked states
10690 transition comb vector els, 33210 trans table els: use comb vect
33210 min delay table els, compression factor 1

I don't understand well enough how the scheduler descriptions are
translated to DFAs, so I don't really understand why the power4iu
automaton needs so many table elts, but the above seems
disproportional to me.

Ciao!
Steven

        * config/rs6000/power4.md (power4-store-update): Fix reservation.
        (power4-three): Likewise.

Index: config/rs6000/power4.md
===================================================================
--- config/rs6000/power4.md     (revision 189388)
+++ config/rs6000/power4.md     (working copy)
@@ -145,7 +145,7 @@
     |(du3_power4+du4_power4,lsu2_power4))+\
    ((nothing,iu2_power4,iu1_power4)\
     |(nothing,iu2_power4,iu2_power4)\
-    |(nothing,iu1_power4,iu2_power4)\
+    |(nothing,iu1_power4,iu1_power4)\
     |(nothing,iu1_power4,iu2_power4))")

 (define_insn_reservation "power4-store-update-indexed" 12
@@ -212,7 +212,7 @@
    ((iu1_power4,nothing,iu2_power4,nothing,iu2_power4)\
     |(iu2_power4,nothing,iu2_power4,nothing,iu1_power4)\
     |(iu2_power4,nothing,iu1_power4,nothing,iu1_power4)\
-    |(iu1_power4,nothing,iu2_power4,nothing,iu2_power4))")
+    |(iu1_power4,nothing,iu1_power4,nothing,iu2_power4))")

 (define_insn_reservation "power4-insert" 4
   (and (eq_attr "type" "insert_word")

Reply via email to