@@ -523,13 +523,13 @@ static DecodeStatus decodeCSSPushPopchk(MCInst &Inst, uint32_t Insn,
523523static DecodeStatus decodeRVCInstrRdRs1ImmZero (MCInst &Inst, uint32_t Insn,
524524 uint64_t Address,
525525 const MCDisassembler *Decoder) {
526+ DecodeStatus S = MCDisassembler::Success;
526527 uint32_t Rd = fieldFromInstruction (Insn, 7 , 5 );
527- [[maybe_unused]] DecodeStatus Result =
528- DecodeGPRNoX0RegisterClass (Inst, Rd, Address, Decoder);
529- assert (Result == MCDisassembler::Success && " Invalid register" );
528+ if (!Check (S, DecodeGPRNoX0RegisterClass (Inst, Rd, Address, Decoder)))
529+ return MCDisassembler::Fail;
530530 Inst.addOperand (Inst.getOperand (0 ));
531531 Inst.addOperand (MCOperand::createImm (0 ));
532- return MCDisassembler::Success ;
532+ return S ;
533533}
534534
535535static DecodeStatus decodeCSSPushPopchk (MCInst &Inst, uint32_t Insn,
@@ -569,34 +569,44 @@ decodeRVCInstrRdRs1UImmLog2XLenNonZero(MCInst &Inst, uint32_t Insn,
569569static DecodeStatus decodeRVCInstrRdRs2 (MCInst &Inst, uint32_t Insn,
570570 uint64_t Address,
571571 const MCDisassembler *Decoder) {
572+ DecodeStatus S = MCDisassembler::Success;
572573 uint32_t Rd = fieldFromInstruction (Insn, 7 , 5 );
573574 uint32_t Rs2 = fieldFromInstruction (Insn, 2 , 5 );
574- DecodeGPRRegisterClass (Inst, Rd, Address, Decoder);
575- DecodeGPRRegisterClass (Inst, Rs2, Address, Decoder);
576- return MCDisassembler::Success;
575+ if (!Check (S, DecodeGPRRegisterClass (Inst, Rd, Address, Decoder)))
576+ return MCDisassembler::Fail;
577+ if (!Check (S, DecodeGPRRegisterClass (Inst, Rs2, Address, Decoder)))
578+ return MCDisassembler::Fail;
579+ return S;
577580}
578581
579582static DecodeStatus decodeRVCInstrRdRs1Rs2 (MCInst &Inst, uint32_t Insn,
580583 uint64_t Address,
581584 const MCDisassembler *Decoder) {
585+ DecodeStatus S = MCDisassembler::Success;
582586 uint32_t Rd = fieldFromInstruction (Insn, 7 , 5 );
583587 uint32_t Rs2 = fieldFromInstruction (Insn, 2 , 5 );
584- DecodeGPRRegisterClass (Inst, Rd, Address, Decoder);
588+ if (!Check (S, DecodeGPRRegisterClass (Inst, Rd, Address, Decoder)))
589+ return MCDisassembler::Fail;
585590 Inst.addOperand (Inst.getOperand (0 ));
586- DecodeGPRRegisterClass (Inst, Rs2, Address, Decoder);
587- return MCDisassembler::Success;
591+ if (!Check (S, DecodeGPRRegisterClass (Inst, Rs2, Address, Decoder)))
592+ return MCDisassembler::Fail;
593+ return S;
588594}
589595
590596static DecodeStatus decodeXTHeadMemPair (MCInst &Inst, uint32_t Insn,
591597 uint64_t Address,
592598 const MCDisassembler *Decoder) {
599+ DecodeStatus S = MCDisassembler::Success;
593600 uint32_t Rd1 = fieldFromInstruction (Insn, 7 , 5 );
594601 uint32_t Rs1 = fieldFromInstruction (Insn, 15 , 5 );
595602 uint32_t Rd2 = fieldFromInstruction (Insn, 20 , 5 );
596603 uint32_t UImm2 = fieldFromInstruction (Insn, 25 , 2 );
597- DecodeGPRRegisterClass (Inst, Rd1, Address, Decoder);
598- DecodeGPRRegisterClass (Inst, Rd2, Address, Decoder);
599- DecodeGPRRegisterClass (Inst, Rs1, Address, Decoder);
604+ if (!Check (S, DecodeGPRRegisterClass (Inst, Rd1, Address, Decoder)))
605+ return MCDisassembler::Fail;
606+ if (!Check (S, DecodeGPRRegisterClass (Inst, Rd2, Address, Decoder)))
607+ return MCDisassembler::Fail;
608+ if (!Check (S, DecodeGPRRegisterClass (Inst, Rs1, Address, Decoder)))
609+ return MCDisassembler::Fail;
600610 [[maybe_unused]] DecodeStatus Result =
601611 decodeUImmOperand<2 >(Inst, UImm2, Address, Decoder);
602612 assert (Result == MCDisassembler::Success && " Invalid immediate" );
@@ -610,7 +620,7 @@ static DecodeStatus decodeXTHeadMemPair(MCInst &Inst, uint32_t Insn,
610620 else
611621 Inst.addOperand (MCOperand::createImm (4 ));
612622
613- return MCDisassembler::Success ;
623+ return S ;
614624}
615625
616626static DecodeStatus decodeZcmpRlist (MCInst &Inst, uint32_t Imm,
0 commit comments