Skip to content

[NVPTX] Add NewPM boilerplate to NVPTXISelDAGToDAG - #215132

Merged
AlexMaclean merged 2 commits into
llvm:mainfrom
AlexMaclean:dev/amaclean/ptx-npm-isel
Aug 10, 2026
Merged

[NVPTX] Add NewPM boilerplate to NVPTXISelDAGToDAG#215132
AlexMaclean merged 2 commits into
llvm:mainfrom
AlexMaclean:dev/amaclean/ptx-npm-isel

Conversation

@AlexMaclean

Copy link
Copy Markdown
Member

No description provided.

@llvmorg-github-actions

Copy link
Copy Markdown

@llvm/pr-subscribers-backend-nvptx

Author: Alex MacLean (AlexMaclean)

Changes

Full diff: https://github.com/llvm/llvm-project/pull/215132.diff

3 Files Affected:

  • (modified) llvm/lib/Target/NVPTX/NVPTX.h (+7)
  • (modified) llvm/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp (+4)
  • (modified) llvm/lib/Target/NVPTX/NVPTXPassRegistry.def (+6)
diff --git a/llvm/lib/Target/NVPTX/NVPTX.h b/llvm/lib/Target/NVPTX/NVPTX.h
index 365ac038b79cc..881ea984f0c18 100644
--- a/llvm/lib/Target/NVPTX/NVPTX.h
+++ b/llvm/lib/Target/NVPTX/NVPTX.h
@@ -15,6 +15,8 @@
 #define LLVM_LIB_TARGET_NVPTX_NVPTX_H
 
 #include "llvm/ADT/Bitfields.h"
+#include "llvm/CodeGen/MachineFunctionAnalysisManager.h"
+#include "llvm/CodeGen/SelectionDAGISel.h"
 #include "llvm/IR/PassManager.h"
 #include "llvm/Pass.h"
 #include "llvm/Support/AtomicOrdering.h"
@@ -136,6 +138,11 @@ struct NVPTXTagInvariantLoadsPass
   PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
 };
 
+class NVPTXISelDAGToDAGPass : public SelectionDAGISelPass {
+public:
+  NVPTXISelDAGToDAGPass(NVPTXTargetMachine &TM, CodeGenOptLevel OptLevel);
+};
+
 namespace NVPTX {
 enum DrvInterface {
   NVCL,
diff --git a/llvm/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp b/llvm/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp
index b3bb96c202c55..804427921856f 100644
--- a/llvm/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp
@@ -190,6 +190,10 @@ char NVPTXDAGToDAGISelLegacy::ID = 0;
 
 INITIALIZE_PASS(NVPTXDAGToDAGISelLegacy, DEBUG_TYPE, PASS_NAME, false, false)
 
+NVPTXISelDAGToDAGPass::NVPTXISelDAGToDAGPass(NVPTXTargetMachine &TM,
+                                             CodeGenOptLevel OptLevel)
+    : SelectionDAGISelPass(std::make_unique<NVPTXDAGToDAGISel>(TM, OptLevel)) {}
+
 NVPTXDAGToDAGISel::NVPTXDAGToDAGISel(NVPTXTargetMachine &tm,
                                      CodeGenOptLevel OptLevel)
     : SelectionDAGISel(tm, OptLevel), TM(tm) {}
diff --git a/llvm/lib/Target/NVPTX/NVPTXPassRegistry.def b/llvm/lib/Target/NVPTX/NVPTXPassRegistry.def
index 7fd6265cda106..aac7162397744 100644
--- a/llvm/lib/Target/NVPTX/NVPTXPassRegistry.def
+++ b/llvm/lib/Target/NVPTX/NVPTXPassRegistry.def
@@ -44,3 +44,9 @@ FUNCTION_PASS("nvptx-mark-kernel-ptrs-global", NVPTXMarkKernelPtrsGlobalPass())
 FUNCTION_PASS("nvptx-tag-invariant-loads", NVPTXTagInvariantLoadsPass())
 FUNCTION_PASS("nvptx-ir-peephole", NVPTXIRPeepholePass())
 #undef FUNCTION_PASS
+
+#ifndef MACHINE_FUNCTION_PASS
+#define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS)
+#endif
+MACHINE_FUNCTION_PASS("nvptx-isel", NVPTXISelDAGToDAGPass(*this, getOptLevel()))
+#undef MACHINE_FUNCTION_PASS

@boomanaiden154 boomanaiden154 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@AlexMaclean
AlexMaclean merged commit 64fc330 into llvm:main Aug 10, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants