diff options
author | Francesco Petrogalli <francesco.petrogalli@apple.com> | 2023-06-20 11:42:01 +0200 |
---|---|---|
committer | Francesco Petrogalli <francesco.petrogalli@apple.com> | 2023-06-20 11:46:27 +0200 |
commit | 37db9cae2bc0d26d8f3f19750739ca0a636f3a29 (patch) | |
tree | 6630e91cd039e87eb66529c31d912355fb628e0c /llvm/lib/CodeGen/MachineScheduler.cpp | |
parent | 25f8b1a0a812717ecf095761dd6c7d6601408a1c (diff) | |
download | llvm-37db9cae2bc0d26d8f3f19750739ca0a636f3a29.zip llvm-37db9cae2bc0d26d8f3f19750739ca0a636f3a29.tar.gz llvm-37db9cae2bc0d26d8f3f19750739ca0a636f3a29.tar.bz2 |
[llc][MISched] Add `-misched-detail-resource-booking` to llc.
The option `-misched-detail-resource-booking` prints the following
information every time the method
`SchedBoundary::getNextResourceCycle` is invoked:
1. counters of the resources that have already been booked;
2. the values returned by `getNextResourceCycle`, which is the next
available cycle in which a resource can be booked.
The method is useful to debug low-level checks inside the machine
scheduler that make decisions based on the values returned by
`getNextResourceCycle`.
Reviewed By: andreadb
Differential Revision: https://reviews.llvm.org/D153116
Diffstat (limited to 'llvm/lib/CodeGen/MachineScheduler.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineScheduler.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/MachineScheduler.cpp b/llvm/lib/CodeGen/MachineScheduler.cpp index 28b17f7..ed5dff7 100644 --- a/llvm/lib/CodeGen/MachineScheduler.cpp +++ b/llvm/lib/CodeGen/MachineScheduler.cpp @@ -98,9 +98,13 @@ cl::opt<bool> PrintDAGs("misched-print-dags", cl::Hidden, cl::opt<bool> MISchedDumpReservedCycles( "misched-dump-reserved-cycles", cl::Hidden, cl::init(false), cl::desc("Dump resource usage at schedule boundary.")); +cl::opt<bool> MischedDetailResourceBooking( + "misched-detail-resource-booking", cl::Hidden, cl::init(false), + cl::desc("Show details of invoking getNextResoufceCycle.")); #else const bool ViewMISchedDAGs = false; const bool PrintDAGs = false; +const bool MischedDetailResourceBooking = false; #ifdef LLVM_ENABLE_DUMP const bool MISchedDumpReservedCycles = false; #endif // LLVM_ENABLE_DUMP @@ -2314,7 +2318,11 @@ unsigned SchedBoundary::getNextResourceCycleByInstance(unsigned InstanceIdx, std::pair<unsigned, unsigned> SchedBoundary::getNextResourceCycle(const MCSchedClassDesc *SC, unsigned PIdx, unsigned Cycles, unsigned StartAtCycle) { - + if (MischedDetailResourceBooking) { + LLVM_DEBUG(dbgs() << " Resource booking (@" << CurrCycle << "c): \n"); + LLVM_DEBUG(dumpReservedCycles()); + LLVM_DEBUG(dbgs() << " getNextResourceCycle (@" << CurrCycle << "c): \n"); + } unsigned MinNextUnreserved = InvalidCycle; unsigned InstanceIdx = 0; unsigned StartIndex = ReservedCyclesIndex[PIdx]; @@ -2355,11 +2363,19 @@ SchedBoundary::getNextResourceCycle(const MCSchedClassDesc *SC, unsigned PIdx, ++I) { unsigned NextUnreserved = getNextResourceCycleByInstance(I, Cycles, StartAtCycle); + if (MischedDetailResourceBooking) + LLVM_DEBUG(dbgs() << " Instance " << I - StartIndex << " available @" + << NextUnreserved << "c\n"); if (MinNextUnreserved > NextUnreserved) { InstanceIdx = I; MinNextUnreserved = NextUnreserved; } } + if (MischedDetailResourceBooking) + LLVM_DEBUG(dbgs() << " selecting " << SchedModel->getResourceName(PIdx) + << "[" << InstanceIdx - StartIndex << "]" + << " available @" << MinNextUnreserved << "c" + << "\n"); return std::make_pair(MinNextUnreserved, InstanceIdx); } |