aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/CodeGen/LatencyPriorityQueue.h
diff options
context:
space:
mode:
authorDavid Goodwin <david_goodwin@apple.com>2009-11-03 20:57:50 +0000
committerDavid Goodwin <david_goodwin@apple.com>2009-11-03 20:57:50 +0000
commit4de099d8ca651e00fa5fac22bace4f4dba2d0292 (patch)
tree0a1c30be2310b064e895f5c841350c72773580a9 /include/llvm/CodeGen/LatencyPriorityQueue.h
parentabf67ef548c257526d2f5f71521ddc8420784ac1 (diff)
Do a scheduling pass ignoring anti-dependencies to identify candidate registers that should be renamed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85939 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/LatencyPriorityQueue.h')
-rw-r--r--include/llvm/CodeGen/LatencyPriorityQueue.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/include/llvm/CodeGen/LatencyPriorityQueue.h b/include/llvm/CodeGen/LatencyPriorityQueue.h
index 71fae2aeab..a7cebee606 100644
--- a/include/llvm/CodeGen/LatencyPriorityQueue.h
+++ b/include/llvm/CodeGen/LatencyPriorityQueue.h
@@ -39,12 +39,21 @@ namespace llvm {
/// predecessor for. This is used as a tie-breaker heuristic for better
/// mobility.
std::vector<unsigned> NumNodesSolelyBlocking;
-
+
+ /// IgnoreAntiDep - Ignore anti-dependencies
+ bool IgnoreAntiDep;
+
+ /// Queue - The queue.
PriorityQueue<SUnit*, std::vector<SUnit*>, latency_sort> Queue;
+
public:
- LatencyPriorityQueue() : Queue(latency_sort(this)) {
+ LatencyPriorityQueue() : IgnoreAntiDep(false), Queue(latency_sort(this)) {
}
-
+
+ void setIgnoreAntiDep(bool ignore) {
+ IgnoreAntiDep = ignore;
+ }
+
void initNodes(std::vector<SUnit> &sunits) {
SUnits = &sunits;
NumNodesSolelyBlocking.resize(SUnits->size(), 0);
@@ -63,7 +72,7 @@ public:
unsigned getLatency(unsigned NodeNum) const {
assert(NodeNum < (*SUnits).size());
- return (*SUnits)[NodeNum].getHeight();
+ return (*SUnits)[NodeNum].getHeight(IgnoreAntiDep);
}
unsigned getNumSolelyBlockNodes(unsigned NodeNum) const {