mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-03 09:21:02 +00:00
[AMDGPU] Add VerifyScheduling support.
Summary: This is cut and pasted from the corresponding GenericScheduler functions. Reviewers: arsenm, atrick, tstellar, vpykhtin Subscribers: MatzeB, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, javed.absar, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D68264 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@373346 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3a01de298f
commit
303c51ac63
@ -100,6 +100,7 @@ namespace llvm {
|
||||
|
||||
extern cl::opt<bool> ForceTopDown;
|
||||
extern cl::opt<bool> ForceBottomUp;
|
||||
extern cl::opt<bool> VerifyScheduling;
|
||||
|
||||
class LiveIntervals;
|
||||
class MachineDominatorTree;
|
||||
|
@ -82,6 +82,10 @@ cl::opt<bool>
|
||||
DumpCriticalPathLength("misched-dcpl", cl::Hidden,
|
||||
cl::desc("Print critical path length to stdout"));
|
||||
|
||||
cl::opt<bool> VerifyScheduling(
|
||||
"verify-misched", cl::Hidden,
|
||||
cl::desc("Verify machine instrs before and after machine scheduling"));
|
||||
|
||||
} // end namespace llvm
|
||||
|
||||
#ifndef NDEBUG
|
||||
@ -122,9 +126,6 @@ static cl::opt<bool> EnableMemOpCluster("misched-cluster", cl::Hidden,
|
||||
cl::desc("Enable memop clustering."),
|
||||
cl::init(true));
|
||||
|
||||
static cl::opt<bool> VerifyScheduling("verify-misched", cl::Hidden,
|
||||
cl::desc("Verify machine instrs before and after machine scheduling"));
|
||||
|
||||
// DAG subtrees must have at least this many nodes.
|
||||
static const unsigned MinSubtreeSize = 8;
|
||||
|
||||
|
@ -196,6 +196,15 @@ SUnit *GCNMaxOccupancySchedStrategy::pickNodeBidirectional(bool &IsTopNode) {
|
||||
assert(BotCand.Reason != NoCand && "failed to find the first candidate");
|
||||
} else {
|
||||
LLVM_DEBUG(traceCandidate(BotCand));
|
||||
#ifndef NDEBUG
|
||||
if (VerifyScheduling) {
|
||||
SchedCandidate TCand;
|
||||
TCand.reset(CandPolicy());
|
||||
pickNodeFromQueue(Bot, BotPolicy, DAG->getBotRPTracker(), TCand);
|
||||
assert(TCand.SU == BotCand.SU &&
|
||||
"Last pick result should correspond to re-picking right now");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// Check if the top Q has a better candidate.
|
||||
@ -207,6 +216,15 @@ SUnit *GCNMaxOccupancySchedStrategy::pickNodeBidirectional(bool &IsTopNode) {
|
||||
assert(TopCand.Reason != NoCand && "failed to find the first candidate");
|
||||
} else {
|
||||
LLVM_DEBUG(traceCandidate(TopCand));
|
||||
#ifndef NDEBUG
|
||||
if (VerifyScheduling) {
|
||||
SchedCandidate TCand;
|
||||
TCand.reset(CandPolicy());
|
||||
pickNodeFromQueue(Top, TopPolicy, DAG->getTopRPTracker(), TCand);
|
||||
assert(TCand.SU == TopCand.SU &&
|
||||
"Last pick result should correspond to re-picking right now");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// Pick best from BotCand and TopCand.
|
||||
|
Loading…
Reference in New Issue
Block a user