1313//
1414// ===----------------------------------------------------------------------===//
1515
16+ #include " AMDGPUMarkLastScratchLoad.h"
1617#include " AMDGPU.h"
1718#include " GCNSubtarget.h"
1819#include " llvm/CodeGen/LiveIntervals.h"
@@ -25,18 +26,26 @@ using namespace llvm;
2526
2627namespace {
2728
28- class AMDGPUMarkLastScratchLoad : public MachineFunctionPass {
29+ class AMDGPUMarkLastScratchLoad {
2930private:
3031 LiveStacks *LS = nullptr ;
3132 LiveIntervals *LIS = nullptr ;
3233 SlotIndexes *SI = nullptr ;
3334 const SIInstrInfo *SII = nullptr ;
3435
36+ public:
37+ AMDGPUMarkLastScratchLoad (LiveStacks *LS, LiveIntervals *LIS, SlotIndexes *SI)
38+ : LS(LS), LIS(LIS), SI(SI) {}
39+ bool run (MachineFunction &MF);
40+ };
41+
42+ class AMDGPUMarkLastScratchLoadLegacy : public MachineFunctionPass {
3543public:
3644 static char ID;
3745
38- AMDGPUMarkLastScratchLoad () : MachineFunctionPass(ID) {
39- initializeAMDGPUMarkLastScratchLoadPass (*PassRegistry::getPassRegistry ());
46+ AMDGPUMarkLastScratchLoadLegacy () : MachineFunctionPass(ID) {
47+ initializeAMDGPUMarkLastScratchLoadLegacyPass (
48+ *PassRegistry::getPassRegistry ());
4049 }
4150
4251 bool runOnMachineFunction (MachineFunction &MF) override ;
@@ -56,17 +65,33 @@ class AMDGPUMarkLastScratchLoad : public MachineFunctionPass {
5665
5766} // end anonymous namespace
5867
59- bool AMDGPUMarkLastScratchLoad::runOnMachineFunction (MachineFunction &MF) {
68+ bool AMDGPUMarkLastScratchLoadLegacy::runOnMachineFunction (
69+ MachineFunction &MF) {
6070 if (skipFunction (MF.getFunction ()))
6171 return false ;
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+ }
6289
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,14 @@ 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::AMDGPUMarkLastScratchLoadLegacyID =
161+ AMDGPUMarkLastScratchLoadLegacy::ID;
136162
137- INITIALIZE_PASS_BEGIN (AMDGPUMarkLastScratchLoad , DEBUG_TYPE,
163+ INITIALIZE_PASS_BEGIN (AMDGPUMarkLastScratchLoadLegacy , DEBUG_TYPE,
138164 " AMDGPU Mark last scratch load" , false , false )
139165INITIALIZE_PASS_DEPENDENCY(SlotIndexesWrapperPass)
140166INITIALIZE_PASS_DEPENDENCY(LiveStacksWrapperLegacy)
141- INITIALIZE_PASS_END(AMDGPUMarkLastScratchLoad , DEBUG_TYPE,
167+ INITIALIZE_PASS_END(AMDGPUMarkLastScratchLoadLegacy , DEBUG_TYPE,
142168 " AMDGPU Mark last scratch load" , false , false )
0 commit comments