diff options
author | dong-miao <601183878@qq.com> | 2025-03-19 23:53:41 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-19 08:53:41 -0700 |
commit | 480202f0d16f7dbc5c650aea6e8dfd9eca5b999d (patch) | |
tree | 122ee11de5b488fb5d0ea0d28ffe1e490fb9c081 /llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp | |
parent | c5195ae2d0c1f3925f48ecb0cf037d3f67d45a85 (diff) | |
download | llvm-480202f0d16f7dbc5c650aea6e8dfd9eca5b999d.zip llvm-480202f0d16f7dbc5c650aea6e8dfd9eca5b999d.tar.gz llvm-480202f0d16f7dbc5c650aea6e8dfd9eca5b999d.tar.bz2 |
[RISCV] Add Zilsd and Zclsd Extensions (#131094)
This commit adds the Load/Store pair instructions (Zilsd) and Compressed
Load/Store pair instructions (Zclsd).
[Specification
link](https://github.com/riscv/riscv-isa-manual/blob/main/src/zilsd.adoc).
Diffstat (limited to 'llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp')
-rw-r--r-- | llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp b/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp index e3c4cc3..05bb6d3 100644 --- a/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp +++ b/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp @@ -224,6 +224,22 @@ static DecodeStatus DecodeGPRPairRegisterClass(MCInst &Inst, uint32_t RegNo, return MCDisassembler::Success; } +static DecodeStatus DecodeGPRPairCRegisterClass(MCInst &Inst, uint32_t RegNo, + uint64_t Address, + const MCDisassembler *Decoder) { + if (RegNo >= 8 || RegNo % 2) + return MCDisassembler::Fail; + + const RISCVDisassembler *Dis = + static_cast<const RISCVDisassembler *>(Decoder); + const MCRegisterInfo *RI = Dis->getContext().getRegisterInfo(); + MCRegister Reg = RI->getMatchingSuperReg( + RISCV::X8 + RegNo, RISCV::sub_gpr_even, + &RISCVMCRegisterClasses[RISCV::GPRPairCRegClassID]); + Inst.addOperand(MCOperand::createReg(Reg)); + return MCDisassembler::Success; +} + static DecodeStatus DecodeSR07RegisterClass(MCInst &Inst, uint32_t RegNo, uint64_t Address, const void *Decoder) { |