Commit b395ddbe by Richard Henderson Committed by Richard Henderson

ia64.c (ia64_sched_reorder2): Also skip past pred_rel_mutex when searching for insn_group_barrier.

        * config/ia64/ia64.c (ia64_sched_reorder2): Also skip past
        pred_rel_mutex when searching for insn_group_barrier.

From-SVN: r45019
parent f83594c4
2001-08-18 Richard Henderson <rth@redhat.com>
* config/ia64/ia64.c (ia64_sched_reorder2): Also skip past
pred_rel_mutex when searching for insn_group_barrier.
* config/ia64/ia64.c (ia64_internal_sched_reorder): Emit stop
bit before asm as needed.
......
......@@ -6211,30 +6211,43 @@ ia64_sched_reorder2 (dump, sched_verbose, ready, pn_ready, clock_var)
&& (sched_data.types[2] == TYPE_I || sched_data.types[2] == TYPE_A)
&& (sched_data.types[3] != TYPE_M && sched_data.types[3] != TYPE_A))
|| (sched_data.cur == 3
&& (sched_data.types[1] == TYPE_M || sched_data.types[1] == TYPE_A)
&& (sched_data.types[2] != TYPE_M && sched_data.types[2] != TYPE_I
&& (sched_data.types[1] == TYPE_M
|| sched_data.types[1] == TYPE_A)
&& (sched_data.types[2] != TYPE_M
&& sched_data.types[2] != TYPE_I
&& sched_data.types[2] != TYPE_A))))
{
int i, best;
rtx stop = PREV_INSN (sched_data.insns[1]);
rtx pat;
rtx stop = sched_data.insns[1];
sched_data.stopbit[0] = 0;
sched_data.stopbit[2] = 1;
if (GET_CODE (stop) != INSN)
abort ();
/* Search backward for the stop bit that must be there. */
while (1)
{
int insn_code;
stop = PREV_INSN (stop);
if (GET_CODE (stop) != INSN)
abort ();
insn_code = recog_memoized (stop);
pat = PATTERN (stop);
/* Ignore cycle displays. */
if (GET_CODE (pat) == UNSPEC && XINT (pat, 1) == 23)
stop = PREV_INSN (stop);
pat = PATTERN (stop);
if (GET_CODE (pat) != UNSPEC_VOLATILE
|| XINT (pat, 1) != 2
|| INTVAL (XVECEXP (pat, 0, 0)) != 1)
/* Ignore cycle displays and .pred.rel.mutex. */
if (insn_code == CODE_FOR_cycle_display
|| insn_code == CODE_FOR_pred_rel_mutex)
continue;
if (insn_code == CODE_FOR_insn_group_barrier)
break;
abort ();
}
/* Adjust the stop bit's slot selector. */
if (INTVAL (XVECEXP (PATTERN (stop), 0, 0)) != 1)
abort ();
XVECEXP (pat, 0, 0) = GEN_INT (3);
XVECEXP (PATTERN (stop), 0, 0) = GEN_INT (3);
sched_data.stopbit[0] = 0;
sched_data.stopbit[2] = 1;
sched_data.types[5] = sched_data.types[3];
sched_data.types[4] = sched_data.types[2];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment