[llvm] [BPF][NewPM] Port SelectionDAG ISel (PR #207638)

Aiden Grossman via llvm-commits llvm-commits at lists.llvm.org
Sun Jul 5 20:03:22 PDT 2026


https://github.com/boomanaiden154 created https://github.com/llvm/llvm-project/pull/207638

Similar to MSP430 (f122acf2d0b8c806bfa7be81aea0344bfd6fc225).


>From b2cb2eb8f452678e4e624c4edb360f65e265d64e Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Mon, 6 Jul 2026 03:03:05 +0000
Subject: [PATCH] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20initia?=
 =?UTF-8?q?l=20version?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Created using spr 1.3.7
---
 llvm/lib/Target/BPF/BPF.h               | 7 +++++++
 llvm/lib/Target/BPF/BPFISelDAGToDAG.cpp | 3 +++
 llvm/lib/Target/BPF/BPFPassRegistry.def | 6 ++++++
 3 files changed, 16 insertions(+)

diff --git a/llvm/lib/Target/BPF/BPF.h b/llvm/lib/Target/BPF/BPF.h
index 8c35e61944482..f4370f7756fb7 100644
--- a/llvm/lib/Target/BPF/BPF.h
+++ b/llvm/lib/Target/BPF/BPF.h
@@ -10,6 +10,8 @@
 #define LLVM_LIB_TARGET_BPF_BPF_H
 
 #include "MCTargetDesc/BPFMCTargetDesc.h"
+#include "llvm/CodeGen/SelectionDAGISel.h"
+#include "llvm/IR/Analysis.h"
 #include "llvm/IR/Instructions.h"
 #include "llvm/IR/PassManager.h"
 #include "llvm/Pass.h"
@@ -26,6 +28,11 @@ class PassRegistry;
 
 ModulePass *createBPFCheckAndAdjustIR();
 
+class BPFISelDAGToDAGPass : public SelectionDAGISelPass {
+public:
+  BPFISelDAGToDAGPass(BPFTargetMachine &TM);
+};
+
 FunctionPass *createBPFISelDag(BPFTargetMachine &TM);
 FunctionPass *createBPFMISimplifyPatchablePass();
 FunctionPass *createBPFMIPeepholePass();
diff --git a/llvm/lib/Target/BPF/BPFISelDAGToDAG.cpp b/llvm/lib/Target/BPF/BPFISelDAGToDAG.cpp
index af034b134e632..473b336f315a7 100644
--- a/llvm/lib/Target/BPF/BPFISelDAGToDAG.cpp
+++ b/llvm/lib/Target/BPF/BPFISelDAGToDAG.cpp
@@ -503,3 +503,6 @@ void BPFDAGToDAGISel::PreprocessTrunc(SDNode *Node,
 FunctionPass *llvm::createBPFISelDag(BPFTargetMachine &TM) {
   return new BPFDAGToDAGISelLegacy(TM);
 }
+
+BPFISelDAGToDAGPass::BPFISelDAGToDAGPass(BPFTargetMachine &TM)
+    : SelectionDAGISelPass(std::make_unique<BPFDAGToDAGISel>(TM)) {}
diff --git a/llvm/lib/Target/BPF/BPFPassRegistry.def b/llvm/lib/Target/BPF/BPFPassRegistry.def
index 73a8ef2f95bf3..ec71fa21ea407 100644
--- a/llvm/lib/Target/BPF/BPFPassRegistry.def
+++ b/llvm/lib/Target/BPF/BPFPassRegistry.def
@@ -30,3 +30,9 @@ FUNCTION_PASS_WITH_PARAMS(
     },
     parseBPFPreserveStaticOffsetOptions, "allow-partial")
 #undef FUNCTION_PASS_WITH_PARAMS
+
+#ifndef MACHINE_FUNCTION_PASS
+#define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS)
+#endif
+MACHINE_FUNCTION_PASS("bpf-isel", BPFISelDAGToDAGPass(*this))
+#undef MACHINE_FUNCTION_PASS



More information about the llvm-commits mailing list