1919#include " SIInstrInfo.h"
2020#include " llvm/ADT/PostOrderIterator.h"
2121#include " llvm/CodeGen/MachineFunctionPass.h"
22+ #include " llvm/CodeGen/MachinePassManager.h"
2223
2324using namespace llvm ;
2425
@@ -40,15 +41,11 @@ struct MBBInfo {
4041
4142using MBBInfoSet = DenseMap<const MachineBasicBlock *, MBBInfo>;
4243
43- class AMDGPUSetWavePriority : public MachineFunctionPass {
44+ class AMDGPUSetWavePriority {
4445public:
4546 static char ID;
4647
47- AMDGPUSetWavePriority () : MachineFunctionPass(ID) {}
48-
49- StringRef getPassName () const override { return " Set wave priority" ; }
50-
51- bool runOnMachineFunction (MachineFunction &MF) override ;
48+ bool run (MachineFunction &MF);
5249
5350private:
5451 MachineInstr *BuildSetprioMI (MachineBasicBlock &MBB,
@@ -58,15 +55,30 @@ class AMDGPUSetWavePriority : public MachineFunctionPass {
5855 const SIInstrInfo *TII;
5956};
6057
58+ class AMDGPUSetWavePriorityLegacy : public MachineFunctionPass {
59+ public:
60+ static char ID;
61+
62+ AMDGPUSetWavePriorityLegacy () : MachineFunctionPass(ID) {}
63+
64+ StringRef getPassName () const override { return " Set wave priority" ; }
65+
66+ bool runOnMachineFunction (MachineFunction &MF) override {
67+ if (skipFunction (MF.getFunction ()))
68+ return false ;
69+ return AMDGPUSetWavePriority ().run (MF);
70+ }
71+ };
72+
6173} // End anonymous namespace.
6274
63- INITIALIZE_PASS (AMDGPUSetWavePriority , DEBUG_TYPE, " Set wave priority" , false ,
64- false )
75+ INITIALIZE_PASS (AMDGPUSetWavePriorityLegacy , DEBUG_TYPE, " Set wave priority" ,
76+ false , false )
6577
66- char AMDGPUSetWavePriority ::ID = 0;
78+ char AMDGPUSetWavePriorityLegacy ::ID = 0;
6779
6880FunctionPass *llvm::createAMDGPUSetWavePriorityPass () {
69- return new AMDGPUSetWavePriority ();
81+ return new AMDGPUSetWavePriorityLegacy ();
7082}
7183
7284MachineInstr *
@@ -96,12 +108,20 @@ static bool isVMEMLoad(const MachineInstr &MI) {
96108 return SIInstrInfo::isVMEM (MI) && MI.mayLoad ();
97109}
98110
99- bool AMDGPUSetWavePriority::runOnMachineFunction (MachineFunction &MF) {
111+ PreservedAnalyses
112+ llvm::AMDGPUSetWavePriorityPass::run (MachineFunction &MF,
113+ MachineFunctionAnalysisManager &MFAM) {
114+ if (!AMDGPUSetWavePriority ().run (MF))
115+ return PreservedAnalyses::all ();
116+ return getMachineFunctionPassPreservedAnalyses ();
117+ }
118+
119+ bool AMDGPUSetWavePriority::run (MachineFunction &MF) {
100120 const unsigned HighPriority = 3 ;
101121 const unsigned LowPriority = 0 ;
102122
103123 Function &F = MF.getFunction ();
104- if (skipFunction (F) || !AMDGPU::isEntryFunctionCC (F.getCallingConv ()))
124+ if (!AMDGPU::isEntryFunctionCC (F.getCallingConv ()))
105125 return false ;
106126
107127 const GCNSubtarget &ST = MF.getSubtarget <GCNSubtarget>();
0 commit comments