aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@gcc.gnu.org>1998-08-26 11:47:42 -0700
committerRichard Henderson <rth@gcc.gnu.org>1998-08-26 11:47:42 -0700
commit4bdc8810f6b2233b34b51c1491d9b70fad203e8d (patch)
treea18467d7258d14485ecc64dfbc4054a3ff3c0202 /gcc
parent425c08a151458c1c44c27d191ef8d46756980b06 (diff)
downloadgcc-4bdc8810f6b2233b34b51c1491d9b70fad203e8d.zip
gcc-4bdc8810f6b2233b34b51c1491d9b70fad203e8d.tar.gz
gcc-4bdc8810f6b2233b34b51c1491d9b70fad203e8d.tar.bz2
haifa-sched.c (last_clock_var): New.
* haifa-sched.c (last_clock_var): New. (schedule_block): Initialize it. (schedule_insn): Use it to fill insn modes with issue information. From-SVN: r22009
Diffstat (limited to 'gcc')
-rw-r--r--gcc/haifa-sched.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index 12e82d6..7a26a6a 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -4279,6 +4279,9 @@ adjust_priority (prev)
}
}
+/* Clock at which the previous instruction was issued. */
+static int last_clock_var;
+
/* INSN is the "currently executing insn". Launch each insn which was
waiting on INSN. READY is a vector of insns which are ready to fire.
N_READY is the number of elements in READY. CLOCK is the current
@@ -4363,6 +4366,17 @@ schedule_insn (insn, ready, n_ready, clock)
}
}
+ /* Annotate the instruction with issue information -- TImode
+ indicates that the instruction is expected not to be able
+ to issue on the same cycle as the previous insn. A machine
+ may use this information to decide how the instruction should
+ be aligned. */
+ if (reload_completed && issue_rate > 1)
+ {
+ PUT_MODE (insn, clock > last_clock_var ? TImode : VOIDmode);
+ last_clock_var = clock;
+ }
+
return n_ready;
}
@@ -6739,6 +6753,7 @@ schedule_block (bb, rgn_n_insns)
q_ptr = 0;
q_size = 0;
clock_var = 0;
+ last_clock_var = 0;
bzero ((char *) insn_queue, sizeof (insn_queue));
/* We start inserting insns after PREV_HEAD. */