From 0bb35fa2306a66f1f0baf118619b5c1640ed9c01 Mon Sep 17 00:00:00 2001 From: Richard-Qin-X Date: Wed, 12 Aug 2026 21:56:37 +0800 Subject: [GlobalISel] Split the generic pipeline components --- backend/lib/Target/RISCV/RISCVCodeGen.cpp | 14 +++++++------- backend/lib/Target/RISCV/RISCVPipeline.cpp | 16 +++++++++------- 2 files changed, 16 insertions(+), 14 deletions(-) (limited to 'backend/lib/Target') diff --git a/backend/lib/Target/RISCV/RISCVCodeGen.cpp b/backend/lib/Target/RISCV/RISCVCodeGen.cpp index 00dba94..b610d81 100644 --- a/backend/lib/Target/RISCV/RISCVCodeGen.cpp +++ b/backend/lib/Target/RISCV/RISCVCodeGen.cpp @@ -3250,7 +3250,7 @@ struct VACopyPlan final { return eraseInstruction(Instruction); } -class RISCVLegalizerInfo final : public TargetLegalizerInfo { +class RISCVLegalizerInfo final : public LegalizerInfo { public: explicit RISCVLegalizerInfo(RISCVSubtargetFeatures Features) : Features(Features) {} @@ -3985,7 +3985,7 @@ private: RISCVSubtargetFeatures Features; }; -class RISCVRegisterBankInfo final : public TargetRegisterBankInfo { +class RISCVRegisterBankInfo final : public RegisterBankInfo { public: [[nodiscard]] Expected selectBank(const MachineFunction &, Register, const VirtualRegisterInfo &Info, @@ -4049,7 +4049,7 @@ public: } }; -class RISCVInstructionSelector final : public TargetInstructionSelector { +class RISCVInstructionSelector final : public InstructionSelector { public: [[nodiscard]] Expected constrainSelectedInstruction(MachineInstr &Instruction, MachineFunction &Function, @@ -6514,21 +6514,21 @@ private: } // namespace -const TargetLegalizerInfo &legalizerInfo() noexcept { +const LegalizerInfo &legalizerInfo() noexcept { static const RISCVLegalizerInfo Value(RISCVSubtargetFeatures::rv64gc()); return Value; } -std::unique_ptr createLegalizerInfo(RISCVSubtargetFeatures Features) { +std::unique_ptr createLegalizerInfo(RISCVSubtargetFeatures Features) { return std::make_unique(Features); } -const TargetRegisterBankInfo ®isterBankInfo() noexcept { +const RegisterBankInfo ®isterBankInfo() noexcept { static const RISCVRegisterBankInfo Value; return Value; } -const TargetInstructionSelector &instructionSelector() noexcept { +const InstructionSelector &instructionSelector() noexcept { static const RISCVInstructionSelector Value; return Value; } diff --git a/backend/lib/Target/RISCV/RISCVPipeline.cpp b/backend/lib/Target/RISCV/RISCVPipeline.cpp index 08a4653..7c778ea 100644 --- a/backend/lib/Target/RISCV/RISCVPipeline.cpp +++ b/backend/lib/Target/RISCV/RISCVPipeline.cpp @@ -3,10 +3,12 @@ #include "rcc/Target/RISCV/RISCVPipeline.h" #include "RISCVInstrInfo.h" +#include "rcc/CodeGen/GlobalISel/InstructionSelect.h" +#include "rcc/CodeGen/GlobalISel/Legalizer.h" +#include "rcc/CodeGen/GlobalISel/RegBankSelect.h" #include "rcc/CodeGen/MachineCombiner.h" #include "rcc/CodeGen/MachineFunction.h" #include "rcc/CodeGen/MachineOptimizationPipeline.h" -#include "rcc/CodeGen/MachinePipelinePasses.h" #include "rcc/CodeGen/MachineSSAExit.h" #include "rcc/CodeGen/RegAllocPBQP.h" #include "rcc/CodeGen/TargetDescription.h" @@ -33,13 +35,13 @@ template MachineCombinerStage::PreLegalizer); if (!Added) return std::unexpected(Added.error()); - Added = addPass(Pipeline, createLegalizerInfo(Features)); + Added = addPass(Pipeline, createLegalizerInfo(Features)); if (!Added) return std::unexpected(Added.error()); - Added = addPass(Pipeline, registerBankInfo()); + Added = addPass(Pipeline, registerBankInfo()); if (!Added) return std::unexpected(Added.error()); - return addPass(Pipeline, instructionSelector()); + return addPass(Pipeline, instructionSelector()); } [[nodiscard]] Expected addSSAExitPipeline(MachinePassManager &Pipeline) { @@ -86,17 +88,17 @@ Expected addCanonicalPipeline(MachinePassManager &Pipeline, const MachineF MachineCombinerStage::PreLegalizer); if (!Added) return std::unexpected(Added.error()); - Added = addPass(Pipeline, createLegalizerInfo(Features)); + Added = addPass(Pipeline, createLegalizerInfo(Features)); if (!Added) return std::unexpected(Added.error()); } if (!Function.properties().has(MachineFunctionProperty::RegBankSelected)) { - auto Added = addPass(Pipeline, registerBankInfo()); + auto Added = addPass(Pipeline, registerBankInfo()); if (!Added) return std::unexpected(Added.error()); } if (!Function.properties().has(MachineFunctionProperty::Selected)) { - auto Added = addPass(Pipeline, instructionSelector()); + auto Added = addPass(Pipeline, instructionSelector()); if (!Added) return std::unexpected(Added.error()); } -- cgit v1.2.3