diff options
| author | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-12 03:29:35 +0800 |
|---|---|---|
| committer | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-12 03:29:35 +0800 |
| commit | a6f5957b69b8d492919967980d9abc6618aa5d05 (patch) | |
| tree | ca085c622dac5386375c92a800a5e1ea1d69c386 /backend/unittests | |
| parent | 6437353113cc011fe316c61da404fe86c472f776 (diff) | |
| download | rcc-project-a6f5957b69b8d492919967980d9abc6618aa5d05.tar.gz rcc-project-a6f5957b69b8d492919967980d9abc6618aa5d05.tar.xz | |
[RISCV] Describe vector physical registers
Diffstat (limited to 'backend/unittests')
| -rw-r--r-- | backend/unittests/Target/RISCVTargetTest.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/backend/unittests/Target/RISCVTargetTest.cpp b/backend/unittests/Target/RISCVTargetTest.cpp index 40f5f76..aed3cc2 100644 --- a/backend/unittests/Target/RISCVTargetTest.cpp +++ b/backend/unittests/Target/RISCVTargetTest.cpp @@ -52,11 +52,12 @@ void testRegisterFacts(TestContext &Context) { const rcc::PhysicalRegister F31F = registerID(rcc::riscv::PhysicalRegisterID::F31_F); const rcc::PhysicalRegister FFLAGS = registerID(rcc::riscv::PhysicalRegisterID::FFLAGS); const rcc::PhysicalRegister FRM = registerID(rcc::riscv::PhysicalRegisterID::FRM); + const rcc::PhysicalRegister V8 = registerID(rcc::riscv::PhysicalRegisterID::V8); Context.expect( - Registers->physicalRegisters().size() == 98 && Registers->registerUnits().size() == 66 && - Registers->registerClasses().size() == 10 && Registers->registerBanks().size() == 3, - "RV64GC must expose scalar, compressed, restricted, and status register classes"); + Registers->physicalRegisters().size() == 130 && Registers->registerUnits().size() == 98 && + Registers->registerClasses().size() == 11 && Registers->registerBanks().size() == 4, + "RISC-V must expose scalar, vector, restricted, and status physical registers"); Context.expect(Registers->physicalRegister("x0") != nullptr && Registers->physicalRegister("zero") == nullptr && Registers->physicalRegisterByAlternativeName("ZERO") != nullptr && @@ -80,6 +81,14 @@ void testRegisterFacts(TestContext &Context) { Registers->regsOverlap(F31D, F31F) && Registers->subRegister(F31D, rcc::SubRegIndex::fromValue(1)) == F31F, "FPR32 and FPR64 MIR views must retain encoding, overlap, and subregister facts"); + Context.expect(Registers->physicalRegister("v8") != nullptr && + Registers->physicalRegister("v8")->Reg == V8 && + Registers->physicalRegister("v8")->Encoding == 8 && + Registers->physicalRegisterMIRName(V8) == "v8" && + Registers->registerClass("vr") != nullptr && + !Registers->registerClass("vr")->Allocatable && + Registers->registerClassContains(Registers->registerClass("vr")->ID, V8), + "vector physical registers must retain LLVM MIR names and encodings"); Context.expect(Registers->physicalRegister("fflags") != nullptr && Registers->physicalRegister("fflags")->Reg == FFLAGS && Registers->isReservedRegister(FFLAGS) && |
