summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2001-03-01 14:25:30 +0000
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2001-03-01 14:25:30 +0000
commit8de12924a5ed51ac22986d7748499e8405669ea8 (patch)
tree80726c359bbb796183b313f2c8ba871a69680f43
parent91ef57b052f228bdcbd40f921baecc6d9cf067d6 (diff)
downloadgcc-8de12924a5ed51ac22986d7748499e8405669ea8.tar.gz
Rotate bundles earlier in ia64_sched_reorder
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40157 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog1
-rw-r--r--gcc/config/ia64/ia64.c18
2 files changed, 10 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c72d69ed0fa..0247ae2b117 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -5,6 +5,7 @@
(gen_nop_type): New function.
(ia64_emit_nops): New function.
(ia64_reorg): Call it.
+ (ia64_sched_reorder): Move code that rotates bundles up a bit.
* reload1.c (eliminate_regs_in_insn): Restrict the special case
code not to try to optimize adds with anything but a REG destination.
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index 1b49a5cd60b..2b72959bdbb 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -5665,6 +5665,15 @@ ia64_sched_reorder (dump, sched_verbose, ready, pn_ready, reorder_type)
dump_current_packet (dump);
}
+ if (reorder_type == 0)
+ {
+ if (sched_data.cur == 6)
+ rotate_two_bundles (sched_verbose ? dump : NULL);
+ else if (sched_data.cur >= 3)
+ rotate_one_bundle (sched_verbose ? dump : NULL);
+ sched_data.first_slot = sched_data.cur;
+ }
+
/* First, move all USEs, CLOBBERs and other crud out of the way. */
highest = ready[n_ready - 1];
for (insnp = ready; insnp < e_ready; insnp++)
@@ -5738,15 +5747,6 @@ ia64_sched_reorder (dump, sched_verbose, ready, pn_ready, reorder_type)
}
}
- if (reorder_type == 0)
- {
- if (sched_data.cur == 6)
- rotate_two_bundles (sched_verbose ? dump : NULL);
- else if (sched_data.cur >= 3)
- rotate_one_bundle (sched_verbose ? dump : NULL);
- sched_data.first_slot = sched_data.cur;
- }
-
return itanium_reorder (sched_verbose ? dump : NULL,
ready, e_ready, reorder_type == 1);
}