[llvm] [AMDGPU][NewPM] Port "AMDGPUResourceUsageAnalysis" to NPM (PR #130959)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 13 01:23:07 PDT 2025
================
@@ -44,23 +45,43 @@ struct AMDGPUResourceUsageAnalysis : public MachineFunctionPass {
SmallVector<const Function *, 16> Callees;
};
- AMDGPUResourceUsageAnalysis() : MachineFunctionPass(ID) {}
+ SIFunctionResourceInfo
+ analyzeResourceUsage(const MachineFunction &MF,
+ uint32_t AssumedStackSizeForDynamicSizeObjects,
+ uint32_t AssumedStackSizeForExternalCall) const;
+};
+
+struct AMDGPUResourceUsageAnalysisWrapperPass : public MachineFunctionPass {
+ using ResultT = AMDGPUResourceUsageAnalysisImpl::SIFunctionResourceInfo;
+ ResultT ResourceInfo;
+
+public:
+ static char ID;
+ AMDGPUResourceUsageAnalysisWrapperPass() : MachineFunctionPass(ID) {}
bool runOnMachineFunction(MachineFunction &MF) override;
- const SIFunctionResourceInfo &getResourceInfo() const { return ResourceInfo; }
+ const ResultT &getResourceInfo() const { return ResourceInfo; }
void getAnalysisUsage(AnalysisUsage &AU) const override {
AU.setPreservesAll();
MachineFunctionPass::getAnalysisUsage(AU);
}
+};
-private:
- SIFunctionResourceInfo
- analyzeResourceUsage(const MachineFunction &MF,
- uint32_t AssumedStackSizeForDynamicSizeObjects,
- uint32_t AssumedStackSizeForExternalCall) const;
- SIFunctionResourceInfo ResourceInfo;
+class AMDGPUResourceUsageAnalysis
+ : public AnalysisInfoMixin<AMDGPUResourceUsageAnalysis> {
+ friend AnalysisInfoMixin<AMDGPUResourceUsageAnalysis>;
+ static AnalysisKey Key;
+
+ const TargetMachine *TM;
+
+public:
+ using Result = AMDGPUResourceUsageAnalysisImpl::SIFunctionResourceInfo;
+ Result run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM);
+
+ AMDGPUResourceUsageAnalysis(const TargetMachine *TM_) : TM(TM_) {}
};
+
----------------
arsenm wrote:
We should have a printer pass, however we don't have an existing pass print implementation. So this is a problem for later
https://github.com/llvm/llvm-project/pull/130959
More information about the llvm-commits
mailing list