mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-02 00:37:09 +00:00
MachineScheduler: Add regpressure information to debug dump
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252340 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bc78f60f4a
commit
810bd4f219
@ -989,15 +989,21 @@ void ScheduleDAGMILive::updatePressureDiffs(ArrayRef<unsigned> LiveUses) {
|
||||
for (const VReg2SUnit &V2SU
|
||||
: make_range(VRegUses.find(Reg), VRegUses.end())) {
|
||||
SUnit *SU = V2SU.SU;
|
||||
DEBUG(dbgs() << " UpdateRegP: SU(" << SU->NodeNum << ") "
|
||||
<< *SU->getInstr());
|
||||
// If this use comes before the reaching def, it cannot be a last use, so
|
||||
// descrease its pressure change.
|
||||
if (!SU->isScheduled && SU != &ExitSU) {
|
||||
LiveQueryResult LRQ
|
||||
= LI.Query(LIS->getInstructionIndex(SU->getInstr()));
|
||||
if (LRQ.valueIn() == VNI)
|
||||
getPressureDiff(SU).addPressureChange(Reg, true, &MRI);
|
||||
if (LRQ.valueIn() == VNI) {
|
||||
PressureDiff &PDiff = getPressureDiff(SU);
|
||||
PDiff.addPressureChange(Reg, true, &MRI);
|
||||
DEBUG(
|
||||
dbgs() << " UpdateRegP: SU(" << SU->NodeNum << ") "
|
||||
<< *SU->getInstr();
|
||||
dbgs() << " to ";
|
||||
PDiff.dump(*TRI);
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1029,8 +1035,16 @@ void ScheduleDAGMILive::schedule() {
|
||||
// This may initialize a DFSResult to be used for queue priority.
|
||||
SchedImpl->initialize(this);
|
||||
|
||||
DEBUG(for (unsigned su = 0, e = SUnits.size(); su != e; ++su)
|
||||
SUnits[su].dumpAll(this));
|
||||
DEBUG(
|
||||
for (const SUnit &SU : SUnits) {
|
||||
SU.dumpAll(this);
|
||||
if (ShouldTrackPressure) {
|
||||
dbgs() << " Pressure Diff : ";
|
||||
getPressureDiff(&SU).dump(*TRI);
|
||||
}
|
||||
dbgs() << '\n';
|
||||
}
|
||||
);
|
||||
if (ViewMISchedDAGs) viewGraph();
|
||||
|
||||
// Initialize ready queues now that the DAG and priority data are finalized.
|
||||
@ -1220,6 +1234,11 @@ void ScheduleDAGMILive::scheduleMI(SUnit *SU, bool IsTopNode) {
|
||||
// Update top scheduled pressure.
|
||||
TopRPTracker.advance();
|
||||
assert(TopRPTracker.getPos() == CurrentTop && "out of sync");
|
||||
DEBUG(
|
||||
dbgs() << "Top Pressure:\n";
|
||||
dumpRegSetPressure(TopRPTracker.getRegSetPressureAtPos(), TRI);
|
||||
);
|
||||
|
||||
updateScheduledPressure(SU, TopRPTracker.getPressure().MaxSetPressure);
|
||||
}
|
||||
}
|
||||
@ -1242,6 +1261,11 @@ void ScheduleDAGMILive::scheduleMI(SUnit *SU, bool IsTopNode) {
|
||||
SmallVector<unsigned, 8> LiveUses;
|
||||
BotRPTracker.recede(&LiveUses);
|
||||
assert(BotRPTracker.getPos() == CurrentBottom && "out of sync");
|
||||
DEBUG(
|
||||
dbgs() << "Bottom Pressure:\n";
|
||||
dumpRegSetPressure(BotRPTracker.getRegSetPressureAtPos(), TRI);
|
||||
);
|
||||
|
||||
updateScheduledPressure(SU, BotRPTracker.getPressure().MaxSetPressure);
|
||||
updatePressureDiffs(LiveUses);
|
||||
}
|
||||
|
@ -399,8 +399,12 @@ void SchedulePostRATDList::schedule() {
|
||||
}
|
||||
|
||||
DEBUG(dbgs() << "********** List Scheduling **********\n");
|
||||
DEBUG(for (unsigned su = 0, e = SUnits.size(); su != e; ++su)
|
||||
SUnits[su].dumpAll(this));
|
||||
DEBUG(
|
||||
for (const SUnit &SU : SUnits) {
|
||||
SU.dumpAll(this);
|
||||
dbgs() << '\n';
|
||||
}
|
||||
);
|
||||
|
||||
AvailableQueue.initNodes(SUnits);
|
||||
ListScheduleTopDown();
|
||||
|
@ -372,7 +372,6 @@ void SUnit::dumpAll(const ScheduleDAG *G) const {
|
||||
dbgs() << "\n";
|
||||
}
|
||||
}
|
||||
dbgs() << "\n";
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user