Skip to content

Commit f5c3045

Browse files
author
Tony Linthicum
committed
Review comments
1 parent 1fdd2ac commit f5c3045

File tree

1 file changed

+28
-21
lines changed

1 file changed

+28
-21
lines changed

llvm/lib/Target/AMDGPU/GCNSchedStrategy.cpp

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1999,7 +1999,7 @@ bool RewriteScheduleStage::initHeuristics(
19991999
SmallVector<SlotIndex, 8> DstUsesReachingDefs;
20002000
findReachingDefs(*RUOp, DAG.LIS, DstUsesReachingDefs);
20012001

2002-
for (auto RDIndex : DstUsesReachingDefs) {
2002+
for (SlotIndex RDIndex : DstUsesReachingDefs) {
20032003
MachineInstr *RD = DAG.LIS->getInstructionFromIndex(RDIndex);
20042004
if (TII->isMAI(*RD))
20052005
continue;
@@ -2106,7 +2106,7 @@ int64_t RewriteScheduleStage::getRewriteCost(
21062106
uint64_t UseFreq =
21072107
EntryFreq ? MBFI.getBlockFreq(UseBlock).getFrequency() / EntryFreq : 1;
21082108

2109-
for (auto UseReg : UseRegs) {
2109+
for (Register UseReg : UseRegs) {
21102110
unsigned RegSize =
21112111
DAG.TRI->getRegSizeInBits(*DAG.MRI.getRegClass(UseReg));
21122112
unsigned NumRegs = std::max(RegSize / 32, (unsigned)1);
@@ -2142,7 +2142,7 @@ bool RewriteScheduleStage::rewrite(
21422142
DenseMap<MachineInstr *, unsigned> LastMIToRegion;
21432143

21442144
for (unsigned Region = 0; Region < DAG.Regions.size(); Region++) {
2145-
auto Entry = DAG.Regions[Region];
2145+
RegionBoundaries Entry = DAG.Regions[Region];
21462146
if (Entry.first == Entry.second)
21472147
continue;
21482148

@@ -2190,7 +2190,7 @@ bool RewriteScheduleStage::rewrite(
21902190
// up creating illegal instructions.
21912191

21922192
// The original registers of the MFMA that need to be reclassified as AGPR.
2193-
std::set<Register> RewriteRegs;
2193+
DenseSet<Register> RewriteRegs;
21942194
// The map of an original register in the MFMA to a new register (result of a
21952195
// copy) that it should be replaced with.
21962196
DenseMap<Register, Register> RedefMap;
@@ -2204,15 +2204,13 @@ bool RewriteScheduleStage::rewrite(
22042204
ReachingUseTracker;
22052205

22062206
for (auto &[MI, OriginalOpcode] : RewriteCands) {
2207-
22082207
int ReplacementOp = AMDGPU::getMFMASrcCVDstAGPROp(MI->getOpcode());
22092208
if (ReplacementOp == -1)
22102209
continue;
22112210
MI->setDesc(TII->get(ReplacementOp));
22122211

22132212
// Case 1: insert copies for the reaching defs of the Src2Reg.
22142213
MachineOperand *Src2 = TII->getNamedOperand(*MI, AMDGPU::OpName::src2);
2215-
22162214
if (Src2->isReg()) {
22172215
Register Src2Reg = Src2->getReg();
22182216
if (!Src2Reg.isVirtual())
@@ -2223,7 +2221,7 @@ bool RewriteScheduleStage::rewrite(
22232221
findReachingDefs(*Src2, DAG.LIS, Src2ReachingDefs);
22242222
SmallVector<MachineInstr *, 8> Src2DefsReplace;
22252223

2226-
for (auto RDIndex : Src2ReachingDefs) {
2224+
for (SlotIndex RDIndex : Src2ReachingDefs) {
22272225
MachineInstr *RD = DAG.LIS->getInstructionFromIndex(RDIndex);
22282226
if (TII->isMAI(*RD))
22292227
continue;
@@ -2234,8 +2232,9 @@ bool RewriteScheduleStage::rewrite(
22342232
}
22352233

22362234
if (!Src2DefsReplace.empty()) {
2237-
if (RedefMap.contains(Src2Reg)) {
2238-
MappedReg = RedefMap[Src2Reg];
2235+
DenseMap<Register, Register>::iterator RI = RedefMap.find(Src2Reg);
2236+
if (RI != RedefMap.end()) {
2237+
MappedReg = RI->second;
22392238
} else {
22402239
assert(!ReachingDefCopyMap.contains(Src2Reg));
22412240
const TargetRegisterClass *Src2RC = DAG.MRI.getRegClass(Src2Reg);
@@ -2304,7 +2303,7 @@ bool RewriteScheduleStage::rewrite(
23042303
SmallVector<SlotIndex, 8> DstUsesReachingDefs;
23052304
findReachingDefs(*RUOp, DAG.LIS, DstUsesReachingDefs);
23062305

2307-
for (auto RDIndex : DstUsesReachingDefs) {
2306+
for (SlotIndex RDIndex : DstUsesReachingDefs) {
23082307
MachineInstr *RD = DAG.LIS->getInstructionFromIndex(RDIndex);
23092308
if (TII->isMAI(*RD))
23102309
continue;
@@ -2317,9 +2316,10 @@ bool RewriteScheduleStage::rewrite(
23172316
}
23182317

23192318
if (!DstUseDefsReplace.empty()) {
2320-
if (RedefMap.contains(DstReg))
2321-
MappedReg = RedefMap[DstReg];
2322-
else {
2319+
DenseMap<Register, Register>::iterator RI = RedefMap.find(DstReg);
2320+
if (RI != RedefMap.end()) {
2321+
MappedReg = RI->second;
2322+
} else {
23232323
assert(!ReachingDefCopyMap.contains(DstReg));
23242324
const TargetRegisterClass *DstRC = DAG.MRI.getRegClass(DstReg);
23252325
const TargetRegisterClass *VGPRRC = SRI->getEquivalentVGPRClass(DstRC);
@@ -2343,8 +2343,10 @@ bool RewriteScheduleStage::rewrite(
23432343

23442344
// If this reaching def was the last MI in the region, update the
23452345
// region boundaries.
2346-
if (LastMIToRegion.contains(RD)) {
2347-
unsigned UpdateRegion = LastMIToRegion[RD];
2346+
DenseMap<MachineInstr *, unsigned>::iterator LMI =
2347+
LastMIToRegion.find(RD);
2348+
if (LMI != LastMIToRegion.end()) {
2349+
unsigned UpdateRegion = LMI->second;
23482350
DAG.Regions[UpdateRegion].second = VGPRCopy;
23492351
LastMIToRegion.erase(RD);
23502352
}
@@ -2389,13 +2391,16 @@ bool RewriteScheduleStage::rewrite(
23892391
}
23902392

23912393
// Handle the copies for dst uses.
2392-
for (auto RUBlockEntry : ReachingUseTracker) {
2393-
for (auto RUDst : RUBlockEntry.second) {
2394+
using RUBType =
2395+
std::pair<unsigned, DenseMap<Register, SmallPtrSet<MachineOperand *, 8>>>;
2396+
for (RUBType RUBlockEntry : ReachingUseTracker) {
2397+
using RUDType = std::pair<Register, SmallPtrSet<MachineOperand *, 8>>;
2398+
for (RUDType RUDst : RUBlockEntry.second) {
23942399
MachineOperand *OpBegin = *RUDst.second.begin();
23952400
SlotIndex InstPt = DAG.LIS->getInstructionIndex(*OpBegin->getParent());
23962401

23972402
// Find the earliest use in this block.
2398-
for (auto *User : RUDst.second) {
2403+
for (MachineOperand *User : RUDst.second) {
23992404
SlotIndex NewInstPt = DAG.LIS->getInstructionIndex(*User->getParent());
24002405
if (SlotIndex::isEarlierInstr(NewInstPt, InstPt))
24012406
InstPt = NewInstPt;
@@ -2415,8 +2420,10 @@ bool RewriteScheduleStage::rewrite(
24152420

24162421
// If this UseInst was the first MI in the region, update the region
24172422
// boundaries.
2418-
if (FirstMIToRegion.contains(UseInst)) {
2419-
unsigned UpdateRegion = FirstMIToRegion[UseInst];
2423+
DenseMap<MachineInstr *, unsigned>::iterator FI =
2424+
FirstMIToRegion.find(UseInst);
2425+
if (FI != FirstMIToRegion.end()) {
2426+
unsigned UpdateRegion = FI->second;
24202427
DAG.Regions[UpdateRegion].first = VGPRCopy;
24212428
FirstMIToRegion.erase(UseInst);
24222429
}
@@ -2434,7 +2441,7 @@ bool RewriteScheduleStage::rewrite(
24342441
// We may have needed to insert copies after the reaching defs of the MFMAs.
24352442
// Replace the original register with the result of the copy for all relevant
24362443
// operands.
2437-
for (auto NewDef : RedefMap) {
2444+
for (std::pair<Register, Register> NewDef : RedefMap) {
24382445
Register OldReg = NewDef.first;
24392446
Register NewReg = NewDef.second;
24402447

0 commit comments

Comments
 (0)