aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1994-01-31 12:43:02 -0800
committerJim Wilson <wilson@gcc.gnu.org>1994-01-31 12:43:02 -0800
commitcb1520bc9f130b2a3fd61667af0468b7792d7b66 (patch)
treec060327dd8273d80e7f1a8eb9750da5fdbec9fe2
parent8cfaf7a7bb282218e66657cb6655e38cea76d3c0 (diff)
downloadgcc-cb1520bc9f130b2a3fd61667af0468b7792d7b66.zip
gcc-cb1520bc9f130b2a3fd61667af0468b7792d7b66.tar.gz
gcc-cb1520bc9f130b2a3fd61667af0468b7792d7b66.tar.bz2
(expand_units): When calculate BLOCKAGE, reverse terms to POS_MINUS_OP.
(expand_units): When calculate BLOCKAGE, reverse terms to POS_MINUS_OP. Clarify comment before BLOCKAGE computation. (write_complex_function): Use EXECUTING_INSN for first switch, and CANDIDATE_INSN for second switch. From-SVN: r6442
-rw-r--r--gcc/genattrtab.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/genattrtab.c b/gcc/genattrtab.c
index 7e93348..865c0e7 100644
--- a/gcc/genattrtab.c
+++ b/gcc/genattrtab.c
@@ -1954,6 +1954,10 @@ expand_units ()
candidate insn, so in the expressions below, C is a known
term and E is an unknown term.
+ We compute the blockage cost for each E for every possible C.
+ Thus OP represents E, and READYCOST is a list of values for
+ every possible C.
+
The issue delay function for C is op->issue_exp and is used to
write the `<name>_unit_conflict_cost' function. Symbolicly
this is "ISSUE-DELAY (E,C)".
@@ -1995,8 +1999,8 @@ expand_units ()
* unit->issue_delay.min));
if (delay > 0)
- blockage = operate_exp (POS_MINUS_OP, blockage,
- make_numeric_value (delay));
+ blockage = operate_exp (POS_MINUS_OP,
+ make_numeric_value (delay), blockage);
blockage = operate_exp (MAX_OP, blockage, op->issue_exp);
blockage = simplify_knowing (blockage, unit->condexp);
@@ -5114,7 +5118,7 @@ write_complex_function (unit, name, connection)
printf ("{\n");
printf (" rtx insn;\n");
printf (" int casenum;\n\n");
- printf (" insn = candidate_insn;\n");
+ printf (" insn = executing_insn;\n");
printf (" switch (recog_memoized (insn))\n");
printf (" {\n");
@@ -5136,7 +5140,7 @@ write_complex_function (unit, name, connection)
/* Now write an outer switch statement on each case. Then write
the tests on the executing function within each. */
- printf (" insn = executing_insn;\n");
+ printf (" insn = candidate_insn;\n");
printf (" switch (casenum)\n");
printf (" {\n");