(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
This commit is contained in:
parent
8cfaf7a7bb
commit
cb1520bc9f
@ -1954,6 +1954,10 @@ expand_units ()
|
|||||||
candidate insn, so in the expressions below, C is a known
|
candidate insn, so in the expressions below, C is a known
|
||||||
term and E is an unknown term.
|
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
|
The issue delay function for C is op->issue_exp and is used to
|
||||||
write the `<name>_unit_conflict_cost' function. Symbolicly
|
write the `<name>_unit_conflict_cost' function. Symbolicly
|
||||||
this is "ISSUE-DELAY (E,C)".
|
this is "ISSUE-DELAY (E,C)".
|
||||||
@ -1995,8 +1999,8 @@ expand_units ()
|
|||||||
* unit->issue_delay.min));
|
* unit->issue_delay.min));
|
||||||
|
|
||||||
if (delay > 0)
|
if (delay > 0)
|
||||||
blockage = operate_exp (POS_MINUS_OP, blockage,
|
blockage = operate_exp (POS_MINUS_OP,
|
||||||
make_numeric_value (delay));
|
make_numeric_value (delay), blockage);
|
||||||
|
|
||||||
blockage = operate_exp (MAX_OP, blockage, op->issue_exp);
|
blockage = operate_exp (MAX_OP, blockage, op->issue_exp);
|
||||||
blockage = simplify_knowing (blockage, unit->condexp);
|
blockage = simplify_knowing (blockage, unit->condexp);
|
||||||
@ -5114,7 +5118,7 @@ write_complex_function (unit, name, connection)
|
|||||||
printf ("{\n");
|
printf ("{\n");
|
||||||
printf (" rtx insn;\n");
|
printf (" rtx insn;\n");
|
||||||
printf (" int casenum;\n\n");
|
printf (" int casenum;\n\n");
|
||||||
printf (" insn = candidate_insn;\n");
|
printf (" insn = executing_insn;\n");
|
||||||
printf (" switch (recog_memoized (insn))\n");
|
printf (" switch (recog_memoized (insn))\n");
|
||||||
printf (" {\n");
|
printf (" {\n");
|
||||||
|
|
||||||
@ -5136,7 +5140,7 @@ write_complex_function (unit, name, connection)
|
|||||||
|
|
||||||
/* Now write an outer switch statement on each case. Then write
|
/* Now write an outer switch statement on each case. Then write
|
||||||
the tests on the executing function within each. */
|
the tests on the executing function within each. */
|
||||||
printf (" insn = executing_insn;\n");
|
printf (" insn = candidate_insn;\n");
|
||||||
printf (" switch (casenum)\n");
|
printf (" switch (casenum)\n");
|
||||||
printf (" {\n");
|
printf (" {\n");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user