Skip to content

Commit 58e87c9

Browse files
committed
AMDGPU: Port AMDGPULowerKernelArguments to new pass manager
https://reviews.llvm.org/D157498
1 parent 1ca0808 commit 58e87c9

File tree

4 files changed

+37
-7
lines changed

4 files changed

+37
-7
lines changed

llvm/lib/Target/AMDGPU/AMDGPU.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,16 @@ class AMDGPUCodeGenPreparePass
232232
PreservedAnalyses run(Function &, FunctionAnalysisManager &);
233233
};
234234

235+
class AMDGPULowerKernelArgumentsPass
236+
: public PassInfoMixin<AMDGPULowerKernelArgumentsPass> {
237+
private:
238+
TargetMachine &TM;
239+
240+
public:
241+
AMDGPULowerKernelArgumentsPass(TargetMachine &TM) : TM(TM){};
242+
PreservedAnalyses run(Function &, FunctionAnalysisManager &);
243+
};
244+
235245
FunctionPass *createAMDGPUAnnotateUniformValues();
236246

237247
ModulePass *createAMDGPUPrintfRuntimeBinding();

llvm/lib/Target/AMDGPU/AMDGPULowerKernelArguments.cpp

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ using namespace llvm;
2424

2525
namespace {
2626

27-
class AMDGPULowerKernelArguments : public FunctionPass{
27+
class AMDGPULowerKernelArguments : public FunctionPass {
2828
public:
2929
static char ID;
3030

@@ -55,14 +55,11 @@ static BasicBlock::iterator getInsertPt(BasicBlock &BB) {
5555
return InsPt;
5656
}
5757

58-
bool AMDGPULowerKernelArguments::runOnFunction(Function &F) {
58+
static bool lowerKernelArguments(Function &F, const TargetMachine &TM) {
5959
CallingConv::ID CC = F.getCallingConv();
6060
if (CC != CallingConv::AMDGPU_KERNEL || F.arg_empty())
6161
return false;
6262

63-
auto &TPC = getAnalysis<TargetPassConfig>();
64-
65-
const TargetMachine &TM = TPC.getTM<TargetMachine>();
6663
const GCNSubtarget &ST = TM.getSubtarget<GCNSubtarget>(F);
6764
LLVMContext &Ctx = F.getParent()->getContext();
6865
const DataLayout &DL = F.getParent()->getDataLayout();
@@ -232,6 +229,12 @@ bool AMDGPULowerKernelArguments::runOnFunction(Function &F) {
232229
return true;
233230
}
234231

232+
bool AMDGPULowerKernelArguments::runOnFunction(Function &F) {
233+
auto &TPC = getAnalysis<TargetPassConfig>();
234+
const TargetMachine &TM = TPC.getTM<TargetMachine>();
235+
return lowerKernelArguments(F, TM);
236+
}
237+
235238
INITIALIZE_PASS_BEGIN(AMDGPULowerKernelArguments, DEBUG_TYPE,
236239
"AMDGPU Lower Kernel Arguments", false, false)
237240
INITIALIZE_PASS_END(AMDGPULowerKernelArguments, DEBUG_TYPE, "AMDGPU Lower Kernel Arguments",
@@ -242,3 +245,16 @@ char AMDGPULowerKernelArguments::ID = 0;
242245
FunctionPass *llvm::createAMDGPULowerKernelArgumentsPass() {
243246
return new AMDGPULowerKernelArguments();
244247
}
248+
249+
PreservedAnalyses
250+
AMDGPULowerKernelArgumentsPass::run(Function &F, FunctionAnalysisManager &AM) {
251+
bool Changed = lowerKernelArguments(F, TM);
252+
if (Changed) {
253+
// TODO: Preserves a lot more.
254+
PreservedAnalyses PA;
255+
PA.preserveSet<CFGAnalyses>();
256+
return PA;
257+
}
258+
259+
return PreservedAnalyses::all();
260+
}

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -665,6 +665,10 @@ void AMDGPUTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
665665
PM.addPass(AMDGPUCodeGenPreparePass(*this));
666666
return true;
667667
}
668+
if (PassName == "amdgpu-lower-kernel-arguments") {
669+
PM.addPass(AMDGPULowerKernelArgumentsPass(*this));
670+
return true;
671+
}
668672
return false;
669673
});
670674

llvm/test/CodeGen/AMDGPU/lower-kernargs.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals
2-
; RUN: opt -mtriple=amdgcn-amd-amdhsa -S -o - -amdgpu-lower-kernel-arguments %s | FileCheck -check-prefixes=GCN,HSA %s
3-
; RUN: opt -mtriple=amdgcn-- -S -o - -amdgpu-lower-kernel-arguments %s | FileCheck -check-prefixes=GCN,MESA %s
2+
; RUN: opt -mtriple=amdgcn-amd-amdhsa -S -o - -passes=amdgpu-lower-kernel-arguments %s | FileCheck -check-prefixes=GCN,HSA %s
3+
; RUN: opt -mtriple=amdgcn-- -S -o - -passes=amdgpu-lower-kernel-arguments %s | FileCheck -check-prefixes=GCN,MESA %s
44

55
target datalayout = "A5"
66

0 commit comments

Comments
 (0)