llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-backend-spir-v Author: Aiden Grossman (boomanaiden154) <details> <summary>Changes</summary> Standard NewPM pass porting. Most of the implementation was already in static functions so this was pretty simple. --- Full diff: https://github.com/llvm/llvm-project/pull/219109.diff 5 Files Affected: - (modified) llvm/lib/Target/SPIRV/SPIRV.h (+10-2) - (modified) llvm/lib/Target/SPIRV/SPIRVCodeGenPassBuilder.cpp (+1-1) - (modified) llvm/lib/Target/SPIRV/SPIRVPassRegistry.def (+1) - (modified) llvm/lib/Target/SPIRV/SPIRVPostLegalizer.cpp (+23-8) - (modified) llvm/lib/Target/SPIRV/SPIRVTargetMachine.cpp (+2-2) ``````````diff diff --git a/llvm/lib/Target/SPIRV/SPIRV.h b/llvm/lib/Target/SPIRV/SPIRV.h index cbf951443f0bf..8ac55ee28b13f 100644 --- a/llvm/lib/Target/SPIRV/SPIRV.h +++ b/llvm/lib/Target/SPIRV/SPIRV.h @@ -136,7 +136,15 @@ class SPIRVPreLegalizerCombinerPass }; FunctionPass *createSPIRVPreLegalizerCombinerLegacyPass(); -FunctionPass *createSPIRVPostLegalizerPass(); + +class SPIRVPostLegalizerPass + : public RequiredPassInfoMixin<SPIRVPostLegalizerPass> { +public: + PreservedAnalyses run(MachineFunction &MF, + MachineFunctionAnalysisManager &MFAM); +}; + +FunctionPass *createSPIRVPostLegalizerLegacyPass(); class SPIRVEmitIntrinsicsPass : public RequiredPassInfoMixin<SPIRVEmitIntrinsicsPass> { @@ -175,7 +183,7 @@ void initializeSPIRVAsmPrinterPass(PassRegistry &); void initializeSPIRVConvergenceRegionAnalysisWrapperPassPass(PassRegistry &); void initializeSPIRVPreLegalizerLegacyPass(PassRegistry &); void initializeSPIRVPreLegalizerCombinerLegacyPass(PassRegistry &); -void initializeSPIRVPostLegalizerPass(PassRegistry &); +void initializeSPIRVPostLegalizerLegacyPass(PassRegistry &); void initializeSPIRVStructurizerPass(PassRegistry &); void initializeSPIRVCBufferAccessLegacyPass(PassRegistry &); void initializeSPIRVPushConstantAccessLegacyPass(PassRegistry &); diff --git a/llvm/lib/Target/SPIRV/SPIRVCodeGenPassBuilder.cpp b/llvm/lib/Target/SPIRV/SPIRVCodeGenPassBuilder.cpp index e01b8c296f0d8..9f5afe9ca5c77 100644 --- a/llvm/lib/Target/SPIRV/SPIRVCodeGenPassBuilder.cpp +++ b/llvm/lib/Target/SPIRV/SPIRVCodeGenPassBuilder.cpp @@ -157,7 +157,7 @@ void SPIRVCodeGenPassBuilder::addPreLegalizeMachineIR(PassManagerWrapper &PMW) { Error SPIRVCodeGenPassBuilder::addLegalizeMachineIR(PassManagerWrapper &PMW) { addMachineFunctionPass(LegalizerPass(), PMW); - // TODO(boomanaiden154): Add SPIRVPostLegalizerPass when it has been ported. + addMachineFunctionPass(SPIRVPostLegalizerPass(), PMW); return Error::success(); } diff --git a/llvm/lib/Target/SPIRV/SPIRVPassRegistry.def b/llvm/lib/Target/SPIRV/SPIRVPassRegistry.def index b759ab117f98c..070c8bfbc4898 100644 --- a/llvm/lib/Target/SPIRV/SPIRVPassRegistry.def +++ b/llvm/lib/Target/SPIRV/SPIRVPassRegistry.def @@ -45,6 +45,7 @@ FUNCTION_ANALYSIS("spirv-convergence-region", SPIRVConvergenceRegionAnalysis()) #ifndef MACHINE_FUNCTION_PASS #define MACHINE_FUNCTION_PASS(NAME, CREATE_PASS) #endif +MACHINE_FUNCTION_PASS("spirv-postlegalizer", SPIRVPostLegalizerPass()) MACHINE_FUNCTION_PASS("spirv-prelegalizer", SPIRVPreLegalizerPass()) MACHINE_FUNCTION_PASS("spirv-prelegalizer-combiner", SPIRVPreLegalizerCombinerPass()) #undef MACHINE_FUNCTION_PASS diff --git a/llvm/lib/Target/SPIRV/SPIRVPostLegalizer.cpp b/llvm/lib/Target/SPIRV/SPIRVPostLegalizer.cpp index 33abbe2eedaae..740ee7c128b8e 100644 --- a/llvm/lib/Target/SPIRV/SPIRVPostLegalizer.cpp +++ b/llvm/lib/Target/SPIRV/SPIRVPostLegalizer.cpp @@ -18,6 +18,10 @@ #include "SPIRVUtils.h" #include "llvm/CodeGen/GlobalISel/GenericMachineInstrs.h" #include "llvm/CodeGen/MachineFrameInfo.h" +#include "llvm/CodeGen/MachineFunction.h" +#include "llvm/CodeGen/MachineFunctionAnalysisManager.h" +#include "llvm/CodeGen/MachinePassManager.h" +#include "llvm/IR/Analysis.h" #include "llvm/IR/IntrinsicsSPIRV.h" #include "llvm/Support/Debug.h" #include <stack> @@ -27,10 +31,10 @@ using namespace llvm; namespace { -class SPIRVPostLegalizer : public MachineFunctionPass { +class SPIRVPostLegalizerLegacy : public MachineFunctionPass { public: static char ID; - SPIRVPostLegalizer() : MachineFunctionPass(ID) {} + SPIRVPostLegalizerLegacy() : MachineFunctionPass(ID) {} bool runOnMachineFunction(MachineFunction &MF) override; }; } // namespace @@ -553,7 +557,7 @@ static void ensureAssignTypeForTypeFolding(MachineFunction &MF, } } -bool SPIRVPostLegalizer::runOnMachineFunction(MachineFunction &MF) { +static bool runPostLegalizer(MachineFunction &MF) { // Initialize the type registry. const SPIRVSubtarget &ST = MF.getSubtarget<SPIRVSubtarget>(); SPIRVGlobalRegistry *GR = ST.getSPIRVGlobalRegistry(); @@ -563,11 +567,22 @@ bool SPIRVPostLegalizer::runOnMachineFunction(MachineFunction &MF) { return true; } -INITIALIZE_PASS(SPIRVPostLegalizer, DEBUG_TYPE, "SPIRV post legalizer", false, - false) +INITIALIZE_PASS(SPIRVPostLegalizerLegacy, DEBUG_TYPE, "SPIRV post legalizer", + false, false) -char SPIRVPostLegalizer::ID = 0; +char SPIRVPostLegalizerLegacy::ID = 0; -FunctionPass *llvm::createSPIRVPostLegalizerPass() { - return new SPIRVPostLegalizer(); +FunctionPass *llvm::createSPIRVPostLegalizerLegacyPass() { + return new SPIRVPostLegalizerLegacy(); +} + +bool SPIRVPostLegalizerLegacy::runOnMachineFunction(MachineFunction &MF) { + return runPostLegalizer(MF); +} + +PreservedAnalyses +SPIRVPostLegalizerPass::run(MachineFunction &MF, + MachineFunctionAnalysisManager &MFAM) { + return runPostLegalizer(MF) ? getMachineFunctionPassPreservedAnalyses() + : PreservedAnalyses::all(); } diff --git a/llvm/lib/Target/SPIRV/SPIRVTargetMachine.cpp b/llvm/lib/Target/SPIRV/SPIRVTargetMachine.cpp index e69eaab88c369..6999afbaf21be 100644 --- a/llvm/lib/Target/SPIRV/SPIRVTargetMachine.cpp +++ b/llvm/lib/Target/SPIRV/SPIRVTargetMachine.cpp @@ -57,7 +57,7 @@ extern "C" LLVM_ABI LLVM_EXTERNAL_VISIBILITY void LLVMInitializeSPIRVTarget() { initializeSPIRVLegalizeZeroSizeArraysLegacyPass(PR); initializeSPIRVRegularizerLegacyPass(PR); initializeSPIRVPreLegalizerLegacyPass(PR); - initializeSPIRVPostLegalizerPass(PR); + initializeSPIRVPostLegalizerLegacyPass(PR); initializeSPIRVMergeRegionExitTargetsLegacyPass(PR); initializeSPIRVEmitIntrinsicsLegacyPass(PR); initializeSPIRVPrepareFunctionsLegacyPass(PR); @@ -247,7 +247,7 @@ void SPIRVPassConfig::addPreLegalizeMachineIR() { // Use the default legalizer. bool SPIRVPassConfig::addLegalizeMachineIR() { addPass(new LegalizerLegacy()); - addPass(createSPIRVPostLegalizerPass()); + addPass(createSPIRVPostLegalizerLegacyPass()); return false; } `````````` </details> https://github.com/llvm/llvm-project/pull/219109 _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
