From 3341938bb644e6fc39afa6a8fcb1306604999e42 Mon Sep 17 00:00:00 2001 From: Richard-Qin-X Date: Wed, 12 Aug 2026 22:37:49 +0800 Subject: [RISCV] Split the GlobalISel target components --- .../CodeGen/GlobalISel/InstructionSelectTest.cpp | 26 +++++++++++++--------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'backend/unittests/CodeGen/GlobalISel/InstructionSelectTest.cpp') diff --git a/backend/unittests/CodeGen/GlobalISel/InstructionSelectTest.cpp b/backend/unittests/CodeGen/GlobalISel/InstructionSelectTest.cpp index 9e09934..e98f121 100644 --- a/backend/unittests/CodeGen/GlobalISel/InstructionSelectTest.cpp +++ b/backend/unittests/CodeGen/GlobalISel/InstructionSelectTest.cpp @@ -2,11 +2,13 @@ #include "rcc/CodeGen/GlobalISel/InstructionSelect.h" +#include "GISel/RISCVRegisterBankInfo.h" #include "GISelMITest.h" #include "rcc/CodeGen/GlobalISel/Legalizer.h" #include "rcc/CodeGen/GlobalISel/RegBankSelect.h" #include "rcc/CodeGen/MachineMemOperand.h" -#include "rcc/Target/RISCV/RISCVCodeGen.h" +#include "rcc/Target/RISCV/RISCVSubtarget.h" +#include "rcc/Target/RISCV/RISCVTarget.h" #include #include @@ -117,16 +119,16 @@ void testPipeline(TestContext &Context) { Fixture.Function->properties() = {rcc::MachineFunctionProperty::IsSSA, rcc::MachineFunctionProperty::TracksLiveness}; + const rcc::riscv::RISCVSubtarget Subtarget(rcc::riscv::RISCVSubtargetFeatures::rv64gc()); rcc::MachinePassManager Pipeline; Context.expect( - Pipeline.addPass(std::make_unique(rcc::riscv::legalizerInfo())).has_value(), + Pipeline.addPass(std::make_unique(Subtarget.getLegalizerInfo())).has_value(), "legalizer must be accepted by the pass manager"); + Context.expect(Pipeline.addPass(std::make_unique(Subtarget.getRegBankInfo())) + .has_value(), + "register-bank selector must be accepted by the pass manager"); Context.expect( - Pipeline.addPass(std::make_unique(rcc::riscv::registerBankInfo())) - .has_value(), - "register-bank selector must be accepted by the pass manager"); - Context.expect( - Pipeline.addPass(std::make_unique(rcc::riscv::instructionSelector())) + Pipeline.addPass(std::make_unique(Subtarget.getInstructionSelector())) .has_value(), "instruction selector must be accepted by the pass manager"); rcc::MachineAnalysisManager Analyses; @@ -198,7 +200,8 @@ void testInstructionSelectionOrder(TestContext &Context) { } Fixture.Function->properties() = {rcc::MachineFunctionProperty::Legalized, rcc::MachineFunctionProperty::RegBankSelected}; - RecordingSelector Selector(rcc::riscv::instructionSelector()); + const rcc::riscv::RISCVSubtarget Subtarget(rcc::riscv::RISCVSubtargetFeatures::rv64gc()); + RecordingSelector Selector(*Subtarget.getInstructionSelector()); rcc::InstructionSelect Pass(Selector); rcc::MachineAnalysisManager Analyses; auto Run = Pass.run(*Fixture.Function, *Target, Analyses); @@ -322,11 +325,12 @@ void testExtendedRV64GCPipeline(TestContext &Context) { Fixture.Function->properties() = {rcc::MachineFunctionProperty::IsSSA, rcc::MachineFunctionProperty::TracksLiveness}; + const rcc::riscv::RISCVSubtarget Subtarget(rcc::riscv::RISCVSubtargetFeatures::rv64gc()); rcc::MachinePassManager Pipeline; - if (!Pipeline.addPass(std::make_unique(rcc::riscv::legalizerInfo())) || - !Pipeline.addPass(std::make_unique(rcc::riscv::registerBankInfo())) || + if (!Pipeline.addPass(std::make_unique(Subtarget.getLegalizerInfo())) || + !Pipeline.addPass(std::make_unique(Subtarget.getRegBankInfo())) || !Pipeline.addPass( - std::make_unique(rcc::riscv::instructionSelector()))) { + std::make_unique(Subtarget.getInstructionSelector()))) { Context.expect(false, "extended RV64GC pipeline construction must succeed"); return; } -- cgit v1.2.3