[llvm] e927cf6 - Reland "[AArch64][NPM] Chalk out the CodeGenPassBuilder for NPM (#128… (#128662)

via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 25 21:18:33 PST 2025


Author: Akshat Oke
Date: 2025-02-26T10:48:29+05:30
New Revision: e927cf6653a9df804ca0556d8a5985f86ed9147c

URL: https://github.com/llvm/llvm-project/commit/e927cf6653a9df804ca0556d8a5985f86ed9147c
DIFF: https://github.com/llvm/llvm-project/commit/e927cf6653a9df804ca0556d8a5985f86ed9147c.diff

LOG: Reland "[AArch64][NPM] Chalk out the CodeGenPassBuilder for NPM (#128… (#128662)

…471)"

Reland https://github.com/llvm/llvm-project/pull/128471

The Passes library was not linked in earlier.

Added: 
    

Modified: 
    llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
    llvm/lib/Target/AArch64/AArch64TargetMachine.h
    llvm/lib/Target/AArch64/CMakeLists.txt
    llvm/test/CodeGen/AArch64/machine-latecleanup-inlineasm.mir

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
index d10a0c0a08f89..7c8f101fa1538 100644
--- a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
+++ b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
@@ -41,6 +41,7 @@
 #include "llvm/MC/MCTargetOptions.h"
 #include "llvm/MC/TargetRegistry.h"
 #include "llvm/Pass.h"
+#include "llvm/Passes/CodeGenPassBuilder.h"
 #include "llvm/Passes/PassBuilder.h"
 #include "llvm/Support/CodeGen.h"
 #include "llvm/Support/CommandLine.h"
@@ -562,8 +563,39 @@ class AArch64PassConfig : public TargetPassConfig {
   std::unique_ptr<CSEConfigBase> getCSEConfig() const override;
 };
 
+class AArch64CodeGenPassBuilder
+    : public CodeGenPassBuilder<AArch64CodeGenPassBuilder,
+                                AArch64TargetMachine> {
+  using Base =
+      CodeGenPassBuilder<AArch64CodeGenPassBuilder, AArch64TargetMachine>;
+
+public:
+  AArch64CodeGenPassBuilder(AArch64TargetMachine &TM,
+                            const CGPassBuilderOption &Opts,
+                            PassInstrumentationCallbacks *PIC)
+      : CodeGenPassBuilder(TM, Opts, PIC) {}
+  void addPreISel(AddIRPass &) const {
+    // TODO: Add pre-isel passes
+  }
+  void addAsmPrinter(AddMachinePass &addPass, CreateMCStreamer) const {
+    // TODO: Add asm printer passes
+  }
+  Error addInstSelector(AddMachinePass &) const {
+    // TODO: Add instruction selector passes
+    return Error::success();
+  }
+};
+
 } // end anonymous namespace
 
+Error AArch64TargetMachine::buildCodeGenPipeline(
+    ModulePassManager &MPM, raw_pwrite_stream &Out, raw_pwrite_stream *DwoOut,
+    CodeGenFileType FileType, const CGPassBuilderOption &Opts,
+    PassInstrumentationCallbacks *PIC) {
+  AArch64CodeGenPassBuilder Builder(*this, Opts, PIC);
+  return Builder.buildPipeline(MPM, Out, DwoOut, FileType);
+}
+
 void AArch64TargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
 
   PB.registerLateLoopOptimizationsEPCallback(

diff  --git a/llvm/lib/Target/AArch64/AArch64TargetMachine.h b/llvm/lib/Target/AArch64/AArch64TargetMachine.h
index f8ba41f215430..4fb4581c63547 100644
--- a/llvm/lib/Target/AArch64/AArch64TargetMachine.h
+++ b/llvm/lib/Target/AArch64/AArch64TargetMachine.h
@@ -46,6 +46,12 @@ class AArch64TargetMachine : public CodeGenTargetMachineImpl {
   // Pass Pipeline Configuration
   TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
 
+  Error buildCodeGenPipeline(ModulePassManager &MPM, raw_pwrite_stream &Out,
+                             raw_pwrite_stream *DwoOut,
+                             CodeGenFileType FileType,
+                             const CGPassBuilderOption &Opts,
+                             PassInstrumentationCallbacks *PIC) override;
+
   void registerPassBuilderCallbacks(PassBuilder &PB) override;
 
   TargetTransformInfo getTargetTransformInfo(const Function &F) const override;

diff  --git a/llvm/lib/Target/AArch64/CMakeLists.txt b/llvm/lib/Target/AArch64/CMakeLists.txt
index 2300e479bc110..e7acc08f6f1eb 100644
--- a/llvm/lib/Target/AArch64/CMakeLists.txt
+++ b/llvm/lib/Target/AArch64/CMakeLists.txt
@@ -105,6 +105,7 @@ add_llvm_target(AArch64CodeGen
   Core
   GlobalISel
   MC
+  Passes
   Scalar
   SelectionDAG
   Support

diff  --git a/llvm/test/CodeGen/AArch64/machine-latecleanup-inlineasm.mir b/llvm/test/CodeGen/AArch64/machine-latecleanup-inlineasm.mir
index 9a8e5c6341bca..5ce0fca6cd179 100644
--- a/llvm/test/CodeGen/AArch64/machine-latecleanup-inlineasm.mir
+++ b/llvm/test/CodeGen/AArch64/machine-latecleanup-inlineasm.mir
@@ -1,6 +1,9 @@
 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2
 # RUN: llc -start-before=machine-latecleanup -stop-after=machine-latecleanup \
 # RUN:   -o - %s | FileCheck %s
+
+# RUN: llc -enable-new-pm -passes=machine-latecleanup \
+# RUN:   -o - %s | FileCheck %s
 --- |
   ; ModuleID = 'reduced5.ll'
   source_filename = "reduced5.ll"


        


More information about the llvm-commits mailing list