@@ -25,18 +25,26 @@ using namespace llvm;
2525
2626namespace {
2727
28- class AMDGPUMarkLastScratchLoad : public MachineFunctionPass {
28+ class AMDGPUMarkLastScratchLoad {
2929private:
3030 LiveStacks *LS = nullptr ;
3131 LiveIntervals *LIS = nullptr ;
3232 SlotIndexes *SI = nullptr ;
3333 const SIInstrInfo *SII = nullptr ;
3434
35+ public:
36+ AMDGPUMarkLastScratchLoad (LiveStacks *LS, LiveIntervals *LIS, SlotIndexes *SI)
37+ : LS(LS), LIS(LIS), SI(SI) {}
38+ bool run (MachineFunction &MF);
39+ };
40+
41+ class AMDGPUMarkLastScratchLoadLegacy : public MachineFunctionPass {
3542public:
3643 static char ID;
3744
38- AMDGPUMarkLastScratchLoad () : MachineFunctionPass(ID) {
39- initializeAMDGPUMarkLastScratchLoadPass (*PassRegistry::getPassRegistry ());
45+ AMDGPUMarkLastScratchLoadLegacy () : MachineFunctionPass(ID) {
46+ initializeAMDGPUMarkLastScratchLoadLegacyPass (
47+ *PassRegistry::getPassRegistry ());
4048 }
4149
4250 bool runOnMachineFunction (MachineFunction &MF) override ;
@@ -56,17 +64,34 @@ class AMDGPUMarkLastScratchLoad : public MachineFunctionPass {
5664
5765} // end anonymous namespace
5866
59- bool AMDGPUMarkLastScratchLoad::runOnMachineFunction (MachineFunction &MF) {
67+ bool AMDGPUMarkLastScratchLoadLegacy::runOnMachineFunction (
68+ MachineFunction &MF) {
6069 if (skipFunction (MF.getFunction ()))
6170 return false ;
6271
72+ auto &LS = getAnalysis<LiveStacksWrapperLegacy>().getLS ();
73+ auto &LIS = getAnalysis<LiveIntervalsWrapperPass>().getLIS ();
74+ auto &SI = getAnalysis<SlotIndexesWrapperPass>().getSI ();
75+
76+ return AMDGPUMarkLastScratchLoad (&LS, &LIS, &SI).run (MF);
77+ }
78+
79+ PreservedAnalyses
80+ AMDGPUMarkLastScratchLoadPass::run (MachineFunction &MF,
81+ MachineFunctionAnalysisManager &MFAM) {
82+ auto &LS = MFAM.getResult <LiveStacksAnalysis>(MF);
83+ auto &LIS = MFAM.getResult <LiveIntervalsAnalysis>(MF);
84+ auto &SI = MFAM.getResult <SlotIndexesAnalysis>(MF);
85+
86+ AMDGPUMarkLastScratchLoad (&LS, &LIS, &SI).run (MF);
87+ return PreservedAnalyses::all ();
88+ }
89+
90+ bool AMDGPUMarkLastScratchLoad::run (MachineFunction &MF) {
6391 const GCNSubtarget &ST = MF.getSubtarget <GCNSubtarget>();
6492 if (ST.getGeneration () < AMDGPUSubtarget::GFX12)
6593 return false ;
6694
67- LS = &getAnalysis<LiveStacksWrapperLegacy>().getLS ();
68- LIS = &getAnalysis<LiveIntervalsWrapperPass>().getLIS ();
69- SI = &getAnalysis<SlotIndexesWrapperPass>().getSI ();
7095 SII = ST.getInstrInfo ();
7196 SlotIndexes &Slots = *LIS->getSlotIndexes ();
7297
@@ -130,13 +155,13 @@ bool AMDGPUMarkLastScratchLoad::runOnMachineFunction(MachineFunction &MF) {
130155 return Changed;
131156}
132157
133- char AMDGPUMarkLastScratchLoad ::ID = 0 ;
158+ char AMDGPUMarkLastScratchLoadLegacy ::ID = 0 ;
134159
135- char &llvm::AMDGPUMarkLastScratchLoadID = AMDGPUMarkLastScratchLoad ::ID;
160+ char &llvm::AMDGPUMarkLastScratchLoadID = AMDGPUMarkLastScratchLoadLegacy ::ID;
136161
137- INITIALIZE_PASS_BEGIN (AMDGPUMarkLastScratchLoad , DEBUG_TYPE,
162+ INITIALIZE_PASS_BEGIN (AMDGPUMarkLastScratchLoadLegacy , DEBUG_TYPE,
138163 " AMDGPU Mark last scratch load" , false , false )
139164INITIALIZE_PASS_DEPENDENCY(SlotIndexesWrapperPass)
140165INITIALIZE_PASS_DEPENDENCY(LiveStacksWrapperLegacy)
141- INITIALIZE_PASS_END(AMDGPUMarkLastScratchLoad , DEBUG_TYPE,
166+ INITIALIZE_PASS_END(AMDGPUMarkLastScratchLoadLegacy , DEBUG_TYPE,
142167 " AMDGPU Mark last scratch load" , false , false )
0 commit comments