-
Notifications
You must be signed in to change notification settings - Fork 12.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
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.
…#128… (llvm#128662) …471)" Reland llvm#128471 The Passes library was not linked in earlier.
…PM (llvm#128…" (llvm#128819) Reverts llvm#128662 Still a link error.
…#128… (llvm#128662) …471)" Reland llvm#128471 The Passes library was not linked in earlier.
…PM (llvm#128…" (llvm#128819) Reverts llvm#128662 Still a link error.
…#128… (llvm#128662) …471)" Reland llvm#128471 The Passes library was not linked in earlier.
…PM (llvm#128…" (llvm#128819) Reverts llvm#128662 Still a link error.
…#128… (llvm#128662) …471)" Reland llvm#128471 The Passes library was not linked in earlier.
…PM (llvm#128…" (llvm#128819) Reverts llvm#128662 Still a link error.
…471)"
Reland #128471
The Passes library was not linked in earlier.