aboutsummaryrefslogtreecommitdiff
path: root/backend/unittests/CodeGen
diff options
context:
space:
mode:
authorRichard-Qin-X <richard.qin.001@gmail.com>2026-08-07 02:15:09 +0800
committerRichard-Qin-X <richard.qin.001@gmail.com>2026-08-07 02:15:09 +0800
commite16de95dce32f077361577377d5c52fc4ad78339 (patch)
treeea563652a95e6e32eb86ce68845a2005d83a85d5 /backend/unittests/CodeGen
parent76d89700953ddd81cf31ab8f260eddf67e93aa85 (diff)
downloadrcc-project-e16de95dce32f077361577377d5c52fc4ad78339.tar.gz
rcc-project-e16de95dce32f077361577377d5c52fc4ad78339.tar.xz
[RISCV] Add generated RV64GC register description
Add an RCC-owned build-time target description generator and the initial RV64GC register model. Keep ABI aliases separate from canonical MIR register spelling.
Diffstat (limited to 'backend/unittests/CodeGen')
-rw-r--r--backend/unittests/CodeGen/TargetRegisterInfoTest.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/backend/unittests/CodeGen/TargetRegisterInfoTest.cpp b/backend/unittests/CodeGen/TargetRegisterInfoTest.cpp
index da13e19..49f23c0 100644
--- a/backend/unittests/CodeGen/TargetRegisterInfoTest.cpp
+++ b/backend/unittests/CodeGen/TargetRegisterInfoTest.cpp
@@ -168,6 +168,19 @@ void testDescriptionRejection(TestContext &Context) {
}
{
auto Description = rcc::test::createTestTargetRegisterInfoDescription();
+ Description.PhysicalRegisters.front().AlternativeNames = {"later-name"};
+ Description.PhysicalRegisters[1].Name = "later-name";
+ Context.expect(!rcc::TargetRegisterInfo::create(std::move(Description)),
+ "canonical register names must not collide with earlier ABI aliases");
+ }
+ {
+ auto Description = rcc::test::createTestTargetRegisterInfoDescription();
+ Description.PhysicalRegisters.front().IsReserved = true;
+ Context.expect(!rcc::TargetRegisterInfo::create(std::move(Description)),
+ "statically reserved registers must not appear in allocation orders");
+ }
+ {
+ auto Description = rcc::test::createTestTargetRegisterInfoDescription();
Description.PhysicalSubRegisters.front().SubReg = phys(rcc::test::TestRegister::G1Low32);
Context.expect(!rcc::TargetRegisterInfo::create(std::move(Description)),
"subregister mappings with unrelated units must be rejected");