@@ -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