File tree Expand file tree Collapse file tree 4 files changed +29
-0
lines changed Expand file tree Collapse file tree 4 files changed +29
-0
lines changed Original file line number Diff line number Diff line change @@ -291,6 +291,16 @@ FunctionPass *createAMDGPURewriteUndefForPHIPass();
291
291
void initializeAMDGPURewriteUndefForPHIPass (PassRegistry &);
292
292
extern char &AMDGPURewriteUndefForPHIPassID;
293
293
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
+
294
304
void initializeSIAnnotateControlFlowPass (PassRegistry&);
295
305
extern char &SIAnnotateControlFlowPassID;
296
306
Original file line number Diff line number Diff line change @@ -177,6 +177,20 @@ bool AMDGPURewriteUndefForPHI::runOnFunction(Function &F) {
177
177
return rewritePHIs (F, UA, DT);
178
178
}
179
179
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
+
180
194
FunctionPass *llvm::createAMDGPURewriteUndefForPHIPass () {
181
195
return new AMDGPURewriteUndefForPHI ();
182
196
}
Original file line number Diff line number Diff line change @@ -663,6 +663,10 @@ void AMDGPUTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
663
663
PM.addPass (AMDGPULowerKernelArgumentsPass (*this ));
664
664
return true ;
665
665
}
666
+ if (PassName == " amdgpu-rewrite-undef-for-phi" ) {
667
+ PM.addPass (AMDGPURewriteUndefForPHIPass (*this ));
668
+ return true ;
669
+ }
666
670
return false ;
667
671
});
668
672
Original file line number Diff line number Diff line change 1
1
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2
2
; 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
3
4
4
5
define amdgpu_ps float @basic (float inreg %c , i32 %x ) #0 {
5
6
; OPT-LABEL: @basic(
You can’t perform that action at this time.
0 commit comments