Skip to content

Commit c68ad69

Browse files
author
Jun Wang
committed
[AMDGPU] Port AMDGPURewriteUndefForPHI to new pass manager
This patch ports the AMDGPURewriteUndefForPHI pass to the new pass manager. With this, the pass is supported under both the legacy and the new pass managers.
1 parent 5293109 commit c68ad69

File tree

4 files changed

+29
-0
lines changed

4 files changed

+29
-0
lines changed

llvm/lib/Target/AMDGPU/AMDGPU.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,16 @@ FunctionPass *createAMDGPURewriteUndefForPHIPass();
291291
void initializeAMDGPURewriteUndefForPHIPass(PassRegistry &);
292292
extern char &AMDGPURewriteUndefForPHIPassID;
293293

294+
class AMDGPURewriteUndefForPHIPass
295+
: public PassInfoMixin<AMDGPURewriteUndefForPHIPass> {
296+
private:
297+
TargetMachine &TM;
298+
299+
public:
300+
AMDGPURewriteUndefForPHIPass(TargetMachine &TM) : TM(TM){};
301+
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
302+
};
303+
294304
void initializeSIAnnotateControlFlowPass(PassRegistry&);
295305
extern char &SIAnnotateControlFlowPassID;
296306

llvm/lib/Target/AMDGPU/AMDGPURewriteUndefForPHI.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,20 @@ bool AMDGPURewriteUndefForPHI::runOnFunction(Function &F) {
177177
return rewritePHIs(F, UA, DT);
178178
}
179179

180+
PreservedAnalyses
181+
AMDGPURewriteUndefForPHIPass::run(Function &F, FunctionAnalysisManager &AM) {
182+
UniformityInfo &UA = AM.getResult<UniformityInfoAnalysis>(F);
183+
DominatorTree *DT = &AM.getResult<DominatorTreeAnalysis>(F);
184+
bool Changed = rewritePHIs(F, UA, DT);
185+
if (Changed) {
186+
PreservedAnalyses PA;
187+
PA.preserveSet<CFGAnalyses>();
188+
return PA;
189+
}
190+
191+
return PreservedAnalyses::all();
192+
}
193+
180194
FunctionPass *llvm::createAMDGPURewriteUndefForPHIPass() {
181195
return new AMDGPURewriteUndefForPHI();
182196
}

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -663,6 +663,10 @@ void AMDGPUTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
663663
PM.addPass(AMDGPULowerKernelArgumentsPass(*this));
664664
return true;
665665
}
666+
if (PassName == "amdgpu-rewrite-undef-for-phi") {
667+
PM.addPass(AMDGPURewriteUndefForPHIPass(*this));
668+
return true;
669+
}
666670
return false;
667671
});
668672

llvm/test/CodeGen/AMDGPU/rewrite-undef-for-phi.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
22
; RUN: opt -mtriple=amdgcn-- -S -amdgpu-rewrite-undef-for-phi %s | FileCheck -check-prefix=OPT %s
3+
; RUN: opt -mtriple=amdgcn-- -S -passes=amdgpu-rewrite-undef-for-phi %s | FileCheck -check-prefix=OPT %s
34

45
define amdgpu_ps float @basic(float inreg %c, i32 %x) #0 {
56
; OPT-LABEL: @basic(

0 commit comments

Comments
 (0)