|
@@ -270,8 +270,8 @@ LLVM_DUMP_METHOD void PHILinearize::dump(MachineRegisterInfo *MRI) {
|
|
|
dbgs() << "Dest: " << printReg(Element.DestReg, TRI)
|
|
|
<< " Sources: {";
|
|
|
for (auto &SI : Element.Sources) {
|
|
|
- dbgs() << printReg(SI.first, TRI) << "(BB#"
|
|
|
- << SI.second->getNumber() << "),";
|
|
|
+ dbgs() << printReg(SI.first, TRI) << '(' << printMBBReference(*SI.second)
|
|
|
+ << "),";
|
|
|
}
|
|
|
dbgs() << "}\n";
|
|
|
}
|
|
@@ -658,7 +658,7 @@ RegionMRT *MRT::buildMRT(MachineFunction &MF,
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- DEBUG(dbgs() << "Visiting BB#" << MBB->getNumber() << "\n");
|
|
|
+ DEBUG(dbgs() << "Visiting " << printMBBReference(*MBB) << "\n");
|
|
|
MBBMRT *NewMBB = new MBBMRT(MBB);
|
|
|
MachineRegion *Region = RegionInfo->getRegionFor(MBB);
|
|
|
|
|
@@ -705,7 +705,7 @@ void LinearizedRegion::storeLiveOutReg(MachineBasicBlock *MBB, unsigned Reg,
|
|
|
// If this is live out of the MBB
|
|
|
for (auto &UI : MRI->use_operands(Reg)) {
|
|
|
if (UI.getParent()->getParent() != MBB) {
|
|
|
- DEBUG(dbgs() << "Add LiveOut (MBB BB#" << MBB->getNumber()
|
|
|
+ DEBUG(dbgs() << "Add LiveOut (MBB " << printMBBReference(*MBB)
|
|
|
<< "): " << printReg(Reg, TRI) << "\n");
|
|
|
addLiveOut(Reg);
|
|
|
} else {
|
|
@@ -749,7 +749,8 @@ void LinearizedRegion::storeLiveOuts(MachineBasicBlock *MBB,
|
|
|
const MachineRegisterInfo *MRI,
|
|
|
const TargetRegisterInfo *TRI,
|
|
|
PHILinearize &PHIInfo) {
|
|
|
- DEBUG(dbgs() << "-Store Live Outs Begin (BB#" << MBB->getNumber() << ")-\n");
|
|
|
+ DEBUG(dbgs() << "-Store Live Outs Begin (" << printMBBReference(*MBB)
|
|
|
+ << ")-\n");
|
|
|
for (auto &II : *MBB) {
|
|
|
for (auto &RI : II.defs()) {
|
|
|
storeLiveOutReg(MBB, RI.getReg(), RI.getParent(), MRI, TRI, PHIInfo);
|
|
@@ -773,8 +774,8 @@ void LinearizedRegion::storeLiveOuts(MachineBasicBlock *MBB,
|
|
|
for (int i = 0; i < numPreds; ++i) {
|
|
|
if (getPHIPred(PHI, i) == MBB) {
|
|
|
unsigned PHIReg = getPHISourceReg(PHI, i);
|
|
|
- DEBUG(dbgs() << "Add LiveOut (PhiSource BB#" << MBB->getNumber()
|
|
|
- << " -> BB#" << (*SI)->getNumber()
|
|
|
+ DEBUG(dbgs() << "Add LiveOut (PhiSource " << printMBBReference(*MBB)
|
|
|
+ << " -> " << printMBBReference(*(*SI))
|
|
|
<< "): " << printReg(PHIReg, TRI) << "\n");
|
|
|
addLiveOut(PHIReg);
|
|
|
}
|
|
@@ -1480,8 +1481,8 @@ bool AMDGPUMachineCFGStructurizer::shrinkPHI(MachineInstr &PHI,
|
|
|
if (SourceMBB) {
|
|
|
MIB.addReg(CombinedSourceReg);
|
|
|
MIB.addMBB(SourceMBB);
|
|
|
- DEBUG(dbgs() << printReg(CombinedSourceReg, TRI) << ", BB#"
|
|
|
- << SourceMBB->getNumber());
|
|
|
+ DEBUG(dbgs() << printReg(CombinedSourceReg, TRI) << ", "
|
|
|
+ << printMBBReference(*SourceMBB));
|
|
|
}
|
|
|
|
|
|
for (unsigned i = 0; i < NumInputs; ++i) {
|
|
@@ -1492,8 +1493,8 @@ bool AMDGPUMachineCFGStructurizer::shrinkPHI(MachineInstr &PHI,
|
|
|
MachineBasicBlock *SourcePred = getPHIPred(PHI, i);
|
|
|
MIB.addReg(SourceReg);
|
|
|
MIB.addMBB(SourcePred);
|
|
|
- DEBUG(dbgs() << printReg(SourceReg, TRI) << ", BB#"
|
|
|
- << SourcePred->getNumber());
|
|
|
+ DEBUG(dbgs() << printReg(SourceReg, TRI) << ", "
|
|
|
+ << printMBBReference(*SourcePred));
|
|
|
}
|
|
|
DEBUG(dbgs() << ")\n");
|
|
|
}
|
|
@@ -1524,8 +1525,8 @@ void AMDGPUMachineCFGStructurizer::replacePHI(
|
|
|
getPHIDestReg(PHI));
|
|
|
MIB.addReg(CombinedSourceReg);
|
|
|
MIB.addMBB(LastMerge);
|
|
|
- DEBUG(dbgs() << printReg(CombinedSourceReg, TRI) << ", BB#"
|
|
|
- << LastMerge->getNumber());
|
|
|
+ DEBUG(dbgs() << printReg(CombinedSourceReg, TRI) << ", "
|
|
|
+ << printMBBReference(*LastMerge));
|
|
|
for (unsigned i = 0; i < NumInputs; ++i) {
|
|
|
if (isPHIRegionIndex(PHIRegionIndices, i)) {
|
|
|
continue;
|
|
@@ -1534,8 +1535,8 @@ void AMDGPUMachineCFGStructurizer::replacePHI(
|
|
|
MachineBasicBlock *SourcePred = getPHIPred(PHI, i);
|
|
|
MIB.addReg(SourceReg);
|
|
|
MIB.addMBB(SourcePred);
|
|
|
- DEBUG(dbgs() << printReg(SourceReg, TRI) << ", BB#"
|
|
|
- << SourcePred->getNumber());
|
|
|
+ DEBUG(dbgs() << printReg(SourceReg, TRI) << ", "
|
|
|
+ << printMBBReference(*SourcePred));
|
|
|
}
|
|
|
DEBUG(dbgs() << ")\n");
|
|
|
} else {
|
|
@@ -1572,8 +1573,8 @@ void AMDGPUMachineCFGStructurizer::replaceEntryPHI(
|
|
|
getPHIDestReg(PHI));
|
|
|
MIB.addReg(CombinedSourceReg);
|
|
|
MIB.addMBB(IfMBB);
|
|
|
- DEBUG(dbgs() << printReg(CombinedSourceReg, TRI) << ", BB#"
|
|
|
- << IfMBB->getNumber());
|
|
|
+ DEBUG(dbgs() << printReg(CombinedSourceReg, TRI) << ", "
|
|
|
+ << printMBBReference(*IfMBB));
|
|
|
unsigned NumInputs = getPHINumInputs(PHI);
|
|
|
for (unsigned i = 0; i < NumInputs; ++i) {
|
|
|
if (isPHIRegionIndex(PHIRegionIndices, i)) {
|
|
@@ -1583,8 +1584,8 @@ void AMDGPUMachineCFGStructurizer::replaceEntryPHI(
|
|
|
MachineBasicBlock *SourcePred = getPHIPred(PHI, i);
|
|
|
MIB.addReg(SourceReg);
|
|
|
MIB.addMBB(SourcePred);
|
|
|
- DEBUG(dbgs() << printReg(SourceReg, TRI) << ", BB#"
|
|
|
- << SourcePred->getNumber());
|
|
|
+ DEBUG(dbgs() << printReg(SourceReg, TRI) << ", "
|
|
|
+ << printMBBReference(*SourcePred));
|
|
|
}
|
|
|
DEBUG(dbgs() << ")\n");
|
|
|
PHI.eraseFromParent();
|
|
@@ -1749,11 +1750,11 @@ void AMDGPUMachineCFGStructurizer::insertMergePHI(MachineBasicBlock *IfBB,
|
|
|
if (MergeBB->succ_begin() == MergeBB->succ_end()) {
|
|
|
return;
|
|
|
}
|
|
|
- DEBUG(dbgs() << "Merge PHI (BB#" << MergeBB->getNumber()
|
|
|
+ DEBUG(dbgs() << "Merge PHI (" << printMBBReference(*MergeBB)
|
|
|
<< "): " << printReg(DestRegister, TRI) << "<def> = PHI("
|
|
|
- << printReg(IfSourceRegister, TRI) << ", BB#"
|
|
|
- << IfBB->getNumber() << printReg(CodeSourceRegister, TRI)
|
|
|
- << ", BB#" << CodeBB->getNumber() << ")\n");
|
|
|
+ << printReg(IfSourceRegister, TRI) << ", "
|
|
|
+ << printMBBReference(*IfBB) << printReg(CodeSourceRegister, TRI)
|
|
|
+ << ", " << printMBBReference(*CodeBB) << ")\n");
|
|
|
const DebugLoc &DL = MergeBB->findDebugLoc(MergeBB->begin());
|
|
|
MachineInstrBuilder MIB = BuildMI(*MergeBB, MergeBB->instr_begin(), DL,
|
|
|
TII->get(TargetOpcode::PHI), DestRegister);
|
|
@@ -1811,8 +1812,8 @@ static void removeExternalCFGEdges(MachineBasicBlock *StartMBB,
|
|
|
|
|
|
for (auto SI : Succs) {
|
|
|
std::pair<MachineBasicBlock *, MachineBasicBlock *> Edge = SI;
|
|
|
- DEBUG(dbgs() << "Removing edge: BB#" << Edge.first->getNumber() << " -> BB#"
|
|
|
- << Edge.second->getNumber() << "\n");
|
|
|
+ DEBUG(dbgs() << "Removing edge: " << printMBBReference(*Edge.first)
|
|
|
+ << " -> " << printMBBReference(*Edge.second) << "\n");
|
|
|
Edge.first->removeSuccessor(Edge.second);
|
|
|
}
|
|
|
}
|
|
@@ -1850,8 +1851,8 @@ MachineBasicBlock *AMDGPUMachineCFGStructurizer::createIfBlock(
|
|
|
if (!CodeBBEnd->isSuccessor(MergeBB))
|
|
|
CodeBBEnd->addSuccessor(MergeBB);
|
|
|
|
|
|
- DEBUG(dbgs() << "Moved MBB#" << CodeBBStart->getNumber() << " through MBB#"
|
|
|
- << CodeBBEnd->getNumber() << "\n");
|
|
|
+ DEBUG(dbgs() << "Moved " << printMBBReference(*CodeBBStart) << " through "
|
|
|
+ << printMBBReference(*CodeBBEnd) << "\n");
|
|
|
|
|
|
// If we have a single predecessor we can find a reasonable debug location
|
|
|
MachineBasicBlock *SinglePred =
|
|
@@ -2064,7 +2065,7 @@ void AMDGPUMachineCFGStructurizer::rewriteLiveOutRegs(MachineBasicBlock *IfBB,
|
|
|
// is a source block for a definition.
|
|
|
SmallVector<unsigned, 4> Sources;
|
|
|
if (PHIInfo.findSourcesFromMBB(CodeBB, Sources)) {
|
|
|
- DEBUG(dbgs() << "Inserting PHI Live Out from BB#" << CodeBB->getNumber()
|
|
|
+ DEBUG(dbgs() << "Inserting PHI Live Out from " << printMBBReference(*CodeBB)
|
|
|
<< "\n");
|
|
|
for (auto SI : Sources) {
|
|
|
unsigned DestReg;
|
|
@@ -2172,16 +2173,17 @@ void AMDGPUMachineCFGStructurizer::createEntryPHI(LinearizedRegion *CurrentRegio
|
|
|
CurrentBackedgeReg = NewBackedgeReg;
|
|
|
DEBUG(dbgs() << "Inserting backedge PHI: "
|
|
|
<< printReg(NewBackedgeReg, TRI) << "<def> = PHI("
|
|
|
- << printReg(CurrentBackedgeReg, TRI) << ", BB#"
|
|
|
- << getPHIPred(*PHIDefInstr, 0)->getNumber() << ", "
|
|
|
+ << printReg(CurrentBackedgeReg, TRI) << ", "
|
|
|
+ << printMBBReference(*getPHIPred(*PHIDefInstr, 0))
|
|
|
+ << ", "
|
|
|
<< printReg(getPHISourceReg(*PHIDefInstr, 1), TRI)
|
|
|
- << ", BB#" << (*SRI).second->getNumber());
|
|
|
+ << ", " << printMBBReference(*(*SRI).second));
|
|
|
}
|
|
|
} else {
|
|
|
MIB.addReg(SourceReg);
|
|
|
MIB.addMBB((*SRI).second);
|
|
|
- DEBUG(dbgs() << printReg(SourceReg, TRI) << ", BB#"
|
|
|
- << (*SRI).second->getNumber() << ", ");
|
|
|
+ DEBUG(dbgs() << printReg(SourceReg, TRI) << ", "
|
|
|
+ << printMBBReference(*(*SRI).second) << ", ");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -2189,8 +2191,8 @@ void AMDGPUMachineCFGStructurizer::createEntryPHI(LinearizedRegion *CurrentRegio
|
|
|
if (CurrentBackedgeReg != 0) {
|
|
|
MIB.addReg(CurrentBackedgeReg);
|
|
|
MIB.addMBB(Exit);
|
|
|
- DEBUG(dbgs() << printReg(CurrentBackedgeReg, TRI) << ", BB#"
|
|
|
- << Exit->getNumber() << ")\n");
|
|
|
+ DEBUG(dbgs() << printReg(CurrentBackedgeReg, TRI) << ", "
|
|
|
+ << printMBBReference(*Exit) << ")\n");
|
|
|
} else {
|
|
|
DEBUG(dbgs() << ")\n");
|
|
|
}
|
|
@@ -2443,11 +2445,12 @@ void AMDGPUMachineCFGStructurizer::splitLoopPHI(MachineInstr &PHI,
|
|
|
<< "<def> = PHI(");
|
|
|
MIB.addReg(PHISource);
|
|
|
MIB.addMBB(Entry);
|
|
|
- DEBUG(dbgs() << printReg(PHISource, TRI) << ", BB#" << Entry->getNumber());
|
|
|
+ DEBUG(dbgs() << printReg(PHISource, TRI) << ", "
|
|
|
+ << printMBBReference(*Entry));
|
|
|
MIB.addReg(RegionSourceReg);
|
|
|
MIB.addMBB(RegionSourceMBB);
|
|
|
- DEBUG(dbgs() << " ," << printReg(RegionSourceReg, TRI) << ", BB#"
|
|
|
- << RegionSourceMBB->getNumber() << ")\n");
|
|
|
+ DEBUG(dbgs() << " ," << printReg(RegionSourceReg, TRI) << ", "
|
|
|
+ << printMBBReference(*RegionSourceMBB) << ")\n");
|
|
|
}
|
|
|
|
|
|
void AMDGPUMachineCFGStructurizer::splitLoopPHIs(MachineBasicBlock *Entry,
|
|
@@ -2528,9 +2531,9 @@ AMDGPUMachineCFGStructurizer::splitEntry(LinearizedRegion *LRegion) {
|
|
|
MachineBasicBlock *EntrySucc = split(Entry->getFirstNonPHI());
|
|
|
MachineBasicBlock *Exit = LRegion->getExit();
|
|
|
|
|
|
- DEBUG(dbgs() << "Split BB#" << Entry->getNumber() << " to BB#"
|
|
|
- << Entry->getNumber() << " -> BB#" << EntrySucc->getNumber()
|
|
|
- << "\n");
|
|
|
+ DEBUG(dbgs() << "Split " << printMBBReference(*Entry) << " to "
|
|
|
+ << printMBBReference(*Entry) << " -> "
|
|
|
+ << printMBBReference(*EntrySucc) << "\n");
|
|
|
LRegion->addMBB(EntrySucc);
|
|
|
|
|
|
// Make the backedge go to Entry Succ
|