Reland "[AArch64][NPM] Chalk out the CodeGenPassBuilder for NPM (#128…#128662
Reland "[AArch64][NPM] Chalk out the CodeGenPassBuilder for NPM (#128…#128662
Conversation
|
@llvm/pr-subscribers-backend-aarch64 Author: Akshat Oke (optimisan) Changes…471)" The Passes library was not linked in earlier. Full diff: https://github.com/llvm/llvm-project/pull/128662.diff 4 Files Affected:
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"
|
|
@optimisan Thanks for the update! I just tried |
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/89/builds/17351 Here is the relevant piece of the build log for the reference |
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/80/builds/10557 Here is the relevant piece of the build log for the reference |
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/130/builds/10464 Here is the relevant piece of the build log for the reference |
…ilder for NPM (#128…" (#128819) Reverts llvm/llvm-project#128662 Still a link error.
…471)"
Reland #128471
The Passes library was not linked in earlier.