aboutsummaryrefslogtreecommitdiff
path: root/backend/unittests/Target/RISCVMCEncodingCoverageTest.cpp
diff options
context:
space:
mode:
authorRichard-Qin-X <richard.qin.001@gmail.com>2026-08-12 03:02:45 +0800
committerRichard-Qin-X <richard.qin.001@gmail.com>2026-08-12 03:02:45 +0800
commit888e9b5bb57a79f4eee88a7926cb859e04823361 (patch)
tree58cba25d087e43862ba7de139b49e126f6d7445c /backend/unittests/Target/RISCVMCEncodingCoverageTest.cpp
parent23dad063b9172982467b69650ae334bbec63e759 (diff)
downloadrcc-project-888e9b5bb57a79f4eee88a7926cb859e04823361.tar.gz
rcc-project-888e9b5bb57a79f4eee88a7926cb859e04823361.tar.xz
[RISCV] Add Zba and Zbb instruction descriptions
Diffstat (limited to 'backend/unittests/Target/RISCVMCEncodingCoverageTest.cpp')
-rw-r--r--backend/unittests/Target/RISCVMCEncodingCoverageTest.cpp12
1 files changed, 9 insertions, 3 deletions
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<const rcc::riscv::AssemblyInstructionInfo> 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;
}