aboutsummaryrefslogtreecommitdiff
path: root/backend/unittests/CodeGen
diff options
context:
space:
mode:
Diffstat (limited to 'backend/unittests/CodeGen')
-rw-r--r--backend/unittests/CodeGen/CMakeLists.txt8
-rw-r--r--backend/unittests/CodeGen/GlobalISel/CMakeLists.txt2
-rw-r--r--backend/unittests/CodeGen/GlobalISel/InstructionSelectTest.cpp26
-rw-r--r--backend/unittests/CodeGen/GlobalISel/LegalizerTest.cpp9
-rw-r--r--backend/unittests/CodeGen/GlobalISel/RegBankSelectTest.cpp10
-rw-r--r--backend/unittests/CodeGen/MachineOptimizationTest.cpp2
-rw-r--r--backend/unittests/CodeGen/MachineSchedulingTest.cpp2
7 files changed, 40 insertions, 19 deletions
diff --git a/backend/unittests/CodeGen/CMakeLists.txt b/backend/unittests/CodeGen/CMakeLists.txt
index 5f73d3b..3ae0f3d 100644
--- a/backend/unittests/CodeGen/CMakeLists.txt
+++ b/backend/unittests/CodeGen/CMakeLists.txt
@@ -348,6 +348,10 @@ target_link_libraries(
add_test(NAME RCCBackend.CodeGen.MachineAnalyses COMMAND RCCBackendCodeGenMachineAnalysesTests)
add_executable(RCCBackendCodeGenMachineOptimizationTests MachineOptimizationTest.cpp)
+target_include_directories(
+ RCCBackendCodeGenMachineOptimizationTests
+ PRIVATE "${RCC_BACKEND_SOURCE_DIR}/lib/Target/RISCV"
+)
rcc_backend_configure_target(RCCBackendCodeGenMachineOptimizationTests)
target_link_libraries(
RCCBackendCodeGenMachineOptimizationTests
@@ -356,6 +360,10 @@ target_link_libraries(
add_test(NAME RCCBackend.CodeGen.MachineOptimization COMMAND RCCBackendCodeGenMachineOptimizationTests)
add_executable(RCCBackendCodeGenMachineSchedulingTests MachineSchedulingTest.cpp)
+target_include_directories(
+ RCCBackendCodeGenMachineSchedulingTests
+ PRIVATE "${RCC_BACKEND_SOURCE_DIR}/lib/Target/RISCV"
+)
rcc_backend_configure_target(RCCBackendCodeGenMachineSchedulingTests)
target_link_libraries(
RCCBackendCodeGenMachineSchedulingTests
diff --git a/backend/unittests/CodeGen/GlobalISel/CMakeLists.txt b/backend/unittests/CodeGen/GlobalISel/CMakeLists.txt
index 319e31f..0ff962b 100644
--- a/backend/unittests/CodeGen/GlobalISel/CMakeLists.txt
+++ b/backend/unittests/CodeGen/GlobalISel/CMakeLists.txt
@@ -1,5 +1,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
+include_directories("${RCC_BACKEND_SOURCE_DIR}/lib/Target/RISCV")
+
add_executable(RCCBackendCodeGenLegalizerTests LegalizerTest.cpp)
rcc_backend_configure_target(RCCBackendCodeGenLegalizerTests)
target_link_libraries(
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 <algorithm>
#include <array>
@@ -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::Legalizer>(rcc::riscv::legalizerInfo())).has_value(),
+ Pipeline.addPass(std::make_unique<rcc::Legalizer>(Subtarget.getLegalizerInfo())).has_value(),
"legalizer must be accepted by the pass manager");
+ Context.expect(Pipeline.addPass(std::make_unique<rcc::RegBankSelect>(Subtarget.getRegBankInfo()))
+ .has_value(),
+ "register-bank selector must be accepted by the pass manager");
Context.expect(
- Pipeline.addPass(std::make_unique<rcc::RegBankSelect>(rcc::riscv::registerBankInfo()))
- .has_value(),
- "register-bank selector must be accepted by the pass manager");
- Context.expect(
- Pipeline.addPass(std::make_unique<rcc::InstructionSelect>(rcc::riscv::instructionSelector()))
+ Pipeline.addPass(std::make_unique<rcc::InstructionSelect>(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::Legalizer>(rcc::riscv::legalizerInfo())) ||
- !Pipeline.addPass(std::make_unique<rcc::RegBankSelect>(rcc::riscv::registerBankInfo())) ||
+ if (!Pipeline.addPass(std::make_unique<rcc::Legalizer>(Subtarget.getLegalizerInfo())) ||
+ !Pipeline.addPass(std::make_unique<rcc::RegBankSelect>(Subtarget.getRegBankInfo())) ||
!Pipeline.addPass(
- std::make_unique<rcc::InstructionSelect>(rcc::riscv::instructionSelector()))) {
+ std::make_unique<rcc::InstructionSelect>(Subtarget.getInstructionSelector()))) {
Context.expect(false, "extended RV64GC pipeline construction must succeed");
return;
}
diff --git a/backend/unittests/CodeGen/GlobalISel/LegalizerTest.cpp b/backend/unittests/CodeGen/GlobalISel/LegalizerTest.cpp
index 6280182..9cb8a67 100644
--- a/backend/unittests/CodeGen/GlobalISel/LegalizerTest.cpp
+++ b/backend/unittests/CodeGen/GlobalISel/LegalizerTest.cpp
@@ -3,7 +3,8 @@
#include "rcc/CodeGen/GlobalISel/Legalizer.h"
#include "GISelMITest.h"
-#include "rcc/Target/RISCV/RISCVCodeGen.h"
+#include "rcc/Target/RISCV/RISCVSubtarget.h"
+#include "rcc/Target/RISCV/RISCVTarget.h"
#include <cstdint>
#include <memory>
@@ -79,7 +80,8 @@ void testNullAndMissingContracts(TestContext &Context) {
Context.expect(Fixture.Function->properties().empty(),
"a rejected pass must not publish function properties");
- rcc::Legalizer ValidPass(rcc::riscv::legalizerInfo());
+ const rcc::riscv::RISCVSubtarget Subtarget(rcc::riscv::RISCVSubtargetFeatures::rv64gc());
+ rcc::Legalizer ValidPass(Subtarget.getLegalizerInfo());
auto MissingResult = ValidPass.run(*Fixture.Function, *Target, Analyses);
Context.expect(!MissingResult &&
MissingResult.error().code() == rcc::ErrorCode::VerificationError,
@@ -114,9 +116,10 @@ void testUnsupportedRollback(TestContext &Context) {
"unsupported floating operation must be constructible");
Unsupported.Function->properties() = {rcc::MachineFunctionProperty::IsSSA,
rcc::MachineFunctionProperty::TracksLiveness};
+ const rcc::riscv::RISCVSubtarget Subtarget(rcc::riscv::RISCVSubtargetFeatures::rv64gc());
rcc::MachinePassManager OnlyLegalizer;
Context.expect(
- OnlyLegalizer.addPass(std::make_unique<rcc::Legalizer>(rcc::riscv::legalizerInfo()))
+ OnlyLegalizer.addPass(std::make_unique<rcc::Legalizer>(Subtarget.getLegalizerInfo()))
.has_value(),
"standalone legalizer must be accepted");
rcc::MachineAnalysisManager UnsupportedAnalyses;
diff --git a/backend/unittests/CodeGen/GlobalISel/RegBankSelectTest.cpp b/backend/unittests/CodeGen/GlobalISel/RegBankSelectTest.cpp
index 3cfa888..d4925eb 100644
--- a/backend/unittests/CodeGen/GlobalISel/RegBankSelectTest.cpp
+++ b/backend/unittests/CodeGen/GlobalISel/RegBankSelectTest.cpp
@@ -2,8 +2,10 @@
#include "rcc/CodeGen/GlobalISel/RegBankSelect.h"
+#include "GISel/RISCVRegisterBankInfo.h"
#include "GISelMITest.h"
-#include "rcc/Target/RISCV/RISCVCodeGen.h"
+#include "rcc/Target/RISCV/RISCVSubtarget.h"
+#include "rcc/Target/RISCV/RISCVTarget.h"
#include <cstdint>
@@ -29,7 +31,8 @@ void testBankConflict(TestContext &Context) {
.has_value(),
"conflicting bank assignment must be constructible");
Fixture.Function->properties() = {rcc::MachineFunctionProperty::Legalized};
- rcc::RegBankSelect Pass(rcc::riscv::registerBankInfo());
+ const rcc::riscv::RISCVSubtarget Subtarget(rcc::riscv::RISCVSubtargetFeatures::rv64gc());
+ rcc::RegBankSelect Pass(Subtarget.getRegBankInfo());
rcc::MachineAnalysisManager Analyses;
auto Result = Pass.run(*Fixture.Function, *Target, Analyses);
Context.expect(!Result && Result.error().code() == rcc::ErrorCode::VerificationError,
@@ -61,7 +64,8 @@ void testBankClassOnlyChange(TestContext &Context) {
Context.expect(Fixture.Function->registerInfo().setRegisterBank(Value, GPR).has_value(),
"pre-existing GPR bank must be assignable");
Fixture.Function->properties() = {rcc::MachineFunctionProperty::Legalized};
- rcc::RegBankSelect Pass(rcc::riscv::registerBankInfo());
+ const rcc::riscv::RISCVSubtarget Subtarget(rcc::riscv::RISCVSubtargetFeatures::rv64gc());
+ rcc::RegBankSelect Pass(Subtarget.getRegBankInfo());
rcc::MachineAnalysisManager Analyses;
auto Result = Pass.run(*Fixture.Function, *Target, Analyses);
Context.expect(Result.has_value() && Result->Changed &&
diff --git a/backend/unittests/CodeGen/MachineOptimizationTest.cpp b/backend/unittests/CodeGen/MachineOptimizationTest.cpp
index d4a39fa..f4233f8 100644
--- a/backend/unittests/CodeGen/MachineOptimizationTest.cpp
+++ b/backend/unittests/CodeGen/MachineOptimizationTest.cpp
@@ -1,5 +1,6 @@
// SPDX-License-Identifier: GPL-3.0-or-later
+#include "RISCV.h"
#include "rcc/CodeGen/GenericOpcodes.h"
#include "rcc/CodeGen/MachineBasicBlock.h"
#include "rcc/CodeGen/MachineCFGUpdater.h"
@@ -17,7 +18,6 @@
#include "rcc/CodeGen/MachineRegisterInfo.h"
#include "rcc/CodeGen/MachineSink.h"
#include "rcc/CodeGen/TargetMemoryFolding.h"
-#include "rcc/Target/RISCV/RISCVCodeGen.h"
#include "rcc/Target/RISCV/RISCVTarget.h"
#include <cstdint>
diff --git a/backend/unittests/CodeGen/MachineSchedulingTest.cpp b/backend/unittests/CodeGen/MachineSchedulingTest.cpp
index a485146..83f7000 100644
--- a/backend/unittests/CodeGen/MachineSchedulingTest.cpp
+++ b/backend/unittests/CodeGen/MachineSchedulingTest.cpp
@@ -1,5 +1,6 @@
// SPDX-License-Identifier: GPL-3.0-or-later
+#include "RISCV.h"
#include "rcc/CodeGen/MachineBasicBlock.h"
#include "rcc/CodeGen/MachineFunction.h"
#include "rcc/CodeGen/MachineIRBuilder.h"
@@ -11,7 +12,6 @@
#include "rcc/CodeGen/ScheduleDAG.h"
#include "rcc/CodeGen/ScheduleHazardRecognizer.h"
#include "rcc/CodeGen/TargetSchedulingModel.h"
-#include "rcc/Target/RISCV/RISCVCodeGen.h"
#include "rcc/Target/RISCV/RISCVTarget.h"
#include <array>