Skip to content

Commit 2b99317

Browse files
kzhuravlbcahoon
authored andcommitted
Revert "[AMDGPU] Split VGPR regalloc pipeline"
This reverts commit 6387cf2. Change-Id: Id66615ae86ce2ae900c84dbdbb4932a609d1a1e0
1 parent afbf291 commit 2b99317

File tree

78 files changed

+8619
-8184
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+8619
-8184
lines changed

llvm/include/llvm/CodeGen/MachineRegisterInfo.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,6 @@ class MachineRegisterInfo {
184184
TheDelegate->MRI_NoteCloneVirtualRegister(NewReg, SrcReg);
185185
}
186186

187-
const MachineFunction &getMF() const { return *MF; }
188-
189187
//===--------------------------------------------------------------------===//
190188
// Function State
191189
//===--------------------------------------------------------------------===//

llvm/lib/Target/AMDGPU/AMDGPU.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ ModulePass *createAMDGPURemoveIncompatibleFunctionsPass(const TargetMachine *);
5656
FunctionPass *createAMDGPUCodeGenPreparePass();
5757
FunctionPass *createAMDGPULateCodeGenPreparePass();
5858
FunctionPass *createAMDGPUMachineCFGStructurizerPass();
59-
FunctionPass *createAMDGPUReserveWWMRegsPass();
6059
FunctionPass *createAMDGPURewriteOutArgumentsPass();
6160
ModulePass *
6261
createAMDGPULowerModuleLDSLegacyPass(const AMDGPUTargetMachine *TM = nullptr);
@@ -137,9 +136,6 @@ struct AMDGPULowerModuleLDSPass : PassInfoMixin<AMDGPULowerModuleLDSPass> {
137136
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
138137
};
139138

140-
void initializeAMDGPUReserveWWMRegsPass(PassRegistry &);
141-
extern char &AMDGPUReserveWWMRegsID;
142-
143139
void initializeAMDGPURewriteOutArgumentsPass(PassRegistry &);
144140
extern char &AMDGPURewriteOutArgumentsID;
145141

llvm/lib/Target/AMDGPU/AMDGPUReserveWWMRegs.cpp

Lines changed: 0 additions & 97 deletions
This file was deleted.

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp

Lines changed: 5 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,6 @@ class VGPRRegisterRegAlloc : public RegisterRegAllocBase<VGPRRegisterRegAlloc> {
8181
: RegisterRegAllocBase(N, D, C) {}
8282
};
8383

84-
class WWMRegisterRegAlloc : public RegisterRegAllocBase<WWMRegisterRegAlloc> {
85-
public:
86-
WWMRegisterRegAlloc(const char *N, const char *D, FunctionPassCtor C)
87-
: RegisterRegAllocBase(N, D, C) {}
88-
};
89-
9084
static bool onlyAllocateSGPRs(const TargetRegisterInfo &TRI,
9185
const MachineRegisterInfo &MRI,
9286
const Register Reg) {
@@ -101,24 +95,13 @@ static bool onlyAllocateVGPRs(const TargetRegisterInfo &TRI,
10195
return !static_cast<const SIRegisterInfo &>(TRI).isSGPRClass(RC);
10296
}
10397

104-
static bool onlyAllocateWWMRegs(const TargetRegisterInfo &TRI,
105-
const MachineRegisterInfo &MRI,
106-
const Register Reg) {
107-
const SIMachineFunctionInfo *MFI =
108-
MRI.getMF().getInfo<SIMachineFunctionInfo>();
109-
const TargetRegisterClass *RC = MRI.getRegClass(Reg);
110-
return !static_cast<const SIRegisterInfo &>(TRI).isSGPRClass(RC) &&
111-
MFI->checkFlag(Reg, AMDGPU::VirtRegFlag::WWM_REG);
112-
}
113-
114-
/// -{sgpr|wwm|vgpr}-regalloc=... command line option.
98+
/// -{sgpr|vgpr}-regalloc=... command line option.
11599
static FunctionPass *useDefaultRegisterAllocator() { return nullptr; }
116100

117101
/// A dummy default pass factory indicates whether the register allocator is
118102
/// overridden on the command line.
119103
static llvm::once_flag InitializeDefaultSGPRRegisterAllocatorFlag;
120104
static llvm::once_flag InitializeDefaultVGPRRegisterAllocatorFlag;
121-
static llvm::once_flag InitializeDefaultWWMRegisterAllocatorFlag;
122105

123106
static SGPRRegisterRegAlloc
124107
defaultSGPRRegAlloc("default",
@@ -135,11 +118,6 @@ static cl::opt<VGPRRegisterRegAlloc::FunctionPassCtor, false,
135118
VGPRRegAlloc("vgpr-regalloc", cl::Hidden, cl::init(&useDefaultRegisterAllocator),
136119
cl::desc("Register allocator to use for VGPRs"));
137120

138-
static cl::opt<WWMRegisterRegAlloc::FunctionPassCtor, false,
139-
RegisterPassParser<WWMRegisterRegAlloc>>
140-
WWMRegAlloc("wwm-regalloc", cl::Hidden,
141-
cl::init(&useDefaultRegisterAllocator),
142-
cl::desc("Register allocator to use for WWM registers"));
143121

144122
static void initializeDefaultSGPRRegisterAllocatorOnce() {
145123
RegisterRegAlloc::FunctionPassCtor Ctor = SGPRRegisterRegAlloc::getDefault();
@@ -159,15 +137,6 @@ static void initializeDefaultVGPRRegisterAllocatorOnce() {
159137
}
160138
}
161139

162-
static void initializeDefaultWWMRegisterAllocatorOnce() {
163-
RegisterRegAlloc::FunctionPassCtor Ctor = WWMRegisterRegAlloc::getDefault();
164-
165-
if (!Ctor) {
166-
Ctor = WWMRegAlloc;
167-
WWMRegisterRegAlloc::setDefault(WWMRegAlloc);
168-
}
169-
}
170-
171140
static FunctionPass *createBasicSGPRRegisterAllocator() {
172141
return createBasicRegisterAllocator(onlyAllocateSGPRs);
173142
}
@@ -192,18 +161,6 @@ static FunctionPass *createFastVGPRRegisterAllocator() {
192161
return createFastRegisterAllocator(onlyAllocateVGPRs, true);
193162
}
194163

195-
static FunctionPass *createBasicWWMRegisterAllocator() {
196-
return createBasicRegisterAllocator(onlyAllocateWWMRegs);
197-
}
198-
199-
static FunctionPass *createGreedyWWMRegisterAllocator() {
200-
return createGreedyRegisterAllocator(onlyAllocateWWMRegs);
201-
}
202-
203-
static FunctionPass *createFastWWMRegisterAllocator() {
204-
return createFastRegisterAllocator(onlyAllocateWWMRegs, false);
205-
}
206-
207164
static SGPRRegisterRegAlloc basicRegAllocSGPR(
208165
"basic", "basic register allocator", createBasicSGPRRegisterAllocator);
209166
static SGPRRegisterRegAlloc greedyRegAllocSGPR(
@@ -220,16 +177,7 @@ static VGPRRegisterRegAlloc greedyRegAllocVGPR(
220177

221178
static VGPRRegisterRegAlloc fastRegAllocVGPR(
222179
"fast", "fast register allocator", createFastVGPRRegisterAllocator);
223-
224-
static WWMRegisterRegAlloc basicRegAllocWWMReg("basic",
225-
"basic register allocator",
226-
createBasicWWMRegisterAllocator);
227-
static WWMRegisterRegAlloc
228-
greedyRegAllocWWMReg("greedy", "greedy register allocator",
229-
createGreedyWWMRegisterAllocator);
230-
static WWMRegisterRegAlloc fastRegAllocWWMReg("fast", "fast register allocator",
231-
createFastWWMRegisterAllocator);
232-
} // namespace
180+
}
233181

234182
static cl::opt<bool>
235183
EnableEarlyIfConversion("amdgpu-early-ifcvt", cl::Hidden,
@@ -477,7 +425,6 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAMDGPUTarget() {
477425
initializeAMDGPURemoveIncompatibleFunctionsPass(*PR);
478426
initializeAMDGPUSwLowerLDSLegacyPass(*PR);
479427
initializeAMDGPULowerModuleLDSLegacyPass(*PR);
480-
initializeAMDGPUReserveWWMRegsPass(*PR);
481428
initializeAMDGPURewriteOutArgumentsPass(*PR);
482429
initializeAMDGPURewriteUndefForPHILegacyPass(*PR);
483430
initializeAMDGPUUnifyMetadataPass(*PR);
@@ -1067,7 +1014,6 @@ class GCNPassConfig final : public AMDGPUPassConfig {
10671014

10681015
FunctionPass *createSGPRAllocPass(bool Optimized);
10691016
FunctionPass *createVGPRAllocPass(bool Optimized);
1070-
FunctionPass *createWWMRegAllocPass(bool Optimized);
10711017
FunctionPass *createRegAllocPass(bool Optimized) override;
10721018

10731019
bool addRegAssignAndRewriteFast() override;
@@ -1464,6 +1410,7 @@ void GCNPassConfig::addOptimizedRegAlloc() {
14641410
}
14651411

14661412
bool GCNPassConfig::addPreRewrite() {
1413+
addPass(&SILowerWWMCopiesID);
14671414
if (EnableRegReassign)
14681415
addPass(&GCNNSAReassignID);
14691416
return true;
@@ -1499,28 +1446,12 @@ FunctionPass *GCNPassConfig::createVGPRAllocPass(bool Optimized) {
14991446
return createFastVGPRRegisterAllocator();
15001447
}
15011448

1502-
FunctionPass *GCNPassConfig::createWWMRegAllocPass(bool Optimized) {
1503-
// Initialize the global default.
1504-
llvm::call_once(InitializeDefaultWWMRegisterAllocatorFlag,
1505-
initializeDefaultWWMRegisterAllocatorOnce);
1506-
1507-
RegisterRegAlloc::FunctionPassCtor Ctor = WWMRegisterRegAlloc::getDefault();
1508-
if (Ctor != useDefaultRegisterAllocator)
1509-
return Ctor();
1510-
1511-
if (Optimized)
1512-
return createGreedyWWMRegisterAllocator();
1513-
1514-
return createFastWWMRegisterAllocator();
1515-
}
1516-
15171449
FunctionPass *GCNPassConfig::createRegAllocPass(bool Optimized) {
15181450
llvm_unreachable("should not be used");
15191451
}
15201452

15211453
static const char RegAllocOptNotSupportedMessage[] =
1522-
"-regalloc not supported with amdgcn. Use -sgpr-regalloc, -wwm-regalloc, "
1523-
"and -vgpr-regalloc";
1454+
"-regalloc not supported with amdgcn. Use -sgpr-regalloc and -vgpr-regalloc";
15241455

15251456
bool GCNPassConfig::addRegAssignAndRewriteFast() {
15261457
if (!usingDefaultRegAlloc())
@@ -1532,19 +1463,11 @@ bool GCNPassConfig::addRegAssignAndRewriteFast() {
15321463

15331464
// Equivalent of PEI for SGPRs.
15341465
addPass(&SILowerSGPRSpillsID);
1535-
1536-
// To Allocate wwm registers used in whole quad mode operations (for shaders).
15371466
addPass(&SIPreAllocateWWMRegsID);
15381467

1539-
// For allocating other wwm register operands.
1540-
addPass(createWWMRegAllocPass(false));
1541-
1542-
addPass(&SILowerWWMCopiesID);
1543-
addPass(&AMDGPUReserveWWMRegsID);
1544-
1545-
// For allocating regular VGPRs.
15461468
addPass(createVGPRAllocPass(false));
15471469

1470+
addPass(&SILowerWWMCopiesID);
15481471
return true;
15491472
}
15501473

@@ -1564,17 +1487,8 @@ bool GCNPassConfig::addRegAssignAndRewriteOptimized() {
15641487

15651488
// Equivalent of PEI for SGPRs.
15661489
addPass(&SILowerSGPRSpillsID);
1567-
1568-
// To Allocate wwm registers used in whole quad mode operations (for shaders).
15691490
addPass(&SIPreAllocateWWMRegsID);
15701491

1571-
// For allocating other whole wave mode registers.
1572-
addPass(createWWMRegAllocPass(true));
1573-
addPass(&SILowerWWMCopiesID);
1574-
addPass(createVirtRegRewriter(false));
1575-
addPass(&AMDGPUReserveWWMRegsID);
1576-
1577-
// For allocating regular VGPRs.
15781492
addPass(createVGPRAllocPass(true));
15791493

15801494
addPreRewrite();

llvm/lib/Target/AMDGPU/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@ add_llvm_target(AMDGPUCodeGen
9595
AMDGPURegBankSelect.cpp
9696
AMDGPURegisterBankInfo.cpp
9797
AMDGPURemoveIncompatibleFunctions.cpp
98-
AMDGPUReserveWWMRegs.cpp
9998
AMDGPUResourceUsageAnalysis.cpp
10099
AMDGPURewriteOutArguments.cpp
101100
AMDGPURewriteUndefForPHI.cpp

0 commit comments

Comments
 (0)