From 888e9b5bb57a79f4eee88a7926cb859e04823361 Mon Sep 17 00:00:00 2001 From: Richard-Qin-X Date: Wed, 12 Aug 2026 03:02:45 +0800 Subject: [RISCV] Add Zba and Zbb instruction descriptions --- backend/unittests/Target/RISCVMCEncodingCoverageTest.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'backend/unittests/Target/RISCVMCEncodingCoverageTest.cpp') diff --git a/backend/unittests/Target/RISCVMCEncodingCoverageTest.cpp b/backend/unittests/Target/RISCVMCEncodingCoverageTest.cpp index d66d19d..1a7157a 100644 --- a/backend/unittests/Target/RISCVMCEncodingCoverageTest.cpp +++ b/backend/unittests/Target/RISCVMCEncodingCoverageTest.cpp @@ -117,6 +117,7 @@ createStandardFixture(const rcc::InstructionDescriptor &Descriptor, addRegister(Result, Descriptor, Source1Encoding); addImmediate(Result, (Encoding >> 12U) & 7U); return Result; + case RD_RS1: case RD_FRS1: addRegister(Result, Descriptor, DestinationEncoding); addRegister(Result, Descriptor, Source1Encoding); @@ -138,12 +139,17 @@ createStandardFixture(const rcc::InstructionDescriptor &Descriptor, addImmediate(Result, (Encoding >> 20U) & 0xfU); return Result; } + if (Format == RD_RS1) { + addRegister(Result, Descriptor, DestinationEncoding); + addRegister(Result, Descriptor, Source1Encoding); + return Result; + } const bool FloatingDestination = Format == FRD_OFFSET_RS1; if (Format != RD_RS1_IMM && Format != RD_OFFSET_RS1 && !FloatingDestination) return fixtureError("unsupported I-type reference fixture format"); addRegister(Result, Descriptor, DestinationEncoding); addRegister(Result, Descriptor, Source1Encoding); - const bool Shift64 = Opcode == SLLI || Opcode == SRLI || Opcode == SRAI; + const bool Shift64 = Opcode == SLLI || Opcode == SLLI_UW || Opcode == SRLI || Opcode == SRAI; const bool Shift32 = Opcode == SLLIW || Opcode == SRLIW || Opcode == SRAIW; if (Shift64) addImmediate(Result, (Encoding >> 20U) & 0x3fU); @@ -387,8 +393,8 @@ int main() { } const std::span Instructions = rcc::riscv::assemblyInstructions(); - if (Instructions.size() != 195) { - std::cerr << "RV64GC encoding coverage does not contain all 195 instructions\n"; + if (Instructions.size() != 211) { + std::cerr << "RISC-V encoding coverage does not contain all 211 instructions\n"; return 1; } -- cgit v1.2.3