Skip to content

Commit 1cf9092

Browse files
authored
[MISched] Small debug improvements (#125072)
Changes: 1. Fix inconsistencies in register pressure set printing. "Max Pressure" printing is inconsistent with "Bottom Pressure" and "Top Pressure". For the former, register class begins on the same line vs newline for latter. Also for the former, the first register class is on the same line, but subsequent register classes are newline separated. That's removed so all are on the same line. Before: Max Pressure: FPR8=1 GPR32=14 Top Pressure: GPR32=2 Bottom Pressure: FPR8=7 GPR32=17 After: Max Pressure: FPR8=1 GPR32=14 Top Pressure: GPR32=2 Bottom Pressure: FPR8=7 GPR32=17 2. After scheduling an instruction, don't print pressure diff if there isn't one. Also s/UpdateRegP/UpdateRegPressure. E.g., Before: UpdateRegP: SU(3) %0:gpr64common = ADDXrr %58:gpr64common, gpr64 to UpdateRegP: SU(4) %393:gpr64sp = ADDXri %58:gpr64common, 390, 12 to GPR32 -1 After: UpdateRegPressure: SU(4) %393:gpr64sp = ADDXri %58:gpr64common, 12 to GPR32 -1 3. Don't print excess pressure sets if there are none.
1 parent ad152f4 commit 1cf9092

File tree

2 files changed

+29
-21
lines changed

2 files changed

+29
-21
lines changed

llvm/lib/CodeGen/MachineScheduler.cpp

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1414,9 +1414,9 @@ void ScheduleDAGMILive::initRegPressure() {
14141414
updatePressureDiffs(LiveUses);
14151415
}
14161416

1417-
LLVM_DEBUG(dbgs() << "Top Pressure:\n";
1417+
LLVM_DEBUG(dbgs() << "Top Pressure: ";
14181418
dumpRegSetPressure(TopRPTracker.getRegSetPressureAtPos(), TRI);
1419-
dbgs() << "Bottom Pressure:\n";
1419+
dbgs() << "Bottom Pressure: ";
14201420
dumpRegSetPressure(BotRPTracker.getRegSetPressureAtPos(), TRI););
14211421

14221422
assert((BotRPTracker.getPos() == RegionEnd ||
@@ -1437,11 +1437,14 @@ void ScheduleDAGMILive::initRegPressure() {
14371437
RegionCriticalPSets.push_back(PressureChange(i));
14381438
}
14391439
}
1440-
LLVM_DEBUG(dbgs() << "Excess PSets: ";
1441-
for (const PressureChange &RCPS
1442-
: RegionCriticalPSets) dbgs()
1443-
<< TRI->getRegPressureSetName(RCPS.getPSet()) << " ";
1444-
dbgs() << "\n");
1440+
LLVM_DEBUG({
1441+
if (RegionCriticalPSets.size() > 0) {
1442+
dbgs() << "Excess PSets: ";
1443+
for (const PressureChange &RCPS : RegionCriticalPSets)
1444+
dbgs() << TRI->getRegPressureSetName(RCPS.getPSet()) << " ";
1445+
dbgs() << "\n";
1446+
}
1447+
});
14451448
}
14461449

14471450
void ScheduleDAGMILive::
@@ -1495,10 +1498,14 @@ void ScheduleDAGMILive::updatePressureDiffs(ArrayRef<VRegMaskOrUnit> LiveUses) {
14951498

14961499
PressureDiff &PDiff = getPressureDiff(&SU);
14971500
PDiff.addPressureChange(Reg, Decrement, &MRI);
1498-
LLVM_DEBUG(dbgs() << " UpdateRegP: SU(" << SU.NodeNum << ") "
1499-
<< printReg(Reg, TRI) << ':'
1500-
<< PrintLaneMask(P.LaneMask) << ' ' << *SU.getInstr();
1501-
dbgs() << " to "; PDiff.dump(*TRI););
1501+
if (llvm::any_of(PDiff, [](const PressureChange &Change) {
1502+
return Change.isValid();
1503+
}))
1504+
LLVM_DEBUG(dbgs()
1505+
<< " UpdateRegPressure: SU(" << SU.NodeNum << ") "
1506+
<< printReg(Reg, TRI) << ':'
1507+
<< PrintLaneMask(P.LaneMask) << ' ' << *SU.getInstr();
1508+
dbgs() << " to "; PDiff.dump(*TRI););
15021509
}
15031510
} else {
15041511
assert(P.LaneMask.any());
@@ -1530,9 +1537,13 @@ void ScheduleDAGMILive::updatePressureDiffs(ArrayRef<VRegMaskOrUnit> LiveUses) {
15301537
if (LRQ.valueIn() == VNI) {
15311538
PressureDiff &PDiff = getPressureDiff(SU);
15321539
PDiff.addPressureChange(Reg, true, &MRI);
1533-
LLVM_DEBUG(dbgs() << " UpdateRegP: SU(" << SU->NodeNum << ") "
1534-
<< *SU->getInstr();
1535-
dbgs() << " to "; PDiff.dump(*TRI););
1540+
if (llvm::any_of(PDiff, [](const PressureChange &Change) {
1541+
return Change.isValid();
1542+
}))
1543+
LLVM_DEBUG(dbgs() << " UpdateRegPressure: SU(" << SU->NodeNum
1544+
<< ") " << *SU->getInstr();
1545+
dbgs() << " to ";
1546+
PDiff.dump(*TRI););
15361547
}
15371548
}
15381549
}
@@ -1792,7 +1803,7 @@ void ScheduleDAGMILive::scheduleMI(SUnit *SU, bool IsTopNode) {
17921803

17931804
TopRPTracker.advance(RegOpers);
17941805
assert(TopRPTracker.getPos() == CurrentTop && "out of sync");
1795-
LLVM_DEBUG(dbgs() << "Top Pressure:\n"; dumpRegSetPressure(
1806+
LLVM_DEBUG(dbgs() << "Top Pressure: "; dumpRegSetPressure(
17961807
TopRPTracker.getRegSetPressureAtPos(), TRI););
17971808

17981809
updateScheduledPressure(SU, TopRPTracker.getPressure().MaxSetPressure);
@@ -1830,7 +1841,7 @@ void ScheduleDAGMILive::scheduleMI(SUnit *SU, bool IsTopNode) {
18301841
SmallVector<VRegMaskOrUnit, 8> LiveUses;
18311842
BotRPTracker.recede(RegOpers, &LiveUses);
18321843
assert(BotRPTracker.getPos() == CurrentBottom && "out of sync");
1833-
LLVM_DEBUG(dbgs() << "Bottom Pressure:\n"; dumpRegSetPressure(
1844+
LLVM_DEBUG(dbgs() << "Bottom Pressure: "; dumpRegSetPressure(
18341845
BotRPTracker.getRegSetPressureAtPos(), TRI););
18351846

18361847
updateScheduledPressure(SU, BotRPTracker.getPressure().MaxSetPressure);

llvm/lib/CodeGen/RegisterPressure.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,12 @@ static void decreaseSetPressure(std::vector<unsigned> &CurrSetPressure,
7979
LLVM_DUMP_METHOD
8080
void llvm::dumpRegSetPressure(ArrayRef<unsigned> SetPressure,
8181
const TargetRegisterInfo *TRI) {
82-
bool Empty = true;
8382
for (unsigned i = 0, e = SetPressure.size(); i < e; ++i) {
8483
if (SetPressure[i] != 0) {
85-
dbgs() << TRI->getRegPressureSetName(i) << "=" << SetPressure[i] << '\n';
86-
Empty = false;
84+
dbgs() << TRI->getRegPressureSetName(i) << "=" << SetPressure[i] << ' ';
8785
}
8886
}
89-
if (Empty)
90-
dbgs() << "\n";
87+
dbgs() << "\n";
9188
}
9289

9390
LLVM_DUMP_METHOD

0 commit comments

Comments
 (0)