summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Trick <atrick@apple.com>2013-07-19 00:20:07 +0000
committerAndrew Trick <atrick@apple.com>2013-07-19 00:20:07 +0000
commit4e3898056e1aaa8eaaf829cda578651667878843 (patch)
tree52d0f7813e6c2c62ad9dc508493a4d25fcfdbca9
parentd639206676eef801a092fc3b79bdd1700090e18f (diff)
downloadllvm-4e3898056e1aaa8eaaf829cda578651667878843.tar.gz
llvm-4e3898056e1aaa8eaaf829cda578651667878843.tar.bz2
llvm-4e3898056e1aaa8eaaf829cda578651667878843.tar.xz
MI Sched: Update the way resources are tracked so the current heuristics make more sense.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186632 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/CodeGen/MachineScheduler.cpp12
1 files changed, 5 insertions, 7 deletions
diff --git a/lib/CodeGen/MachineScheduler.cpp b/lib/CodeGen/MachineScheduler.cpp
index ad55a77a49..314f621c09 100644
--- a/lib/CodeGen/MachineScheduler.cpp
+++ b/lib/CodeGen/MachineScheduler.cpp
@@ -1253,7 +1253,7 @@ public:
// Count scheduled resources that have been executed. Resources are
// considered executed if they become ready in the time that it takes to
// saturate any resource including the one in question. Counts are scaled
- // for direct comparison with other resources. Counts ca be compared with
+ // for direct comparison with other resources. Counts can be compared with
// MOps * getMicroOpFactor and Latency * getLatencyFactor.
SmallVector<unsigned, 16> ExecutedResCounts;
@@ -1658,7 +1658,7 @@ void ConvergingScheduler::SchedBoundary::setPolicy(CandPolicy &Policy,
<< Rem->CriticalPath << "\n");
}
// If the same resource is limiting inside and outside the zone, do nothing.
- if (IsResourceLimited && OtherResLimited && (ZoneCritResIdx == OtherCritIdx))
+ if (ZoneCritResIdx == OtherCritIdx)
return;
DEBUG(
@@ -1760,11 +1760,9 @@ countResource(unsigned PIdx, unsigned Cycles, unsigned ReadyCycle) {
assert(Rem->RemainingCounts[PIdx] >= Count && "resource double counted");
Rem->RemainingCounts[PIdx] -= Count;
- // Check if this resource exceeds the current critical resource by a full
- // cycle. If so, it becomes the critical resource.
- if (ZoneCritResIdx != PIdx
- && ((int)(getResourceCount(PIdx) - getCriticalCount())
- >= (int)SchedModel->getLatencyFactor())) {
+ // Check if this resource exceeds the current critical resource. If so, it
+ // becomes the critical resource.
+ if (ZoneCritResIdx != PIdx && (getResourceCount(PIdx) > getCriticalCount())) {
ZoneCritResIdx = PIdx;
DEBUG(dbgs() << " *** Critical resource "
<< getResourceName(PIdx) << ": "