diff options
author | Sam Elliott <aelliott@qti.qualcomm.com> | 2025-09-11 16:51:37 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-09-11 08:51:37 -0700 |
commit | e1e65a4d91eaaadb00a7275b64bde7e70cb90a78 (patch) | |
tree | 275df9722f0a84df449bcf6bb17d63493cb97b7e /llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp | |
parent | 89e32acde5a8a0059219ca319ee6bb2114104b49 (diff) | |
download | llvm-e1e65a4d91eaaadb00a7275b64bde7e70cb90a78.zip llvm-e1e65a4d91eaaadb00a7275b64bde7e70cb90a78.tar.gz llvm-e1e65a4d91eaaadb00a7275b64bde7e70cb90a78.tar.bz2 |
[RISCV] Fix GPRPairNoX0 Disassembly (#158001)
Both GPRPair and GPRPairNoX0 were using the same decoder before this
change, which meant that GPRPairNoX0 would disassemble zeroes to the
`X0_Pair`.
This ensures the NoX0 decoder correctly fails to decode zeroes.
Diffstat (limited to 'llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp')
-rw-r--r-- | llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp b/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp index 89df9d8..61b86ab 100644 --- a/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp +++ b/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp @@ -255,6 +255,15 @@ static DecodeStatus DecodeGPRPairRegisterClass(MCInst &Inst, uint32_t RegNo, return MCDisassembler::Success; } +static DecodeStatus +DecodeGPRPairNoX0RegisterClass(MCInst &Inst, uint32_t RegNo, uint64_t Address, + const MCDisassembler *Decoder) { + if (RegNo == 0) + return MCDisassembler::Fail; + + return DecodeGPRPairRegisterClass(Inst, RegNo, Address, Decoder); +} + static DecodeStatus DecodeGPRPairCRegisterClass(MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder) { |