diff --git a/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp b/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp index 93cbf662bfa32..46b01417a1ea1 100644 --- a/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp +++ b/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp @@ -507,9 +507,6 @@ static DecodeStatus decodeXTHeadMemPair(MCInst &Inst, uint32_t Insn, static DecodeStatus decodeZcmpRlist(MCInst &Inst, uint32_t Imm, uint64_t Address, const void *Decoder); -static DecodeStatus decodeRegReg(MCInst &Inst, uint32_t Insn, uint64_t Address, - const MCDisassembler *Decoder); - static DecodeStatus decodeZcmpSpimm(MCInst &Inst, uint32_t Imm, uint64_t Address, const void *Decoder); @@ -621,15 +618,6 @@ static DecodeStatus decodeZcmpRlist(MCInst &Inst, uint32_t Imm, return MCDisassembler::Success; } -static DecodeStatus decodeRegReg(MCInst &Inst, uint32_t Insn, uint64_t Address, - const MCDisassembler *Decoder) { - uint32_t Rs1 = fieldFromInstruction(Insn, 0, 5); - uint32_t Rs2 = fieldFromInstruction(Insn, 5, 5); - DecodeGPRRegisterClass(Inst, Rs1, Address, Decoder); - DecodeGPRRegisterClass(Inst, Rs2, Address, Decoder); - return MCDisassembler::Success; -} - static DecodeStatus decodeZcmpSpimm(MCInst &Inst, uint32_t Imm, uint64_t Address, const void *Decoder) { Inst.addOperand(MCOperand::createImm(Imm)); diff --git a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCCodeEmitter.cpp b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCCodeEmitter.cpp index e589e6171d010..77d33f2e06871 100644 --- a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCCodeEmitter.cpp +++ b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCCodeEmitter.cpp @@ -103,10 +103,6 @@ class RISCVMCCodeEmitter : public MCCodeEmitter { unsigned getRlistOpValue(const MCInst &MI, unsigned OpNo, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const; - - unsigned getRegReg(const MCInst &MI, unsigned OpNo, - SmallVectorImpl &Fixups, - const MCSubtargetInfo &STI) const; }; } // end anonymous namespace @@ -621,17 +617,4 @@ unsigned RISCVMCCodeEmitter::getRlistOpValue(const MCInst &MI, unsigned OpNo, return Imm; } -unsigned RISCVMCCodeEmitter::getRegReg(const MCInst &MI, unsigned OpNo, - SmallVectorImpl &Fixups, - const MCSubtargetInfo &STI) const { - const MCOperand &MO = MI.getOperand(OpNo); - const MCOperand &MO1 = MI.getOperand(OpNo + 1); - assert(MO.isReg() && MO1.isReg() && "Expected registers."); - - unsigned Op = Ctx.getRegisterInfo()->getEncodingValue(MO.getReg()); - unsigned Op1 = Ctx.getRegisterInfo()->getEncodingValue(MO1.getReg()); - - return Op | Op1 << 5; -} - #include "RISCVGenMCCodeEmitter.inc" diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoXCV.td b/llvm/lib/Target/RISCV/RISCVInstrInfoXCV.td index e18a61ad79278..9ab7e1ca2936c 100644 --- a/llvm/lib/Target/RISCV/RISCVInstrInfoXCV.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoXCV.td @@ -24,10 +24,8 @@ def CVrrAsmOperand : AsmOperandClass { def CVrr : Operand, ComplexPattern { let ParserMatchClass = CVrrAsmOperand; - let EncoderMethod = "getRegReg"; - let DecoderMethod = "decodeRegReg"; let PrintMethod = "printRegReg"; - let MIOperandInfo = (ops GPR:$base, GPR:$offset); + let MIOperandInfo = (ops GPR:$offset, GPR:$base); } def cv_tuimm2 : TImmLeaf(Imm);}]>; @@ -288,17 +286,9 @@ class CVLoad_rr_inc funct7, bits<3> funct3, string opcodestr> } class CVLoad_rr funct7, bits<3> funct3, string opcodestr> - : RVInstR { - bits<5> rd; - bits<10> cvrr; - - let Inst{31-25} = funct7; - let Inst{24-20} = cvrr{4-0}; - let Inst{19-15} = cvrr{9-5}; - let Inst{14-12} = funct3; - let Inst{11-7} = rd; -} + : RVInstR; } // hasSideEffects = 0, mayLoad = 1, mayStore = 0 let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in { @@ -327,16 +317,17 @@ class CVStore_rr_inc funct3, bits<7> funct7, string opcodestr> class CVStore_rr funct3, bits<7> funct7, string opcodestr> - : RVInst<(outs), (ins GPR:$rs2, CVrr:$cvrr), opcodestr, "$rs2, $cvrr", [], - InstFormatOther> { + : RVInst<(outs), (ins GPR:$rs2, (CVrr $rs3, $rs1):$addr), opcodestr, + "$rs2, $addr", [], InstFormatOther> { + bits<5> rs1; bits<5> rs2; - bits<10> cvrr; + bits<5> rs3; let Inst{31-25} = funct7; let Inst{24-20} = rs2; - let Inst{19-15} = cvrr{9-5}; + let Inst{19-15} = rs1; let Inst{14-12} = funct3; - let Inst{11-7} = cvrr{4-0}; + let Inst{11-7} = rs3; let Inst{6-0} = OPC_CUSTOM_1.Value; } } // hasSideEffects = 0, mayLoad = 0, mayStore = 1