[llvm-branch-commits] [llvm] [CodeGen][NewPM] Port RegAllocPriorityAdvisor analysis to NPM (PR #118462)
Matt Arsenault via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Dec 23 00:13:40 PST 2024
================
@@ -150,12 +138,48 @@ class ReleaseModePriorityAdvisorAnalysis final
InteractiveChannelBaseName + ".out",
InteractiveChannelBaseName + ".in");
}
- return std::make_unique<MLPriorityAdvisor>(
- MF, RA, &getAnalysis<SlotIndexesWrapperPass>().getSI(), Runner.get());
+ assert(SI && "SlotIndexes result must be set");
+ return std::make_unique<MLPriorityAdvisor>(MF, RA, SI, Runner.get());
}
+
+private:
std::unique_ptr<MLModelRunner> Runner;
};
+RegAllocPriorityAdvisorProvider *createReleaseModePriorityAdvisorProvider() {
+ return new ReleaseModePriorityAdvisorProvider();
+}
+
+class ReleaseModePriorityAdvisorAnalysisLegacy final
+ : public RegAllocPriorityAdvisorAnalysisLegacy {
+public:
+ ReleaseModePriorityAdvisorAnalysisLegacy()
+ : RegAllocPriorityAdvisorAnalysisLegacy(AdvisorMode::Release) {}
+ // support for isa<> and dyn_cast.
+ static bool classof(const RegAllocPriorityAdvisorAnalysisLegacy *R) {
+ return R->getAdvisorMode() == AdvisorMode::Release;
+ }
+
+private:
+ void getAnalysisUsage(AnalysisUsage &AU) const override {
+ AU.setPreservesAll();
+ AU.addRequired<SlotIndexesWrapperPass>();
+ RegAllocPriorityAdvisorAnalysisLegacy::getAnalysisUsage(AU);
+ }
+
+ std::unique_ptr<RegAllocPriorityAdvisorProvider> &getProvider() override {
+ Provider->setAnalyses(&getAnalysis<SlotIndexesWrapperPass>().getSI());
+ return Provider;
+ }
+
+ bool doInitialization(Module &M) override {
+ Provider = std::make_unique<ReleaseModePriorityAdvisorProvider>();
+ return false;
+ }
+
+ // std::unique_ptr<ReleaseModePriorityAdvisorProvider> Provider;
----------------
arsenm wrote:
Commented out code
https://github.com/llvm/llvm-project/pull/118462
More information about the llvm-branch-commits
mailing list