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
This commit is contained in:
parent
f83594c41c
commit
b395ddbee5
2 changed files with 33 additions and 17 deletions
|
@ -1,5 +1,8 @@
|
|||
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];
|
||||
|
||||
/* 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);
|
||||
|
||||
/* 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 (PATTERN (stop), 0, 0) = GEN_INT (3);
|
||||
|
||||
sched_data.stopbit[0] = 0;
|
||||
sched_data.stopbit[2] = 1;
|
||||
if (GET_CODE (stop) != INSN)
|
||||
abort ();
|
||||
|
||||
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)
|
||||
abort ();
|
||||
XVECEXP (pat, 0, 0) = GEN_INT (3);
|
||||
|
||||
sched_data.types[5] = sched_data.types[3];
|
||||
sched_data.types[4] = sched_data.types[2];
|
||||
|
|
Loading…
Add table
Reference in a new issue