llvm/lib/Target/RISCV/RISCVGenMCCodeEmitter.inc

/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|*                                                                            *|
|* Machine Code Emitter                                                       *|
|*                                                                            *|
|* Automatically generated file, do not edit!                                 *|
|*                                                                            *|
\*===----------------------------------------------------------------------===*/

uint64_t RISCVMCCodeEmitter::getBinaryCodeForInstr(const MCInst &MI,
    SmallVectorImpl<MCFixup> &Fixups,
    const MCSubtargetInfo &STI) const {}

#ifdef GET_OPERAND_BIT_OFFSET
#undef GET_OPERAND_BIT_OFFSET

uint32_t RISCVMCCodeEmitter::getOperandBitOffset(const MCInst &MI,
    unsigned OpNum,
    const MCSubtargetInfo &STI) const {
  switch (MI.getOpcode()) {
    case RISCV::C_EBREAK:
    case RISCV::C_MOP1:
    case RISCV::C_MOP3:
    case RISCV::C_MOP5:
    case RISCV::C_MOP7:
    case RISCV::C_MOP9:
    case RISCV::C_MOP11:
    case RISCV::C_MOP13:
    case RISCV::C_MOP15:
    case RISCV::C_NOP:
    case RISCV::C_SSPOPCHK:
    case RISCV::C_SSPUSH:
    case RISCV::C_UNIMP:
    case RISCV::DRET:
    case RISCV::EBREAK:
    case RISCV::ECALL:
    case RISCV::FENCE_I:
    case RISCV::FENCE_TSO:
    case RISCV::MRET:
    case RISCV::SCTRCLR:
    case RISCV::SFENCE_INVAL_IR:
    case RISCV::SFENCE_W_INVAL:
    case RISCV::SF_CEASE:
    case RISCV::SRET:
    case RISCV::TH_DCACHE_CALL:
    case RISCV::TH_DCACHE_CIALL:
    case RISCV::TH_DCACHE_IALL:
    case RISCV::TH_ICACHE_IALL:
    case RISCV::TH_ICACHE_IALLS:
    case RISCV::TH_L2CACHE_CALL:
    case RISCV::TH_L2CACHE_CIALL:
    case RISCV::TH_L2CACHE_IALL:
    case RISCV::TH_SYNC:
    case RISCV::TH_SYNC_I:
    case RISCV::TH_SYNC_IS:
    case RISCV::TH_SYNC_S:
    case RISCV::UNIMP:
    case RISCV::WFI:
    case RISCV::WRS_NTO:
    case RISCV::WRS_STO: {
      break;
    }
    case RISCV::C_NOP_HINT: {
      switch (OpNum) {
      case 0:
        // op: imm
        return 2;
      }
      break;
    }
    case RISCV::CM_JALT:
    case RISCV::CM_JT: {
      switch (OpNum) {
      case 0:
        // op: index
        return 2;
      }
      break;
    }
    case RISCV::C_J:
    case RISCV::C_JAL: {
      switch (OpNum) {
      case 0:
        // op: offset
        return 2;
      }
      break;
    }
    case RISCV::InsnS: {
      switch (OpNum) {
      case 0:
        // op: opcode
        return 0;
      case 1:
        // op: funct3
        return 12;
      case 4:
        // op: imm12
        return 7;
      case 2:
        // op: rs2
        return 20;
      case 3:
        // op: rs1
        return 15;
      }
      break;
    }
    case RISCV::InsnB: {
      switch (OpNum) {
      case 0:
        // op: opcode
        return 0;
      case 1:
        // op: funct3
        return 12;
      case 4:
        // op: imm12
        return 7;
      case 3:
        // op: rs2
        return 20;
      case 2:
        // op: rs1
        return 15;
      }
      break;
    }
    case RISCV::InsnCJ: {
      switch (OpNum) {
      case 0:
        // op: opcode
        return 0;
      case 1:
        // op: funct3
        return 13;
      case 2:
        // op: imm11
        return 2;
      }
      break;
    }
    case RISCV::InsnCSS: {
      switch (OpNum) {
      case 0:
        // op: opcode
        return 0;
      case 1:
        // op: funct3
        return 13;
      case 3:
        // op: imm6
        return 7;
      case 2:
        // op: rs2
        return 2;
      }
      break;
    }
    case RISCV::InsnCB: {
      switch (OpNum) {
      case 0:
        // op: opcode
        return 0;
      case 1:
        // op: funct3
        return 13;
      case 3:
        // op: imm8
        return 2;
      case 2:
        // op: rs1
        return 7;
      }
      break;
    }
    case RISCV::InsnCS: {
      switch (OpNum) {
      case 0:
        // op: opcode
        return 0;
      case 1:
        // op: funct3
        return 13;
      case 4:
        // op: imm5
        return 5;
      case 2:
        // op: rs2
        return 2;
      case 3:
        // op: rs1
        return 7;
      }
      break;
    }
    case RISCV::FENCE: {
      switch (OpNum) {
      case 0:
        // op: pred
        return 24;
      case 1:
        // op: succ
        return 20;
      }
      break;
    }
    case RISCV::C_FLD:
    case RISCV::C_FLW:
    case RISCV::C_LBU:
    case RISCV::C_LD:
    case RISCV::C_LH:
    case RISCV::C_LHU:
    case RISCV::C_LW:
    case RISCV::QK_C_LBU:
    case RISCV::QK_C_LHU: {
      switch (OpNum) {
      case 0:
        // op: rd
        return 2;
      case 1:
        // op: rs1
        return 7;
      case 2:
        // op: imm
        return 5;
      }
      break;
    }
    case RISCV::CV_LBU_rr:
    case RISCV::CV_LB_rr:
    case RISCV::CV_LHU_rr:
    case RISCV::CV_LH_rr:
    case RISCV::CV_LW_rr: {
      switch (OpNum) {
      case 0:
        // op: rd
        return 7;
      case 1:
        // op: cvrr
        return 15;
      }
      break;
    }
    case RISCV::FLI_D:
    case RISCV::FLI_H:
    case RISCV::FLI_S: {
      switch (OpNum) {
      case 0:
        // op: rd
        return 7;
      case 1:
        // op: imm
        return 15;
      }
      break;
    }
    case RISCV::SSRDP: {
      switch (OpNum) {
      case 0:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::QK_C_LBUSP:
    case RISCV::QK_C_LHUSP:
    case RISCV::QK_C_SBSP:
    case RISCV::QK_C_SHSP: {
      switch (OpNum) {
      case 0:
        // op: rd_rs2
        return 2;
      case 2:
        // op: imm
        return 7;
      }
      break;
    }
    case RISCV::CM_POP:
    case RISCV::CM_POPRET:
    case RISCV::CM_POPRETZ:
    case RISCV::CM_PUSH: {
      switch (OpNum) {
      case 0:
        // op: rlist
        return 4;
      case 1:
        // op: stackadj
        return 2;
      }
      break;
    }
    case RISCV::CBO_CLEAN:
    case RISCV::CBO_FLUSH:
    case RISCV::CBO_INVAL:
    case RISCV::CBO_ZERO:
    case RISCV::SF_CDISCARD_D_L1:
    case RISCV::SF_CFLUSH_D_L1:
    case RISCV::SSPOPCHK:
    case RISCV::TH_DCACHE_CIPA:
    case RISCV::TH_DCACHE_CISW:
    case RISCV::TH_DCACHE_CIVA:
    case RISCV::TH_DCACHE_CPA:
    case RISCV::TH_DCACHE_CPAL1:
    case RISCV::TH_DCACHE_CSW:
    case RISCV::TH_DCACHE_CVA:
    case RISCV::TH_DCACHE_CVAL1:
    case RISCV::TH_DCACHE_IPA:
    case RISCV::TH_DCACHE_ISW:
    case RISCV::TH_DCACHE_IVA:
    case RISCV::TH_ICACHE_IPA:
    case RISCV::TH_ICACHE_IVA: {
      switch (OpNum) {
      case 0:
        // op: rs1
        return 15;
      }
      break;
    }
    case RISCV::C_MV: {
      switch (OpNum) {
      case 0:
        // op: rs1
        return 7;
      case 1:
        // op: rs2
        return 2;
      }
      break;
    }
    case RISCV::C_JALR:
    case RISCV::C_JR: {
      switch (OpNum) {
      case 0:
        // op: rs1
        return 7;
      }
      break;
    }
    case RISCV::CV_SB_rr:
    case RISCV::CV_SH_rr:
    case RISCV::CV_SW_rr: {
      switch (OpNum) {
      case 0:
        // op: rs2
        return 20;
      case 1:
        // op: cvrr
        return 7;
      }
      break;
    }
    case RISCV::HSV_B:
    case RISCV::HSV_D:
    case RISCV::HSV_H:
    case RISCV::HSV_W: {
      switch (OpNum) {
      case 0:
        // op: rs2
        return 20;
      case 1:
        // op: rs1
        return 15;
      }
      break;
    }
    case RISCV::SSPUSH: {
      switch (OpNum) {
      case 0:
        // op: rs2
        return 20;
      }
      break;
    }
    case RISCV::C_FSD:
    case RISCV::C_FSW:
    case RISCV::C_SB:
    case RISCV::C_SD:
    case RISCV::C_SH:
    case RISCV::C_SW:
    case RISCV::QK_C_SB:
    case RISCV::QK_C_SH: {
      switch (OpNum) {
      case 0:
        // op: rs2
        return 2;
      case 1:
        // op: rs1
        return 7;
      case 2:
        // op: imm
        return 5;
      }
      break;
    }
    case RISCV::Insn16:
    case RISCV::Insn32: {
      switch (OpNum) {
      case 0:
        // op: value
        return 0;
      }
      break;
    }
    case RISCV::VID_V: {
      switch (OpNum) {
      case 0:
        // op: vd
        return 7;
      case 1:
        // op: vm
        return 25;
      }
      break;
    }
    case RISCV::VMV_V_I: {
      switch (OpNum) {
      case 1:
        // op: imm
        return 15;
      case 0:
        // op: vd
        return 7;
      }
      break;
    }
    case RISCV::C_LI:
    case RISCV::C_LUI: {
      switch (OpNum) {
      case 1:
        // op: imm
        return 2;
      case 0:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::C_BEQZ:
    case RISCV::C_BNEZ: {
      switch (OpNum) {
      case 1:
        // op: imm
        return 2;
      case 0:
        // op: rs1
        return 7;
      }
      break;
    }
    case RISCV::C_LI_HINT:
    case RISCV::C_LUI_HINT: {
      switch (OpNum) {
      case 1:
        // op: imm
        return 2;
      }
      break;
    }
    case RISCV::PREFETCH_I:
    case RISCV::PREFETCH_R:
    case RISCV::PREFETCH_W: {
      switch (OpNum) {
      case 1:
        // op: imm12
        return 25;
      case 0:
        // op: rs1
        return 15;
      }
      break;
    }
    case RISCV::AUIPC:
    case RISCV::JAL:
    case RISCV::LUI: {
      switch (OpNum) {
      case 1:
        // op: imm20
        return 12;
      case 0:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::InsnI:
    case RISCV::InsnI_Mem: {
      switch (OpNum) {
      case 1:
        // op: opcode
        return 0;
      case 2:
        // op: funct3
        return 12;
      case 4:
        // op: imm12
        return 20;
      case 3:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::InsnCI: {
      switch (OpNum) {
      case 1:
        // op: opcode
        return 0;
      case 2:
        // op: funct3
        return 13;
      case 3:
        // op: imm6
        return 2;
      case 0:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::InsnCIW: {
      switch (OpNum) {
      case 1:
        // op: opcode
        return 0;
      case 2:
        // op: funct3
        return 13;
      case 3:
        // op: imm8
        return 5;
      case 0:
        // op: rd
        return 2;
      }
      break;
    }
    case RISCV::InsnCL: {
      switch (OpNum) {
      case 1:
        // op: opcode
        return 0;
      case 2:
        // op: funct3
        return 13;
      case 4:
        // op: imm5
        return 5;
      case 0:
        // op: rd
        return 2;
      case 3:
        // op: rs1
        return 7;
      }
      break;
    }
    case RISCV::InsnCR: {
      switch (OpNum) {
      case 1:
        // op: opcode
        return 0;
      case 2:
        // op: funct4
        return 12;
      case 3:
        // op: rs2
        return 2;
      case 0:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::InsnCA: {
      switch (OpNum) {
      case 1:
        // op: opcode
        return 0;
      case 2:
        // op: funct6
        return 10;
      case 3:
        // op: funct2
        return 5;
      case 0:
        // op: rd
        return 7;
      case 4:
        // op: rs2
        return 2;
      }
      break;
    }
    case RISCV::InsnJ:
    case RISCV::InsnU: {
      switch (OpNum) {
      case 1:
        // op: opcode
        return 0;
      case 2:
        // op: imm20
        return 12;
      case 0:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::InsnR4: {
      switch (OpNum) {
      case 1:
        // op: opcode
        return 0;
      case 3:
        // op: funct2
        return 25;
      case 2:
        // op: funct3
        return 12;
      case 6:
        // op: rs3
        return 27;
      case 5:
        // op: rs2
        return 20;
      case 4:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::InsnR: {
      switch (OpNum) {
      case 1:
        // op: opcode
        return 0;
      case 3:
        // op: funct7
        return 25;
      case 2:
        // op: funct3
        return 12;
      case 5:
        // op: rs2
        return 20;
      case 4:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::C_ADDI_HINT_IMM_ZERO:
    case RISCV::C_NOT:
    case RISCV::C_SEXT_B:
    case RISCV::C_SEXT_H:
    case RISCV::C_SLLI64_HINT:
    case RISCV::C_SRAI64_HINT:
    case RISCV::C_SRLI64_HINT:
    case RISCV::C_ZEXT_B:
    case RISCV::C_ZEXT_H:
    case RISCV::C_ZEXT_W: {
      switch (OpNum) {
      case 1:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::ADDI:
    case RISCV::ADDIW:
    case RISCV::ANDI:
    case RISCV::CV_ELW:
    case RISCV::FLD:
    case RISCV::FLH:
    case RISCV::FLW:
    case RISCV::JALR:
    case RISCV::LB:
    case RISCV::LBU:
    case RISCV::LD:
    case RISCV::LH:
    case RISCV::LHU:
    case RISCV::LW:
    case RISCV::LWU:
    case RISCV::ORI:
    case RISCV::SLTI:
    case RISCV::SLTIU:
    case RISCV::XORI: {
      switch (OpNum) {
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      case 2:
        // op: imm12
        return 20;
      }
      break;
    }
    case RISCV::CV_CLIP:
    case RISCV::CV_CLIPU: {
      switch (OpNum) {
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      case 2:
        // op: imm5
        return 20;
      }
      break;
    }
    case RISCV::CV_ADD_SCI_B:
    case RISCV::CV_ADD_SCI_H:
    case RISCV::CV_AND_SCI_B:
    case RISCV::CV_AND_SCI_H:
    case RISCV::CV_AVGU_SCI_B:
    case RISCV::CV_AVGU_SCI_H:
    case RISCV::CV_AVG_SCI_B:
    case RISCV::CV_AVG_SCI_H:
    case RISCV::CV_CMPEQ_SCI_B:
    case RISCV::CV_CMPEQ_SCI_H:
    case RISCV::CV_CMPGEU_SCI_B:
    case RISCV::CV_CMPGEU_SCI_H:
    case RISCV::CV_CMPGE_SCI_B:
    case RISCV::CV_CMPGE_SCI_H:
    case RISCV::CV_CMPGTU_SCI_B:
    case RISCV::CV_CMPGTU_SCI_H:
    case RISCV::CV_CMPGT_SCI_B:
    case RISCV::CV_CMPGT_SCI_H:
    case RISCV::CV_CMPLEU_SCI_B:
    case RISCV::CV_CMPLEU_SCI_H:
    case RISCV::CV_CMPLE_SCI_B:
    case RISCV::CV_CMPLE_SCI_H:
    case RISCV::CV_CMPLTU_SCI_B:
    case RISCV::CV_CMPLTU_SCI_H:
    case RISCV::CV_CMPLT_SCI_B:
    case RISCV::CV_CMPLT_SCI_H:
    case RISCV::CV_CMPNE_SCI_B:
    case RISCV::CV_CMPNE_SCI_H:
    case RISCV::CV_DOTSP_SCI_B:
    case RISCV::CV_DOTSP_SCI_H:
    case RISCV::CV_DOTUP_SCI_B:
    case RISCV::CV_DOTUP_SCI_H:
    case RISCV::CV_DOTUSP_SCI_B:
    case RISCV::CV_DOTUSP_SCI_H:
    case RISCV::CV_EXTRACTU_B:
    case RISCV::CV_EXTRACTU_H:
    case RISCV::CV_EXTRACT_B:
    case RISCV::CV_EXTRACT_H:
    case RISCV::CV_MAXU_SCI_B:
    case RISCV::CV_MAXU_SCI_H:
    case RISCV::CV_MAX_SCI_B:
    case RISCV::CV_MAX_SCI_H:
    case RISCV::CV_MINU_SCI_B:
    case RISCV::CV_MINU_SCI_H:
    case RISCV::CV_MIN_SCI_B:
    case RISCV::CV_MIN_SCI_H:
    case RISCV::CV_OR_SCI_B:
    case RISCV::CV_OR_SCI_H:
    case RISCV::CV_SHUFFLEI0_SCI_B:
    case RISCV::CV_SHUFFLEI1_SCI_B:
    case RISCV::CV_SHUFFLEI2_SCI_B:
    case RISCV::CV_SHUFFLEI3_SCI_B:
    case RISCV::CV_SHUFFLE_SCI_H:
    case RISCV::CV_SLL_SCI_B:
    case RISCV::CV_SLL_SCI_H:
    case RISCV::CV_SRA_SCI_B:
    case RISCV::CV_SRA_SCI_H:
    case RISCV::CV_SRL_SCI_B:
    case RISCV::CV_SRL_SCI_H:
    case RISCV::CV_SUB_SCI_B:
    case RISCV::CV_SUB_SCI_H:
    case RISCV::CV_XOR_SCI_B:
    case RISCV::CV_XOR_SCI_H: {
      switch (OpNum) {
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      case 2:
        // op: imm6
        return 20;
      }
      break;
    }
    case RISCV::CV_BCLR:
    case RISCV::CV_BITREV:
    case RISCV::CV_BSET:
    case RISCV::CV_EXTRACT:
    case RISCV::CV_EXTRACTU: {
      switch (OpNum) {
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      case 2:
        // op: is3
        return 25;
      case 3:
        // op: is2
        return 20;
      }
      break;
    }
    case RISCV::TH_EXT:
    case RISCV::TH_EXTU: {
      switch (OpNum) {
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      case 2:
        // op: msb
        return 26;
      case 3:
        // op: lsb
        return 20;
      }
      break;
    }
    case RISCV::AES64KS1I: {
      switch (OpNum) {
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      case 2:
        // op: rnum
        return 20;
      }
      break;
    }
    case RISCV::BCLRI:
    case RISCV::BEXTI:
    case RISCV::BINVI:
    case RISCV::BSETI:
    case RISCV::RORI:
    case RISCV::RORIW:
    case RISCV::SLLI:
    case RISCV::SLLIW:
    case RISCV::SLLI_UW:
    case RISCV::SRAI:
    case RISCV::SRAIW:
    case RISCV::SRLI:
    case RISCV::SRLIW:
    case RISCV::TH_SRRI:
    case RISCV::TH_SRRIW:
    case RISCV::TH_TST: {
      switch (OpNum) {
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      case 2:
        // op: shamt
        return 20;
      }
      break;
    }
    case RISCV::VSETVLI: {
      switch (OpNum) {
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      case 2:
        // op: vtypei
        return 20;
      }
      break;
    }
    case RISCV::AES64IM:
    case RISCV::BREV8:
    case RISCV::CLZ:
    case RISCV::CLZW:
    case RISCV::CPOP:
    case RISCV::CPOPW:
    case RISCV::CTZ:
    case RISCV::CTZW:
    case RISCV::CV_ABS:
    case RISCV::CV_ABS_B:
    case RISCV::CV_ABS_H:
    case RISCV::CV_CLB:
    case RISCV::CV_CNT:
    case RISCV::CV_CPLXCONJ:
    case RISCV::CV_EXTBS:
    case RISCV::CV_EXTBZ:
    case RISCV::CV_EXTHS:
    case RISCV::CV_EXTHZ:
    case RISCV::CV_FF1:
    case RISCV::CV_FL1:
    case RISCV::FCLASS_D:
    case RISCV::FCLASS_D_IN32X:
    case RISCV::FCLASS_D_INX:
    case RISCV::FCLASS_H:
    case RISCV::FCLASS_H_INX:
    case RISCV::FCLASS_S:
    case RISCV::FCLASS_S_INX:
    case RISCV::FMVH_X_D:
    case RISCV::FMV_D_X:
    case RISCV::FMV_H_X:
    case RISCV::FMV_W_X:
    case RISCV::FMV_X_D:
    case RISCV::FMV_X_H:
    case RISCV::FMV_X_W:
    case RISCV::FMV_X_W_FPR64:
    case RISCV::HLVX_HU:
    case RISCV::HLVX_WU:
    case RISCV::HLV_B:
    case RISCV::HLV_BU:
    case RISCV::HLV_D:
    case RISCV::HLV_H:
    case RISCV::HLV_HU:
    case RISCV::HLV_W:
    case RISCV::HLV_WU:
    case RISCV::LB_AQ:
    case RISCV::LB_AQ_RL:
    case RISCV::LD_AQ:
    case RISCV::LD_AQ_RL:
    case RISCV::LH_AQ:
    case RISCV::LH_AQ_RL:
    case RISCV::LR_D:
    case RISCV::LR_D_AQ:
    case RISCV::LR_D_AQ_RL:
    case RISCV::LR_D_RL:
    case RISCV::LR_W:
    case RISCV::LR_W_AQ:
    case RISCV::LR_W_AQ_RL:
    case RISCV::LR_W_RL:
    case RISCV::LW_AQ:
    case RISCV::LW_AQ_RL:
    case RISCV::MOPR0:
    case RISCV::MOPR1:
    case RISCV::MOPR2:
    case RISCV::MOPR3:
    case RISCV::MOPR4:
    case RISCV::MOPR5:
    case RISCV::MOPR6:
    case RISCV::MOPR7:
    case RISCV::MOPR8:
    case RISCV::MOPR9:
    case RISCV::MOPR10:
    case RISCV::MOPR11:
    case RISCV::MOPR12:
    case RISCV::MOPR13:
    case RISCV::MOPR14:
    case RISCV::MOPR15:
    case RISCV::MOPR16:
    case RISCV::MOPR17:
    case RISCV::MOPR18:
    case RISCV::MOPR19:
    case RISCV::MOPR20:
    case RISCV::MOPR21:
    case RISCV::MOPR22:
    case RISCV::MOPR23:
    case RISCV::MOPR24:
    case RISCV::MOPR25:
    case RISCV::MOPR26:
    case RISCV::MOPR27:
    case RISCV::MOPR28:
    case RISCV::MOPR29:
    case RISCV::MOPR30:
    case RISCV::MOPR31:
    case RISCV::ORC_B:
    case RISCV::REV8_RV32:
    case RISCV::REV8_RV64:
    case RISCV::SEXT_B:
    case RISCV::SEXT_H:
    case RISCV::SHA256SIG0:
    case RISCV::SHA256SIG1:
    case RISCV::SHA256SUM0:
    case RISCV::SHA256SUM1:
    case RISCV::SHA512SIG0:
    case RISCV::SHA512SIG1:
    case RISCV::SHA512SUM0:
    case RISCV::SHA512SUM1:
    case RISCV::SM3P0:
    case RISCV::SM3P1:
    case RISCV::TH_FF0:
    case RISCV::TH_FF1:
    case RISCV::TH_REV:
    case RISCV::TH_REVW:
    case RISCV::TH_TSTNBZ:
    case RISCV::UNZIP_RV32:
    case RISCV::ZEXT_H_RV32:
    case RISCV::ZEXT_H_RV64:
    case RISCV::ZIP_RV32: {
      switch (OpNum) {
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::VLE8FF_V:
    case RISCV::VLE8_V:
    case RISCV::VLE16FF_V:
    case RISCV::VLE16_V:
    case RISCV::VLE32FF_V:
    case RISCV::VLE32_V:
    case RISCV::VLE64FF_V:
    case RISCV::VLE64_V:
    case RISCV::VLSEG2E8FF_V:
    case RISCV::VLSEG2E8_V:
    case RISCV::VLSEG2E16FF_V:
    case RISCV::VLSEG2E16_V:
    case RISCV::VLSEG2E32FF_V:
    case RISCV::VLSEG2E32_V:
    case RISCV::VLSEG2E64FF_V:
    case RISCV::VLSEG2E64_V:
    case RISCV::VLSEG3E8FF_V:
    case RISCV::VLSEG3E8_V:
    case RISCV::VLSEG3E16FF_V:
    case RISCV::VLSEG3E16_V:
    case RISCV::VLSEG3E32FF_V:
    case RISCV::VLSEG3E32_V:
    case RISCV::VLSEG3E64FF_V:
    case RISCV::VLSEG3E64_V:
    case RISCV::VLSEG4E8FF_V:
    case RISCV::VLSEG4E8_V:
    case RISCV::VLSEG4E16FF_V:
    case RISCV::VLSEG4E16_V:
    case RISCV::VLSEG4E32FF_V:
    case RISCV::VLSEG4E32_V:
    case RISCV::VLSEG4E64FF_V:
    case RISCV::VLSEG4E64_V:
    case RISCV::VLSEG5E8FF_V:
    case RISCV::VLSEG5E8_V:
    case RISCV::VLSEG5E16FF_V:
    case RISCV::VLSEG5E16_V:
    case RISCV::VLSEG5E32FF_V:
    case RISCV::VLSEG5E32_V:
    case RISCV::VLSEG5E64FF_V:
    case RISCV::VLSEG5E64_V:
    case RISCV::VLSEG6E8FF_V:
    case RISCV::VLSEG6E8_V:
    case RISCV::VLSEG6E16FF_V:
    case RISCV::VLSEG6E16_V:
    case RISCV::VLSEG6E32FF_V:
    case RISCV::VLSEG6E32_V:
    case RISCV::VLSEG6E64FF_V:
    case RISCV::VLSEG6E64_V:
    case RISCV::VLSEG7E8FF_V:
    case RISCV::VLSEG7E8_V:
    case RISCV::VLSEG7E16FF_V:
    case RISCV::VLSEG7E16_V:
    case RISCV::VLSEG7E32FF_V:
    case RISCV::VLSEG7E32_V:
    case RISCV::VLSEG7E64FF_V:
    case RISCV::VLSEG7E64_V:
    case RISCV::VLSEG8E8FF_V:
    case RISCV::VLSEG8E8_V:
    case RISCV::VLSEG8E16FF_V:
    case RISCV::VLSEG8E16_V:
    case RISCV::VLSEG8E32FF_V:
    case RISCV::VLSEG8E32_V:
    case RISCV::VLSEG8E64FF_V:
    case RISCV::VLSEG8E64_V: {
      switch (OpNum) {
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: vd
        return 7;
      case 2:
        // op: vm
        return 25;
      }
      break;
    }
    case RISCV::VFMV_V_F:
    case RISCV::VL1RE8_V:
    case RISCV::VL1RE16_V:
    case RISCV::VL1RE32_V:
    case RISCV::VL1RE64_V:
    case RISCV::VL2RE8_V:
    case RISCV::VL2RE16_V:
    case RISCV::VL2RE32_V:
    case RISCV::VL2RE64_V:
    case RISCV::VL4RE8_V:
    case RISCV::VL4RE16_V:
    case RISCV::VL4RE32_V:
    case RISCV::VL4RE64_V:
    case RISCV::VL8RE8_V:
    case RISCV::VL8RE16_V:
    case RISCV::VL8RE32_V:
    case RISCV::VL8RE64_V:
    case RISCV::VLM_V:
    case RISCV::VMV_V_X: {
      switch (OpNum) {
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: vd
        return 7;
      }
      break;
    }
    case RISCV::VSE8_V:
    case RISCV::VSE16_V:
    case RISCV::VSE32_V:
    case RISCV::VSE64_V:
    case RISCV::VSSEG2E8_V:
    case RISCV::VSSEG2E16_V:
    case RISCV::VSSEG2E32_V:
    case RISCV::VSSEG2E64_V:
    case RISCV::VSSEG3E8_V:
    case RISCV::VSSEG3E16_V:
    case RISCV::VSSEG3E32_V:
    case RISCV::VSSEG3E64_V:
    case RISCV::VSSEG4E8_V:
    case RISCV::VSSEG4E16_V:
    case RISCV::VSSEG4E32_V:
    case RISCV::VSSEG4E64_V:
    case RISCV::VSSEG5E8_V:
    case RISCV::VSSEG5E16_V:
    case RISCV::VSSEG5E32_V:
    case RISCV::VSSEG5E64_V:
    case RISCV::VSSEG6E8_V:
    case RISCV::VSSEG6E16_V:
    case RISCV::VSSEG6E32_V:
    case RISCV::VSSEG6E64_V:
    case RISCV::VSSEG7E8_V:
    case RISCV::VSSEG7E16_V:
    case RISCV::VSSEG7E32_V:
    case RISCV::VSSEG7E64_V:
    case RISCV::VSSEG8E8_V:
    case RISCV::VSSEG8E16_V:
    case RISCV::VSSEG8E32_V:
    case RISCV::VSSEG8E64_V: {
      switch (OpNum) {
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: vs3
        return 7;
      case 2:
        // op: vm
        return 25;
      }
      break;
    }
    case RISCV::VS1R_V:
    case RISCV::VS2R_V:
    case RISCV::VS4R_V:
    case RISCV::VS8R_V:
    case RISCV::VSM_V: {
      switch (OpNum) {
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: vs3
        return 7;
      }
      break;
    }
    case RISCV::FCVTMOD_W_D:
    case RISCV::FCVT_BF16_S:
    case RISCV::FCVT_D_H:
    case RISCV::FCVT_D_H_IN32X:
    case RISCV::FCVT_D_H_INX:
    case RISCV::FCVT_D_L:
    case RISCV::FCVT_D_LU:
    case RISCV::FCVT_D_LU_INX:
    case RISCV::FCVT_D_L_INX:
    case RISCV::FCVT_D_S:
    case RISCV::FCVT_D_S_IN32X:
    case RISCV::FCVT_D_S_INX:
    case RISCV::FCVT_D_W:
    case RISCV::FCVT_D_WU:
    case RISCV::FCVT_D_WU_IN32X:
    case RISCV::FCVT_D_WU_INX:
    case RISCV::FCVT_D_W_IN32X:
    case RISCV::FCVT_D_W_INX:
    case RISCV::FCVT_H_D:
    case RISCV::FCVT_H_D_IN32X:
    case RISCV::FCVT_H_D_INX:
    case RISCV::FCVT_H_L:
    case RISCV::FCVT_H_LU:
    case RISCV::FCVT_H_LU_INX:
    case RISCV::FCVT_H_L_INX:
    case RISCV::FCVT_H_S:
    case RISCV::FCVT_H_S_INX:
    case RISCV::FCVT_H_W:
    case RISCV::FCVT_H_WU:
    case RISCV::FCVT_H_WU_INX:
    case RISCV::FCVT_H_W_INX:
    case RISCV::FCVT_LU_D:
    case RISCV::FCVT_LU_D_INX:
    case RISCV::FCVT_LU_H:
    case RISCV::FCVT_LU_H_INX:
    case RISCV::FCVT_LU_S:
    case RISCV::FCVT_LU_S_INX:
    case RISCV::FCVT_L_D:
    case RISCV::FCVT_L_D_INX:
    case RISCV::FCVT_L_H:
    case RISCV::FCVT_L_H_INX:
    case RISCV::FCVT_L_S:
    case RISCV::FCVT_L_S_INX:
    case RISCV::FCVT_S_BF16:
    case RISCV::FCVT_S_D:
    case RISCV::FCVT_S_D_IN32X:
    case RISCV::FCVT_S_D_INX:
    case RISCV::FCVT_S_H:
    case RISCV::FCVT_S_H_INX:
    case RISCV::FCVT_S_L:
    case RISCV::FCVT_S_LU:
    case RISCV::FCVT_S_LU_INX:
    case RISCV::FCVT_S_L_INX:
    case RISCV::FCVT_S_W:
    case RISCV::FCVT_S_WU:
    case RISCV::FCVT_S_WU_INX:
    case RISCV::FCVT_S_W_INX:
    case RISCV::FCVT_WU_D:
    case RISCV::FCVT_WU_D_IN32X:
    case RISCV::FCVT_WU_D_INX:
    case RISCV::FCVT_WU_H:
    case RISCV::FCVT_WU_H_INX:
    case RISCV::FCVT_WU_S:
    case RISCV::FCVT_WU_S_INX:
    case RISCV::FCVT_W_D:
    case RISCV::FCVT_W_D_IN32X:
    case RISCV::FCVT_W_D_INX:
    case RISCV::FCVT_W_H:
    case RISCV::FCVT_W_H_INX:
    case RISCV::FCVT_W_S:
    case RISCV::FCVT_W_S_INX:
    case RISCV::FROUNDNX_D:
    case RISCV::FROUNDNX_H:
    case RISCV::FROUNDNX_S:
    case RISCV::FROUND_D:
    case RISCV::FROUND_H:
    case RISCV::FROUND_S:
    case RISCV::FSQRT_D:
    case RISCV::FSQRT_D_IN32X:
    case RISCV::FSQRT_D_INX:
    case RISCV::FSQRT_H:
    case RISCV::FSQRT_H_INX:
    case RISCV::FSQRT_S:
    case RISCV::FSQRT_S_INX: {
      switch (OpNum) {
      case 1:
        // op: rs1
        return 15;
      case 2:
        // op: frm
        return 12;
      case 0:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::C_ADD: {
      switch (OpNum) {
      case 1:
        // op: rs1
        return 7;
      case 2:
        // op: rs2
        return 2;
      }
      break;
    }
    case RISCV::HFENCE_GVMA:
    case RISCV::HFENCE_VVMA:
    case RISCV::HINVAL_GVMA:
    case RISCV::HINVAL_VVMA:
    case RISCV::SB_AQ_RL:
    case RISCV::SB_RL:
    case RISCV::SD_AQ_RL:
    case RISCV::SD_RL:
    case RISCV::SFENCE_VMA:
    case RISCV::SH_AQ_RL:
    case RISCV::SH_RL:
    case RISCV::SINVAL_VMA:
    case RISCV::SW_AQ_RL:
    case RISCV::SW_RL:
    case RISCV::TH_SFENCE_VMAS: {
      switch (OpNum) {
      case 1:
        // op: rs2
        return 20;
      case 0:
        // op: rs1
        return 15;
      }
      break;
    }
    case RISCV::TH_LDD:
    case RISCV::TH_LWD:
    case RISCV::TH_LWUD:
    case RISCV::TH_SDD:
    case RISCV::TH_SWD: {
      switch (OpNum) {
      case 1:
        // op: rs2
        return 20;
      case 2:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      case 3:
        // op: uimm2
        return 25;
      }
      break;
    }
    case RISCV::VC_I:
    case RISCV::VC_X: {
      switch (OpNum) {
      case 1:
        // op: rs2
        return 20;
      case 3:
        // op: rs1
        return 15;
      case 2:
        // op: rd
        return 7;
      case 0:
        // op: funct6_lo2
        return 26;
      }
      break;
    }
    case RISCV::CM_MVA01S:
    case RISCV::CM_MVSA01: {
      switch (OpNum) {
      case 1:
        // op: rs2
        return 2;
      case 0:
        // op: rs1
        return 7;
      }
      break;
    }
    case RISCV::C_MV_HINT: {
      switch (OpNum) {
      case 1:
        // op: rs2
        return 2;
      }
      break;
    }
    case RISCV::VSETIVLI: {
      switch (OpNum) {
      case 1:
        // op: uimm
        return 15;
      case 0:
        // op: rd
        return 7;
      case 2:
        // op: vtypei
        return 20;
      }
      break;
    }
    case RISCV::VMV_V_V: {
      switch (OpNum) {
      case 1:
        // op: vs1
        return 15;
      case 0:
        // op: vd
        return 7;
      }
      break;
    }
    case RISCV::VBREV8_V:
    case RISCV::VBREV_V:
    case RISCV::VCLZ_V:
    case RISCV::VCPOP_M:
    case RISCV::VCPOP_V:
    case RISCV::VCTZ_V:
    case RISCV::VFCLASS_V:
    case RISCV::VFCVT_F_XU_V:
    case RISCV::VFCVT_F_X_V:
    case RISCV::VFCVT_RTZ_XU_F_V:
    case RISCV::VFCVT_RTZ_X_F_V:
    case RISCV::VFCVT_XU_F_V:
    case RISCV::VFCVT_X_F_V:
    case RISCV::VFIRST_M:
    case RISCV::VFNCVTBF16_F_F_W:
    case RISCV::VFNCVT_F_F_W:
    case RISCV::VFNCVT_F_XU_W:
    case RISCV::VFNCVT_F_X_W:
    case RISCV::VFNCVT_ROD_F_F_W:
    case RISCV::VFNCVT_RTZ_XU_F_W:
    case RISCV::VFNCVT_RTZ_X_F_W:
    case RISCV::VFNCVT_XU_F_W:
    case RISCV::VFNCVT_X_F_W:
    case RISCV::VFREC7_V:
    case RISCV::VFRSQRT7_V:
    case RISCV::VFSQRT_V:
    case RISCV::VFWCVTBF16_F_F_V:
    case RISCV::VFWCVT_F_F_V:
    case RISCV::VFWCVT_F_XU_V:
    case RISCV::VFWCVT_F_X_V:
    case RISCV::VFWCVT_RTZ_XU_F_V:
    case RISCV::VFWCVT_RTZ_X_F_V:
    case RISCV::VFWCVT_XU_F_V:
    case RISCV::VFWCVT_X_F_V:
    case RISCV::VIOTA_M:
    case RISCV::VMSBF_M:
    case RISCV::VMSIF_M:
    case RISCV::VMSOF_M:
    case RISCV::VREV8_V:
    case RISCV::VSEXT_VF2:
    case RISCV::VSEXT_VF4:
    case RISCV::VSEXT_VF8:
    case RISCV::VZEXT_VF2:
    case RISCV::VZEXT_VF4:
    case RISCV::VZEXT_VF8: {
      switch (OpNum) {
      case 1:
        // op: vs2
        return 20;
      case 0:
        // op: vd
        return 7;
      case 2:
        // op: vm
        return 25;
      }
      break;
    }
    case RISCV::VFMV_F_S:
    case RISCV::VMV1R_V:
    case RISCV::VMV2R_V:
    case RISCV::VMV4R_V:
    case RISCV::VMV8R_V:
    case RISCV::VMV_X_S: {
      switch (OpNum) {
      case 1:
        // op: vs2
        return 20;
      case 0:
        // op: vd
        return 7;
      }
      break;
    }
    case RISCV::VADD_VI:
    case RISCV::VAND_VI:
    case RISCV::VMSEQ_VI:
    case RISCV::VMSGTU_VI:
    case RISCV::VMSGT_VI:
    case RISCV::VMSLEU_VI:
    case RISCV::VMSLE_VI:
    case RISCV::VMSNE_VI:
    case RISCV::VNCLIPU_WI:
    case RISCV::VNCLIP_WI:
    case RISCV::VNSRA_WI:
    case RISCV::VNSRL_WI:
    case RISCV::VOR_VI:
    case RISCV::VRGATHER_VI:
    case RISCV::VROR_VI:
    case RISCV::VRSUB_VI:
    case RISCV::VSADDU_VI:
    case RISCV::VSADD_VI:
    case RISCV::VSLIDEDOWN_VI:
    case RISCV::VSLIDEUP_VI:
    case RISCV::VSLL_VI:
    case RISCV::VSRA_VI:
    case RISCV::VSRL_VI:
    case RISCV::VSSRA_VI:
    case RISCV::VSSRL_VI:
    case RISCV::VWSLL_VI:
    case RISCV::VXOR_VI: {
      switch (OpNum) {
      case 1:
        // op: vs2
        return 20;
      case 2:
        // op: imm
        return 15;
      case 0:
        // op: vd
        return 7;
      case 3:
        // op: vm
        return 25;
      }
      break;
    }
    case RISCV::VADC_VIM:
    case RISCV::VAESKF1_VI:
    case RISCV::VMADC_VI:
    case RISCV::VMADC_VIM:
    case RISCV::VMERGE_VIM:
    case RISCV::VSM4K_VI: {
      switch (OpNum) {
      case 1:
        // op: vs2
        return 20;
      case 2:
        // op: imm
        return 15;
      case 0:
        // op: vd
        return 7;
      }
      break;
    }
    case RISCV::VAADDU_VX:
    case RISCV::VAADD_VX:
    case RISCV::VADD_VX:
    case RISCV::VANDN_VX:
    case RISCV::VAND_VX:
    case RISCV::VASUBU_VX:
    case RISCV::VASUB_VX:
    case RISCV::VCLMULH_VX:
    case RISCV::VCLMUL_VX:
    case RISCV::VDIVU_VX:
    case RISCV::VDIV_VX:
    case RISCV::VFADD_VF:
    case RISCV::VFDIV_VF:
    case RISCV::VFMAX_VF:
    case RISCV::VFMIN_VF:
    case RISCV::VFMUL_VF:
    case RISCV::VFNRCLIP_XU_F_QF:
    case RISCV::VFNRCLIP_X_F_QF:
    case RISCV::VFRDIV_VF:
    case RISCV::VFRSUB_VF:
    case RISCV::VFSGNJN_VF:
    case RISCV::VFSGNJX_VF:
    case RISCV::VFSGNJ_VF:
    case RISCV::VFSLIDE1DOWN_VF:
    case RISCV::VFSLIDE1UP_VF:
    case RISCV::VFSUB_VF:
    case RISCV::VFWADD_VF:
    case RISCV::VFWADD_WF:
    case RISCV::VFWMUL_VF:
    case RISCV::VFWSUB_VF:
    case RISCV::VFWSUB_WF:
    case RISCV::VMAXU_VX:
    case RISCV::VMAX_VX:
    case RISCV::VMFEQ_VF:
    case RISCV::VMFGE_VF:
    case RISCV::VMFGT_VF:
    case RISCV::VMFLE_VF:
    case RISCV::VMFLT_VF:
    case RISCV::VMFNE_VF:
    case RISCV::VMINU_VX:
    case RISCV::VMIN_VX:
    case RISCV::VMSEQ_VX:
    case RISCV::VMSGTU_VX:
    case RISCV::VMSGT_VX:
    case RISCV::VMSLEU_VX:
    case RISCV::VMSLE_VX:
    case RISCV::VMSLTU_VX:
    case RISCV::VMSLT_VX:
    case RISCV::VMSNE_VX:
    case RISCV::VMULHSU_VX:
    case RISCV::VMULHU_VX:
    case RISCV::VMULH_VX:
    case RISCV::VMUL_VX:
    case RISCV::VNCLIPU_WX:
    case RISCV::VNCLIP_WX:
    case RISCV::VNSRA_WX:
    case RISCV::VNSRL_WX:
    case RISCV::VOR_VX:
    case RISCV::VREMU_VX:
    case RISCV::VREM_VX:
    case RISCV::VRGATHER_VX:
    case RISCV::VROL_VX:
    case RISCV::VROR_VX:
    case RISCV::VRSUB_VX:
    case RISCV::VSADDU_VX:
    case RISCV::VSADD_VX:
    case RISCV::VSLIDE1DOWN_VX:
    case RISCV::VSLIDE1UP_VX:
    case RISCV::VSLIDEDOWN_VX:
    case RISCV::VSLIDEUP_VX:
    case RISCV::VSLL_VX:
    case RISCV::VSMUL_VX:
    case RISCV::VSRA_VX:
    case RISCV::VSRL_VX:
    case RISCV::VSSRA_VX:
    case RISCV::VSSRL_VX:
    case RISCV::VSSUBU_VX:
    case RISCV::VSSUB_VX:
    case RISCV::VSUB_VX:
    case RISCV::VWADDU_VX:
    case RISCV::VWADDU_WX:
    case RISCV::VWADD_VX:
    case RISCV::VWADD_WX:
    case RISCV::VWMULSU_VX:
    case RISCV::VWMULU_VX:
    case RISCV::VWMUL_VX:
    case RISCV::VWSLL_VX:
    case RISCV::VWSUBU_VX:
    case RISCV::VWSUBU_WX:
    case RISCV::VWSUB_VX:
    case RISCV::VWSUB_WX:
    case RISCV::VXOR_VX: {
      switch (OpNum) {
      case 1:
        // op: vs2
        return 20;
      case 2:
        // op: rs1
        return 15;
      case 0:
        // op: vd
        return 7;
      case 3:
        // op: vm
        return 25;
      }
      break;
    }
    case RISCV::VADC_VXM:
    case RISCV::VFMERGE_VFM:
    case RISCV::VMADC_VX:
    case RISCV::VMADC_VXM:
    case RISCV::VMERGE_VXM:
    case RISCV::VMSBC_VX:
    case RISCV::VMSBC_VXM:
    case RISCV::VSBC_VXM: {
      switch (OpNum) {
      case 1:
        // op: vs2
        return 20;
      case 2:
        // op: rs1
        return 15;
      case 0:
        // op: vd
        return 7;
      }
      break;
    }
    case RISCV::VAADDU_VV:
    case RISCV::VAADD_VV:
    case RISCV::VADD_VV:
    case RISCV::VANDN_VV:
    case RISCV::VAND_VV:
    case RISCV::VASUBU_VV:
    case RISCV::VASUB_VV:
    case RISCV::VCLMULH_VV:
    case RISCV::VCLMUL_VV:
    case RISCV::VDIVU_VV:
    case RISCV::VDIV_VV:
    case RISCV::VFADD_VV:
    case RISCV::VFDIV_VV:
    case RISCV::VFMAX_VV:
    case RISCV::VFMIN_VV:
    case RISCV::VFMUL_VV:
    case RISCV::VFREDMAX_VS:
    case RISCV::VFREDMIN_VS:
    case RISCV::VFREDOSUM_VS:
    case RISCV::VFREDUSUM_VS:
    case RISCV::VFSGNJN_VV:
    case RISCV::VFSGNJX_VV:
    case RISCV::VFSGNJ_VV:
    case RISCV::VFSUB_VV:
    case RISCV::VFWADD_VV:
    case RISCV::VFWADD_WV:
    case RISCV::VFWMUL_VV:
    case RISCV::VFWREDOSUM_VS:
    case RISCV::VFWREDUSUM_VS:
    case RISCV::VFWSUB_VV:
    case RISCV::VFWSUB_WV:
    case RISCV::VMAXU_VV:
    case RISCV::VMAX_VV:
    case RISCV::VMFEQ_VV:
    case RISCV::VMFLE_VV:
    case RISCV::VMFLT_VV:
    case RISCV::VMFNE_VV:
    case RISCV::VMINU_VV:
    case RISCV::VMIN_VV:
    case RISCV::VMSEQ_VV:
    case RISCV::VMSLEU_VV:
    case RISCV::VMSLE_VV:
    case RISCV::VMSLTU_VV:
    case RISCV::VMSLT_VV:
    case RISCV::VMSNE_VV:
    case RISCV::VMULHSU_VV:
    case RISCV::VMULHU_VV:
    case RISCV::VMULH_VV:
    case RISCV::VMUL_VV:
    case RISCV::VNCLIPU_WV:
    case RISCV::VNCLIP_WV:
    case RISCV::VNSRA_WV:
    case RISCV::VNSRL_WV:
    case RISCV::VOR_VV:
    case RISCV::VREDAND_VS:
    case RISCV::VREDMAXU_VS:
    case RISCV::VREDMAX_VS:
    case RISCV::VREDMINU_VS:
    case RISCV::VREDMIN_VS:
    case RISCV::VREDOR_VS:
    case RISCV::VREDSUM_VS:
    case RISCV::VREDXOR_VS:
    case RISCV::VREMU_VV:
    case RISCV::VREM_VV:
    case RISCV::VRGATHEREI16_VV:
    case RISCV::VRGATHER_VV:
    case RISCV::VROL_VV:
    case RISCV::VROR_VV:
    case RISCV::VSADDU_VV:
    case RISCV::VSADD_VV:
    case RISCV::VSLL_VV:
    case RISCV::VSMUL_VV:
    case RISCV::VSRA_VV:
    case RISCV::VSRL_VV:
    case RISCV::VSSRA_VV:
    case RISCV::VSSRL_VV:
    case RISCV::VSSUBU_VV:
    case RISCV::VSSUB_VV:
    case RISCV::VSUB_VV:
    case RISCV::VWADDU_VV:
    case RISCV::VWADDU_WV:
    case RISCV::VWADD_VV:
    case RISCV::VWADD_WV:
    case RISCV::VWMULSU_VV:
    case RISCV::VWMULU_VV:
    case RISCV::VWMUL_VV:
    case RISCV::VWREDSUMU_VS:
    case RISCV::VWREDSUM_VS:
    case RISCV::VWSLL_VV:
    case RISCV::VWSUBU_VV:
    case RISCV::VWSUBU_WV:
    case RISCV::VWSUB_VV:
    case RISCV::VWSUB_WV:
    case RISCV::VXOR_VV: {
      switch (OpNum) {
      case 1:
        // op: vs2
        return 20;
      case 2:
        // op: vs1
        return 15;
      case 0:
        // op: vd
        return 7;
      case 3:
        // op: vm
        return 25;
      }
      break;
    }
    case RISCV::VADC_VVM:
    case RISCV::VCOMPRESS_VM:
    case RISCV::VMADC_VV:
    case RISCV::VMADC_VVM:
    case RISCV::VMANDN_MM:
    case RISCV::VMAND_MM:
    case RISCV::VMERGE_VVM:
    case RISCV::VMNAND_MM:
    case RISCV::VMNOR_MM:
    case RISCV::VMORN_MM:
    case RISCV::VMOR_MM:
    case RISCV::VMSBC_VV:
    case RISCV::VMSBC_VVM:
    case RISCV::VMXNOR_MM:
    case RISCV::VMXOR_MM:
    case RISCV::VSBC_VVM:
    case RISCV::VSM3ME_VV: {
      switch (OpNum) {
      case 1:
        // op: vs2
        return 20;
      case 2:
        // op: vs1
        return 15;
      case 0:
        // op: vd
        return 7;
      }
      break;
    }
    case RISCV::C_ADDI_NOP: {
      switch (OpNum) {
      case 2:
        // op: imm
        return 12;
      case 1:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::C_FLDSP:
    case RISCV::C_FLWSP:
    case RISCV::C_LDSP:
    case RISCV::C_LWSP: {
      switch (OpNum) {
      case 2:
        // op: imm
        return 2;
      case 0:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::C_ADDI:
    case RISCV::C_ADDIW:
    case RISCV::C_SLLI: {
      switch (OpNum) {
      case 2:
        // op: imm
        return 2;
      case 1:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::C_ANDI:
    case RISCV::C_SRAI:
    case RISCV::C_SRLI: {
      switch (OpNum) {
      case 2:
        // op: imm
        return 2;
      case 1:
        // op: rs1
        return 7;
      }
      break;
    }
    case RISCV::C_ADDI16SP:
    case RISCV::C_SLLI_HINT: {
      switch (OpNum) {
      case 2:
        // op: imm
        return 2;
      }
      break;
    }
    case RISCV::C_ADDI4SPN: {
      switch (OpNum) {
      case 2:
        // op: imm
        return 5;
      case 0:
        // op: rd
        return 2;
      }
      break;
    }
    case RISCV::C_FSDSP:
    case RISCV::C_FSWSP:
    case RISCV::C_SDSP:
    case RISCV::C_SWSP: {
      switch (OpNum) {
      case 2:
        // op: imm
        return 7;
      case 0:
        // op: rs2
        return 2;
      }
      break;
    }
    case RISCV::CV_BEQIMM:
    case RISCV::CV_BNEIMM: {
      switch (OpNum) {
      case 2:
        // op: imm12
        return 7;
      case 0:
        // op: rs1
        return 15;
      case 1:
        // op: imm5
        return 20;
      }
      break;
    }
    case RISCV::FSD:
    case RISCV::FSH:
    case RISCV::FSW:
    case RISCV::SB:
    case RISCV::SD:
    case RISCV::SH:
    case RISCV::SW: {
      switch (OpNum) {
      case 2:
        // op: imm12
        return 7;
      case 0:
        // op: rs2
        return 20;
      case 1:
        // op: rs1
        return 15;
      }
      break;
    }
    case RISCV::BEQ:
    case RISCV::BGE:
    case RISCV::BGEU:
    case RISCV::BLT:
    case RISCV::BLTU:
    case RISCV::BNE: {
      switch (OpNum) {
      case 2:
        // op: imm12
        return 7;
      case 1:
        // op: rs2
        return 20;
      case 0:
        // op: rs1
        return 15;
      }
      break;
    }
    case RISCV::CSRRC:
    case RISCV::CSRRCI:
    case RISCV::CSRRS:
    case RISCV::CSRRSI:
    case RISCV::CSRRW:
    case RISCV::CSRRWI: {
      switch (OpNum) {
      case 2:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      case 1:
        // op: imm12
        return 20;
      }
      break;
    }
    case RISCV::CV_LBU_ri_inc:
    case RISCV::CV_LB_ri_inc:
    case RISCV::CV_LHU_ri_inc:
    case RISCV::CV_LH_ri_inc:
    case RISCV::CV_LW_ri_inc: {
      switch (OpNum) {
      case 2:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      case 3:
        // op: imm12
        return 20;
      }
      break;
    }
    case RISCV::TH_LBIA:
    case RISCV::TH_LBIB:
    case RISCV::TH_LBUIA:
    case RISCV::TH_LBUIB:
    case RISCV::TH_LDIA:
    case RISCV::TH_LDIB:
    case RISCV::TH_LHIA:
    case RISCV::TH_LHIB:
    case RISCV::TH_LHUIA:
    case RISCV::TH_LHUIB:
    case RISCV::TH_LWIA:
    case RISCV::TH_LWIB:
    case RISCV::TH_LWUIA:
    case RISCV::TH_LWUIB: {
      switch (OpNum) {
      case 2:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      case 3:
        // op: simm5
        return 20;
      case 4:
        // op: uimm2
        return 25;
      }
      break;
    }
    case RISCV::CV_INSERT_B:
    case RISCV::CV_INSERT_H:
    case RISCV::CV_SDOTSP_SCI_B:
    case RISCV::CV_SDOTSP_SCI_H:
    case RISCV::CV_SDOTUP_SCI_B:
    case RISCV::CV_SDOTUP_SCI_H:
    case RISCV::CV_SDOTUSP_SCI_B:
    case RISCV::CV_SDOTUSP_SCI_H: {
      switch (OpNum) {
      case 2:
        // op: rs1
        return 15;
      case 1:
        // op: rd
        return 7;
      case 3:
        // op: imm6
        return 20;
      }
      break;
    }
    case RISCV::CV_INSERT: {
      switch (OpNum) {
      case 2:
        // op: rs1
        return 15;
      case 1:
        // op: rd
        return 7;
      case 3:
        // op: is3
        return 25;
      case 4:
        // op: is2
        return 20;
      }
      break;
    }
    case RISCV::TH_SBIA:
    case RISCV::TH_SBIB:
    case RISCV::TH_SDIA:
    case RISCV::TH_SDIB:
    case RISCV::TH_SHIA:
    case RISCV::TH_SHIB:
    case RISCV::TH_SWIA:
    case RISCV::TH_SWIB: {
      switch (OpNum) {
      case 2:
        // op: rs1
        return 15;
      case 1:
        // op: rd
        return 7;
      case 3:
        // op: simm5
        return 20;
      case 4:
        // op: uimm2
        return 25;
      }
      break;
    }
    case RISCV::VFMV_S_F:
    case RISCV::VMV_S_X: {
      switch (OpNum) {
      case 2:
        // op: rs1
        return 15;
      case 1:
        // op: vd
        return 7;
      }
      break;
    }
    case RISCV::AES32DSI:
    case RISCV::AES32DSMI:
    case RISCV::AES32ESI:
    case RISCV::AES32ESMI:
    case RISCV::SM4ED:
    case RISCV::SM4KS: {
      switch (OpNum) {
      case 2:
        // op: rs2
        return 20;
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      case 3:
        // op: bs
        return 30;
      }
      break;
    }
    case RISCV::CV_ADDN:
    case RISCV::CV_ADDRN:
    case RISCV::CV_ADDUN:
    case RISCV::CV_ADDURN:
    case RISCV::CV_MULHHSN:
    case RISCV::CV_MULHHSRN:
    case RISCV::CV_MULHHUN:
    case RISCV::CV_MULHHURN:
    case RISCV::CV_MULSN:
    case RISCV::CV_MULSRN:
    case RISCV::CV_MULUN:
    case RISCV::CV_MULURN:
    case RISCV::CV_SUBN:
    case RISCV::CV_SUBRN:
    case RISCV::CV_SUBUN:
    case RISCV::CV_SUBURN: {
      switch (OpNum) {
      case 2:
        // op: rs2
        return 20;
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      case 3:
        // op: imm5
        return 25;
      }
      break;
    }
    case RISCV::TH_ADDSL:
    case RISCV::TH_FLRD:
    case RISCV::TH_FLRW:
    case RISCV::TH_FLURD:
    case RISCV::TH_FLURW:
    case RISCV::TH_FSRD:
    case RISCV::TH_FSRW:
    case RISCV::TH_FSURD:
    case RISCV::TH_FSURW:
    case RISCV::TH_LRB:
    case RISCV::TH_LRBU:
    case RISCV::TH_LRD:
    case RISCV::TH_LRH:
    case RISCV::TH_LRHU:
    case RISCV::TH_LRW:
    case RISCV::TH_LRWU:
    case RISCV::TH_LURB:
    case RISCV::TH_LURBU:
    case RISCV::TH_LURD:
    case RISCV::TH_LURH:
    case RISCV::TH_LURHU:
    case RISCV::TH_LURW:
    case RISCV::TH_LURWU:
    case RISCV::TH_SRB:
    case RISCV::TH_SRD:
    case RISCV::TH_SRH:
    case RISCV::TH_SRW:
    case RISCV::TH_SURB:
    case RISCV::TH_SURD:
    case RISCV::TH_SURH:
    case RISCV::TH_SURW: {
      switch (OpNum) {
      case 2:
        // op: rs2
        return 20;
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      case 3:
        // op: uimm2
        return 25;
      }
      break;
    }
    case RISCV::ADD:
    case RISCV::ADDW:
    case RISCV::ADD_UW:
    case RISCV::AES64DS:
    case RISCV::AES64DSM:
    case RISCV::AES64ES:
    case RISCV::AES64ESM:
    case RISCV::AES64KS2:
    case RISCV::AMOADD_B:
    case RISCV::AMOADD_B_AQ:
    case RISCV::AMOADD_B_AQ_RL:
    case RISCV::AMOADD_B_RL:
    case RISCV::AMOADD_D:
    case RISCV::AMOADD_D_AQ:
    case RISCV::AMOADD_D_AQ_RL:
    case RISCV::AMOADD_D_RL:
    case RISCV::AMOADD_H:
    case RISCV::AMOADD_H_AQ:
    case RISCV::AMOADD_H_AQ_RL:
    case RISCV::AMOADD_H_RL:
    case RISCV::AMOADD_W:
    case RISCV::AMOADD_W_AQ:
    case RISCV::AMOADD_W_AQ_RL:
    case RISCV::AMOADD_W_RL:
    case RISCV::AMOAND_B:
    case RISCV::AMOAND_B_AQ:
    case RISCV::AMOAND_B_AQ_RL:
    case RISCV::AMOAND_B_RL:
    case RISCV::AMOAND_D:
    case RISCV::AMOAND_D_AQ:
    case RISCV::AMOAND_D_AQ_RL:
    case RISCV::AMOAND_D_RL:
    case RISCV::AMOAND_H:
    case RISCV::AMOAND_H_AQ:
    case RISCV::AMOAND_H_AQ_RL:
    case RISCV::AMOAND_H_RL:
    case RISCV::AMOAND_W:
    case RISCV::AMOAND_W_AQ:
    case RISCV::AMOAND_W_AQ_RL:
    case RISCV::AMOAND_W_RL:
    case RISCV::AMOMAXU_B:
    case RISCV::AMOMAXU_B_AQ:
    case RISCV::AMOMAXU_B_AQ_RL:
    case RISCV::AMOMAXU_B_RL:
    case RISCV::AMOMAXU_D:
    case RISCV::AMOMAXU_D_AQ:
    case RISCV::AMOMAXU_D_AQ_RL:
    case RISCV::AMOMAXU_D_RL:
    case RISCV::AMOMAXU_H:
    case RISCV::AMOMAXU_H_AQ:
    case RISCV::AMOMAXU_H_AQ_RL:
    case RISCV::AMOMAXU_H_RL:
    case RISCV::AMOMAXU_W:
    case RISCV::AMOMAXU_W_AQ:
    case RISCV::AMOMAXU_W_AQ_RL:
    case RISCV::AMOMAXU_W_RL:
    case RISCV::AMOMAX_B:
    case RISCV::AMOMAX_B_AQ:
    case RISCV::AMOMAX_B_AQ_RL:
    case RISCV::AMOMAX_B_RL:
    case RISCV::AMOMAX_D:
    case RISCV::AMOMAX_D_AQ:
    case RISCV::AMOMAX_D_AQ_RL:
    case RISCV::AMOMAX_D_RL:
    case RISCV::AMOMAX_H:
    case RISCV::AMOMAX_H_AQ:
    case RISCV::AMOMAX_H_AQ_RL:
    case RISCV::AMOMAX_H_RL:
    case RISCV::AMOMAX_W:
    case RISCV::AMOMAX_W_AQ:
    case RISCV::AMOMAX_W_AQ_RL:
    case RISCV::AMOMAX_W_RL:
    case RISCV::AMOMINU_B:
    case RISCV::AMOMINU_B_AQ:
    case RISCV::AMOMINU_B_AQ_RL:
    case RISCV::AMOMINU_B_RL:
    case RISCV::AMOMINU_D:
    case RISCV::AMOMINU_D_AQ:
    case RISCV::AMOMINU_D_AQ_RL:
    case RISCV::AMOMINU_D_RL:
    case RISCV::AMOMINU_H:
    case RISCV::AMOMINU_H_AQ:
    case RISCV::AMOMINU_H_AQ_RL:
    case RISCV::AMOMINU_H_RL:
    case RISCV::AMOMINU_W:
    case RISCV::AMOMINU_W_AQ:
    case RISCV::AMOMINU_W_AQ_RL:
    case RISCV::AMOMINU_W_RL:
    case RISCV::AMOMIN_B:
    case RISCV::AMOMIN_B_AQ:
    case RISCV::AMOMIN_B_AQ_RL:
    case RISCV::AMOMIN_B_RL:
    case RISCV::AMOMIN_D:
    case RISCV::AMOMIN_D_AQ:
    case RISCV::AMOMIN_D_AQ_RL:
    case RISCV::AMOMIN_D_RL:
    case RISCV::AMOMIN_H:
    case RISCV::AMOMIN_H_AQ:
    case RISCV::AMOMIN_H_AQ_RL:
    case RISCV::AMOMIN_H_RL:
    case RISCV::AMOMIN_W:
    case RISCV::AMOMIN_W_AQ:
    case RISCV::AMOMIN_W_AQ_RL:
    case RISCV::AMOMIN_W_RL:
    case RISCV::AMOOR_B:
    case RISCV::AMOOR_B_AQ:
    case RISCV::AMOOR_B_AQ_RL:
    case RISCV::AMOOR_B_RL:
    case RISCV::AMOOR_D:
    case RISCV::AMOOR_D_AQ:
    case RISCV::AMOOR_D_AQ_RL:
    case RISCV::AMOOR_D_RL:
    case RISCV::AMOOR_H:
    case RISCV::AMOOR_H_AQ:
    case RISCV::AMOOR_H_AQ_RL:
    case RISCV::AMOOR_H_RL:
    case RISCV::AMOOR_W:
    case RISCV::AMOOR_W_AQ:
    case RISCV::AMOOR_W_AQ_RL:
    case RISCV::AMOOR_W_RL:
    case RISCV::AMOSWAP_B:
    case RISCV::AMOSWAP_B_AQ:
    case RISCV::AMOSWAP_B_AQ_RL:
    case RISCV::AMOSWAP_B_RL:
    case RISCV::AMOSWAP_D:
    case RISCV::AMOSWAP_D_AQ:
    case RISCV::AMOSWAP_D_AQ_RL:
    case RISCV::AMOSWAP_D_RL:
    case RISCV::AMOSWAP_H:
    case RISCV::AMOSWAP_H_AQ:
    case RISCV::AMOSWAP_H_AQ_RL:
    case RISCV::AMOSWAP_H_RL:
    case RISCV::AMOSWAP_W:
    case RISCV::AMOSWAP_W_AQ:
    case RISCV::AMOSWAP_W_AQ_RL:
    case RISCV::AMOSWAP_W_RL:
    case RISCV::AMOXOR_B:
    case RISCV::AMOXOR_B_AQ:
    case RISCV::AMOXOR_B_AQ_RL:
    case RISCV::AMOXOR_B_RL:
    case RISCV::AMOXOR_D:
    case RISCV::AMOXOR_D_AQ:
    case RISCV::AMOXOR_D_AQ_RL:
    case RISCV::AMOXOR_D_RL:
    case RISCV::AMOXOR_H:
    case RISCV::AMOXOR_H_AQ:
    case RISCV::AMOXOR_H_AQ_RL:
    case RISCV::AMOXOR_H_RL:
    case RISCV::AMOXOR_W:
    case RISCV::AMOXOR_W_AQ:
    case RISCV::AMOXOR_W_AQ_RL:
    case RISCV::AMOXOR_W_RL:
    case RISCV::AND:
    case RISCV::ANDN:
    case RISCV::BCLR:
    case RISCV::BEXT:
    case RISCV::BINV:
    case RISCV::BSET:
    case RISCV::CLMUL:
    case RISCV::CLMULH:
    case RISCV::CLMULR:
    case RISCV::CV_ADD_B:
    case RISCV::CV_ADD_DIV2:
    case RISCV::CV_ADD_DIV4:
    case RISCV::CV_ADD_DIV8:
    case RISCV::CV_ADD_H:
    case RISCV::CV_ADD_SC_B:
    case RISCV::CV_ADD_SC_H:
    case RISCV::CV_AND_B:
    case RISCV::CV_AND_H:
    case RISCV::CV_AND_SC_B:
    case RISCV::CV_AND_SC_H:
    case RISCV::CV_AVGU_B:
    case RISCV::CV_AVGU_H:
    case RISCV::CV_AVGU_SC_B:
    case RISCV::CV_AVGU_SC_H:
    case RISCV::CV_AVG_B:
    case RISCV::CV_AVG_H:
    case RISCV::CV_AVG_SC_B:
    case RISCV::CV_AVG_SC_H:
    case RISCV::CV_BCLRR:
    case RISCV::CV_BSETR:
    case RISCV::CV_CLIPR:
    case RISCV::CV_CLIPUR:
    case RISCV::CV_CMPEQ_B:
    case RISCV::CV_CMPEQ_H:
    case RISCV::CV_CMPEQ_SC_B:
    case RISCV::CV_CMPEQ_SC_H:
    case RISCV::CV_CMPGEU_B:
    case RISCV::CV_CMPGEU_H:
    case RISCV::CV_CMPGEU_SC_B:
    case RISCV::CV_CMPGEU_SC_H:
    case RISCV::CV_CMPGE_B:
    case RISCV::CV_CMPGE_H:
    case RISCV::CV_CMPGE_SC_B:
    case RISCV::CV_CMPGE_SC_H:
    case RISCV::CV_CMPGTU_B:
    case RISCV::CV_CMPGTU_H:
    case RISCV::CV_CMPGTU_SC_B:
    case RISCV::CV_CMPGTU_SC_H:
    case RISCV::CV_CMPGT_B:
    case RISCV::CV_CMPGT_H:
    case RISCV::CV_CMPGT_SC_B:
    case RISCV::CV_CMPGT_SC_H:
    case RISCV::CV_CMPLEU_B:
    case RISCV::CV_CMPLEU_H:
    case RISCV::CV_CMPLEU_SC_B:
    case RISCV::CV_CMPLEU_SC_H:
    case RISCV::CV_CMPLE_B:
    case RISCV::CV_CMPLE_H:
    case RISCV::CV_CMPLE_SC_B:
    case RISCV::CV_CMPLE_SC_H:
    case RISCV::CV_CMPLTU_B:
    case RISCV::CV_CMPLTU_H:
    case RISCV::CV_CMPLTU_SC_B:
    case RISCV::CV_CMPLTU_SC_H:
    case RISCV::CV_CMPLT_B:
    case RISCV::CV_CMPLT_H:
    case RISCV::CV_CMPLT_SC_B:
    case RISCV::CV_CMPLT_SC_H:
    case RISCV::CV_CMPNE_B:
    case RISCV::CV_CMPNE_H:
    case RISCV::CV_CMPNE_SC_B:
    case RISCV::CV_CMPNE_SC_H:
    case RISCV::CV_DOTSP_B:
    case RISCV::CV_DOTSP_H:
    case RISCV::CV_DOTSP_SC_B:
    case RISCV::CV_DOTSP_SC_H:
    case RISCV::CV_DOTUP_B:
    case RISCV::CV_DOTUP_H:
    case RISCV::CV_DOTUP_SC_B:
    case RISCV::CV_DOTUP_SC_H:
    case RISCV::CV_DOTUSP_B:
    case RISCV::CV_DOTUSP_H:
    case RISCV::CV_DOTUSP_SC_B:
    case RISCV::CV_DOTUSP_SC_H:
    case RISCV::CV_EXTRACTR:
    case RISCV::CV_EXTRACTUR:
    case RISCV::CV_MAX:
    case RISCV::CV_MAXU:
    case RISCV::CV_MAXU_B:
    case RISCV::CV_MAXU_H:
    case RISCV::CV_MAXU_SC_B:
    case RISCV::CV_MAXU_SC_H:
    case RISCV::CV_MAX_B:
    case RISCV::CV_MAX_H:
    case RISCV::CV_MAX_SC_B:
    case RISCV::CV_MAX_SC_H:
    case RISCV::CV_MIN:
    case RISCV::CV_MINU:
    case RISCV::CV_MINU_B:
    case RISCV::CV_MINU_H:
    case RISCV::CV_MINU_SC_B:
    case RISCV::CV_MINU_SC_H:
    case RISCV::CV_MIN_B:
    case RISCV::CV_MIN_H:
    case RISCV::CV_MIN_SC_B:
    case RISCV::CV_MIN_SC_H:
    case RISCV::CV_OR_B:
    case RISCV::CV_OR_H:
    case RISCV::CV_OR_SC_B:
    case RISCV::CV_OR_SC_H:
    case RISCV::CV_PACK:
    case RISCV::CV_PACK_H:
    case RISCV::CV_ROR:
    case RISCV::CV_SHUFFLE_B:
    case RISCV::CV_SHUFFLE_H:
    case RISCV::CV_SLET:
    case RISCV::CV_SLETU:
    case RISCV::CV_SLL_B:
    case RISCV::CV_SLL_H:
    case RISCV::CV_SLL_SC_B:
    case RISCV::CV_SLL_SC_H:
    case RISCV::CV_SRA_B:
    case RISCV::CV_SRA_H:
    case RISCV::CV_SRA_SC_B:
    case RISCV::CV_SRA_SC_H:
    case RISCV::CV_SRL_B:
    case RISCV::CV_SRL_H:
    case RISCV::CV_SRL_SC_B:
    case RISCV::CV_SRL_SC_H:
    case RISCV::CV_SUBROTMJ:
    case RISCV::CV_SUBROTMJ_DIV2:
    case RISCV::CV_SUBROTMJ_DIV4:
    case RISCV::CV_SUBROTMJ_DIV8:
    case RISCV::CV_SUB_B:
    case RISCV::CV_SUB_DIV2:
    case RISCV::CV_SUB_DIV4:
    case RISCV::CV_SUB_DIV8:
    case RISCV::CV_SUB_H:
    case RISCV::CV_SUB_SC_B:
    case RISCV::CV_SUB_SC_H:
    case RISCV::CV_XOR_B:
    case RISCV::CV_XOR_H:
    case RISCV::CV_XOR_SC_B:
    case RISCV::CV_XOR_SC_H:
    case RISCV::CZERO_EQZ:
    case RISCV::CZERO_NEZ:
    case RISCV::DIV:
    case RISCV::DIVU:
    case RISCV::DIVUW:
    case RISCV::DIVW:
    case RISCV::FEQ_D:
    case RISCV::FEQ_D_IN32X:
    case RISCV::FEQ_D_INX:
    case RISCV::FEQ_H:
    case RISCV::FEQ_H_INX:
    case RISCV::FEQ_S:
    case RISCV::FEQ_S_INX:
    case RISCV::FLEQ_D:
    case RISCV::FLEQ_H:
    case RISCV::FLEQ_S:
    case RISCV::FLE_D:
    case RISCV::FLE_D_IN32X:
    case RISCV::FLE_D_INX:
    case RISCV::FLE_H:
    case RISCV::FLE_H_INX:
    case RISCV::FLE_S:
    case RISCV::FLE_S_INX:
    case RISCV::FLTQ_D:
    case RISCV::FLTQ_H:
    case RISCV::FLTQ_S:
    case RISCV::FLT_D:
    case RISCV::FLT_D_IN32X:
    case RISCV::FLT_D_INX:
    case RISCV::FLT_H:
    case RISCV::FLT_H_INX:
    case RISCV::FLT_S:
    case RISCV::FLT_S_INX:
    case RISCV::FMAXM_D:
    case RISCV::FMAXM_H:
    case RISCV::FMAXM_S:
    case RISCV::FMAX_D:
    case RISCV::FMAX_D_IN32X:
    case RISCV::FMAX_D_INX:
    case RISCV::FMAX_H:
    case RISCV::FMAX_H_INX:
    case RISCV::FMAX_S:
    case RISCV::FMAX_S_INX:
    case RISCV::FMINM_D:
    case RISCV::FMINM_H:
    case RISCV::FMINM_S:
    case RISCV::FMIN_D:
    case RISCV::FMIN_D_IN32X:
    case RISCV::FMIN_D_INX:
    case RISCV::FMIN_H:
    case RISCV::FMIN_H_INX:
    case RISCV::FMIN_S:
    case RISCV::FMIN_S_INX:
    case RISCV::FMVP_D_X:
    case RISCV::FSGNJN_D:
    case RISCV::FSGNJN_D_IN32X:
    case RISCV::FSGNJN_D_INX:
    case RISCV::FSGNJN_H:
    case RISCV::FSGNJN_H_INX:
    case RISCV::FSGNJN_S:
    case RISCV::FSGNJN_S_INX:
    case RISCV::FSGNJX_D:
    case RISCV::FSGNJX_D_IN32X:
    case RISCV::FSGNJX_D_INX:
    case RISCV::FSGNJX_H:
    case RISCV::FSGNJX_H_INX:
    case RISCV::FSGNJX_S:
    case RISCV::FSGNJX_S_INX:
    case RISCV::FSGNJ_D:
    case RISCV::FSGNJ_D_IN32X:
    case RISCV::FSGNJ_D_INX:
    case RISCV::FSGNJ_H:
    case RISCV::FSGNJ_H_INX:
    case RISCV::FSGNJ_S:
    case RISCV::FSGNJ_S_INX:
    case RISCV::MAX:
    case RISCV::MAXU:
    case RISCV::MIN:
    case RISCV::MINU:
    case RISCV::MOPRR0:
    case RISCV::MOPRR1:
    case RISCV::MOPRR2:
    case RISCV::MOPRR3:
    case RISCV::MOPRR4:
    case RISCV::MOPRR5:
    case RISCV::MOPRR6:
    case RISCV::MOPRR7:
    case RISCV::MUL:
    case RISCV::MULH:
    case RISCV::MULHSU:
    case RISCV::MULHU:
    case RISCV::MULW:
    case RISCV::OR:
    case RISCV::ORN:
    case RISCV::PACK:
    case RISCV::PACKH:
    case RISCV::PACKW:
    case RISCV::REM:
    case RISCV::REMU:
    case RISCV::REMUW:
    case RISCV::REMW:
    case RISCV::ROL:
    case RISCV::ROLW:
    case RISCV::ROR:
    case RISCV::RORW:
    case RISCV::SC_D:
    case RISCV::SC_D_AQ:
    case RISCV::SC_D_AQ_RL:
    case RISCV::SC_D_RL:
    case RISCV::SC_W:
    case RISCV::SC_W_AQ:
    case RISCV::SC_W_AQ_RL:
    case RISCV::SC_W_RL:
    case RISCV::SH1ADD:
    case RISCV::SH1ADD_UW:
    case RISCV::SH2ADD:
    case RISCV::SH2ADD_UW:
    case RISCV::SH3ADD:
    case RISCV::SH3ADD_UW:
    case RISCV::SHA512SIG0H:
    case RISCV::SHA512SIG0L:
    case RISCV::SHA512SIG1H:
    case RISCV::SHA512SIG1L:
    case RISCV::SHA512SUM0R:
    case RISCV::SHA512SUM1R:
    case RISCV::SLL:
    case RISCV::SLLW:
    case RISCV::SLT:
    case RISCV::SLTU:
    case RISCV::SRA:
    case RISCV::SRAW:
    case RISCV::SRL:
    case RISCV::SRLW:
    case RISCV::SSAMOSWAP_D:
    case RISCV::SSAMOSWAP_D_AQ:
    case RISCV::SSAMOSWAP_D_AQ_RL:
    case RISCV::SSAMOSWAP_D_RL:
    case RISCV::SSAMOSWAP_W:
    case RISCV::SSAMOSWAP_W_AQ:
    case RISCV::SSAMOSWAP_W_AQ_RL:
    case RISCV::SSAMOSWAP_W_RL:
    case RISCV::SUB:
    case RISCV::SUBW:
    case RISCV::VFWMACC_4x4x4:
    case RISCV::VQMACCSU_2x8x2:
    case RISCV::VQMACCSU_4x8x4:
    case RISCV::VQMACCUS_2x8x2:
    case RISCV::VQMACCUS_4x8x4:
    case RISCV::VQMACCU_2x8x2:
    case RISCV::VQMACCU_4x8x4:
    case RISCV::VQMACC_2x8x2:
    case RISCV::VQMACC_4x8x4:
    case RISCV::VSETVL:
    case RISCV::VT_MASKC:
    case RISCV::VT_MASKCN:
    case RISCV::XNOR:
    case RISCV::XOR:
    case RISCV::XPERM4:
    case RISCV::XPERM8: {
      switch (OpNum) {
      case 2:
        // op: rs2
        return 20;
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::VLSE8_V:
    case RISCV::VLSE16_V:
    case RISCV::VLSE32_V:
    case RISCV::VLSE64_V:
    case RISCV::VLSSEG2E8_V:
    case RISCV::VLSSEG2E16_V:
    case RISCV::VLSSEG2E32_V:
    case RISCV::VLSSEG2E64_V:
    case RISCV::VLSSEG3E8_V:
    case RISCV::VLSSEG3E16_V:
    case RISCV::VLSSEG3E32_V:
    case RISCV::VLSSEG3E64_V:
    case RISCV::VLSSEG4E8_V:
    case RISCV::VLSSEG4E16_V:
    case RISCV::VLSSEG4E32_V:
    case RISCV::VLSSEG4E64_V:
    case RISCV::VLSSEG5E8_V:
    case RISCV::VLSSEG5E16_V:
    case RISCV::VLSSEG5E32_V:
    case RISCV::VLSSEG5E64_V:
    case RISCV::VLSSEG6E8_V:
    case RISCV::VLSSEG6E16_V:
    case RISCV::VLSSEG6E32_V:
    case RISCV::VLSSEG6E64_V:
    case RISCV::VLSSEG7E8_V:
    case RISCV::VLSSEG7E16_V:
    case RISCV::VLSSEG7E32_V:
    case RISCV::VLSSEG7E64_V:
    case RISCV::VLSSEG8E8_V:
    case RISCV::VLSSEG8E16_V:
    case RISCV::VLSSEG8E32_V:
    case RISCV::VLSSEG8E64_V: {
      switch (OpNum) {
      case 2:
        // op: rs2
        return 20;
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: vd
        return 7;
      case 3:
        // op: vm
        return 25;
      }
      break;
    }
    case RISCV::VSSE8_V:
    case RISCV::VSSE16_V:
    case RISCV::VSSE32_V:
    case RISCV::VSSE64_V:
    case RISCV::VSSSEG2E8_V:
    case RISCV::VSSSEG2E16_V:
    case RISCV::VSSSEG2E32_V:
    case RISCV::VSSSEG2E64_V:
    case RISCV::VSSSEG3E8_V:
    case RISCV::VSSSEG3E16_V:
    case RISCV::VSSSEG3E32_V:
    case RISCV::VSSSEG3E64_V:
    case RISCV::VSSSEG4E8_V:
    case RISCV::VSSSEG4E16_V:
    case RISCV::VSSSEG4E32_V:
    case RISCV::VSSSEG4E64_V:
    case RISCV::VSSSEG5E8_V:
    case RISCV::VSSSEG5E16_V:
    case RISCV::VSSSEG5E32_V:
    case RISCV::VSSSEG5E64_V:
    case RISCV::VSSSEG6E8_V:
    case RISCV::VSSSEG6E16_V:
    case RISCV::VSSSEG6E32_V:
    case RISCV::VSSSEG6E64_V:
    case RISCV::VSSSEG7E8_V:
    case RISCV::VSSSEG7E16_V:
    case RISCV::VSSSEG7E32_V:
    case RISCV::VSSSEG7E64_V:
    case RISCV::VSSSEG8E8_V:
    case RISCV::VSSSEG8E16_V:
    case RISCV::VSSSEG8E32_V:
    case RISCV::VSSSEG8E64_V: {
      switch (OpNum) {
      case 2:
        // op: rs2
        return 20;
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: vs3
        return 7;
      case 3:
        // op: vm
        return 25;
      }
      break;
    }
    case RISCV::FADD_D:
    case RISCV::FADD_D_IN32X:
    case RISCV::FADD_D_INX:
    case RISCV::FADD_H:
    case RISCV::FADD_H_INX:
    case RISCV::FADD_S:
    case RISCV::FADD_S_INX:
    case RISCV::FDIV_D:
    case RISCV::FDIV_D_IN32X:
    case RISCV::FDIV_D_INX:
    case RISCV::FDIV_H:
    case RISCV::FDIV_H_INX:
    case RISCV::FDIV_S:
    case RISCV::FDIV_S_INX:
    case RISCV::FMUL_D:
    case RISCV::FMUL_D_IN32X:
    case RISCV::FMUL_D_INX:
    case RISCV::FMUL_H:
    case RISCV::FMUL_H_INX:
    case RISCV::FMUL_S:
    case RISCV::FMUL_S_INX:
    case RISCV::FSUB_D:
    case RISCV::FSUB_D_IN32X:
    case RISCV::FSUB_D_INX:
    case RISCV::FSUB_H:
    case RISCV::FSUB_H_INX:
    case RISCV::FSUB_S:
    case RISCV::FSUB_S_INX: {
      switch (OpNum) {
      case 2:
        // op: rs2
        return 20;
      case 1:
        // op: rs1
        return 15;
      case 3:
        // op: frm
        return 12;
      case 0:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::VC_V_FV: {
      switch (OpNum) {
      case 2:
        // op: rs2
        return 20;
      case 3:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      case 1:
        // op: funct6_lo1
        return 26;
      }
      break;
    }
    case RISCV::VC_V_I:
    case RISCV::VC_V_IV:
    case RISCV::VC_V_VV:
    case RISCV::VC_V_X:
    case RISCV::VC_V_XV: {
      switch (OpNum) {
      case 2:
        // op: rs2
        return 20;
      case 3:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      case 1:
        // op: funct6_lo2
        return 26;
      }
      break;
    }
    case RISCV::VC_FV:
    case RISCV::VC_FVV:
    case RISCV::VC_FVW: {
      switch (OpNum) {
      case 2:
        // op: rs2
        return 20;
      case 3:
        // op: rs1
        return 15;
      case 1:
        // op: rd
        return 7;
      case 0:
        // op: funct6_lo1
        return 26;
      }
      break;
    }
    case RISCV::VC_IV:
    case RISCV::VC_IVV:
    case RISCV::VC_IVW:
    case RISCV::VC_VV:
    case RISCV::VC_VVV:
    case RISCV::VC_VVW:
    case RISCV::VC_XV:
    case RISCV::VC_XVV:
    case RISCV::VC_XVW: {
      switch (OpNum) {
      case 2:
        // op: rs2
        return 20;
      case 3:
        // op: rs1
        return 15;
      case 1:
        // op: rd
        return 7;
      case 0:
        // op: funct6_lo2
        return 26;
      }
      break;
    }
    case RISCV::C_ADDW:
    case RISCV::C_AND:
    case RISCV::C_MUL:
    case RISCV::C_OR:
    case RISCV::C_SUB:
    case RISCV::C_SUBW:
    case RISCV::C_XOR: {
      switch (OpNum) {
      case 2:
        // op: rs2
        return 2;
      case 1:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::C_ADD_HINT: {
      switch (OpNum) {
      case 2:
        // op: rs2
        return 2;
      }
      break;
    }
    case RISCV::VLOXEI8_V:
    case RISCV::VLOXEI16_V:
    case RISCV::VLOXEI32_V:
    case RISCV::VLOXEI64_V:
    case RISCV::VLOXSEG2EI8_V:
    case RISCV::VLOXSEG2EI16_V:
    case RISCV::VLOXSEG2EI32_V:
    case RISCV::VLOXSEG2EI64_V:
    case RISCV::VLOXSEG3EI8_V:
    case RISCV::VLOXSEG3EI16_V:
    case RISCV::VLOXSEG3EI32_V:
    case RISCV::VLOXSEG3EI64_V:
    case RISCV::VLOXSEG4EI8_V:
    case RISCV::VLOXSEG4EI16_V:
    case RISCV::VLOXSEG4EI32_V:
    case RISCV::VLOXSEG4EI64_V:
    case RISCV::VLOXSEG5EI8_V:
    case RISCV::VLOXSEG5EI16_V:
    case RISCV::VLOXSEG5EI32_V:
    case RISCV::VLOXSEG5EI64_V:
    case RISCV::VLOXSEG6EI8_V:
    case RISCV::VLOXSEG6EI16_V:
    case RISCV::VLOXSEG6EI32_V:
    case RISCV::VLOXSEG6EI64_V:
    case RISCV::VLOXSEG7EI8_V:
    case RISCV::VLOXSEG7EI16_V:
    case RISCV::VLOXSEG7EI32_V:
    case RISCV::VLOXSEG7EI64_V:
    case RISCV::VLOXSEG8EI8_V:
    case RISCV::VLOXSEG8EI16_V:
    case RISCV::VLOXSEG8EI32_V:
    case RISCV::VLOXSEG8EI64_V:
    case RISCV::VLUXEI8_V:
    case RISCV::VLUXEI16_V:
    case RISCV::VLUXEI32_V:
    case RISCV::VLUXEI64_V:
    case RISCV::VLUXSEG2EI8_V:
    case RISCV::VLUXSEG2EI16_V:
    case RISCV::VLUXSEG2EI32_V:
    case RISCV::VLUXSEG2EI64_V:
    case RISCV::VLUXSEG3EI8_V:
    case RISCV::VLUXSEG3EI16_V:
    case RISCV::VLUXSEG3EI32_V:
    case RISCV::VLUXSEG3EI64_V:
    case RISCV::VLUXSEG4EI8_V:
    case RISCV::VLUXSEG4EI16_V:
    case RISCV::VLUXSEG4EI32_V:
    case RISCV::VLUXSEG4EI64_V:
    case RISCV::VLUXSEG5EI8_V:
    case RISCV::VLUXSEG5EI16_V:
    case RISCV::VLUXSEG5EI32_V:
    case RISCV::VLUXSEG5EI64_V:
    case RISCV::VLUXSEG6EI8_V:
    case RISCV::VLUXSEG6EI16_V:
    case RISCV::VLUXSEG6EI32_V:
    case RISCV::VLUXSEG6EI64_V:
    case RISCV::VLUXSEG7EI8_V:
    case RISCV::VLUXSEG7EI16_V:
    case RISCV::VLUXSEG7EI32_V:
    case RISCV::VLUXSEG7EI64_V:
    case RISCV::VLUXSEG8EI8_V:
    case RISCV::VLUXSEG8EI16_V:
    case RISCV::VLUXSEG8EI32_V:
    case RISCV::VLUXSEG8EI64_V: {
      switch (OpNum) {
      case 2:
        // op: vs2
        return 20;
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: vd
        return 7;
      case 3:
        // op: vm
        return 25;
      }
      break;
    }
    case RISCV::VSOXEI8_V:
    case RISCV::VSOXEI16_V:
    case RISCV::VSOXEI32_V:
    case RISCV::VSOXEI64_V:
    case RISCV::VSOXSEG2EI8_V:
    case RISCV::VSOXSEG2EI16_V:
    case RISCV::VSOXSEG2EI32_V:
    case RISCV::VSOXSEG2EI64_V:
    case RISCV::VSOXSEG3EI8_V:
    case RISCV::VSOXSEG3EI16_V:
    case RISCV::VSOXSEG3EI32_V:
    case RISCV::VSOXSEG3EI64_V:
    case RISCV::VSOXSEG4EI8_V:
    case RISCV::VSOXSEG4EI16_V:
    case RISCV::VSOXSEG4EI32_V:
    case RISCV::VSOXSEG4EI64_V:
    case RISCV::VSOXSEG5EI8_V:
    case RISCV::VSOXSEG5EI16_V:
    case RISCV::VSOXSEG5EI32_V:
    case RISCV::VSOXSEG5EI64_V:
    case RISCV::VSOXSEG6EI8_V:
    case RISCV::VSOXSEG6EI16_V:
    case RISCV::VSOXSEG6EI32_V:
    case RISCV::VSOXSEG6EI64_V:
    case RISCV::VSOXSEG7EI8_V:
    case RISCV::VSOXSEG7EI16_V:
    case RISCV::VSOXSEG7EI32_V:
    case RISCV::VSOXSEG7EI64_V:
    case RISCV::VSOXSEG8EI8_V:
    case RISCV::VSOXSEG8EI16_V:
    case RISCV::VSOXSEG8EI32_V:
    case RISCV::VSOXSEG8EI64_V:
    case RISCV::VSUXEI8_V:
    case RISCV::VSUXEI16_V:
    case RISCV::VSUXEI32_V:
    case RISCV::VSUXEI64_V:
    case RISCV::VSUXSEG2EI8_V:
    case RISCV::VSUXSEG2EI16_V:
    case RISCV::VSUXSEG2EI32_V:
    case RISCV::VSUXSEG2EI64_V:
    case RISCV::VSUXSEG3EI8_V:
    case RISCV::VSUXSEG3EI16_V:
    case RISCV::VSUXSEG3EI32_V:
    case RISCV::VSUXSEG3EI64_V:
    case RISCV::VSUXSEG4EI8_V:
    case RISCV::VSUXSEG4EI16_V:
    case RISCV::VSUXSEG4EI32_V:
    case RISCV::VSUXSEG4EI64_V:
    case RISCV::VSUXSEG5EI8_V:
    case RISCV::VSUXSEG5EI16_V:
    case RISCV::VSUXSEG5EI32_V:
    case RISCV::VSUXSEG5EI64_V:
    case RISCV::VSUXSEG6EI8_V:
    case RISCV::VSUXSEG6EI16_V:
    case RISCV::VSUXSEG6EI32_V:
    case RISCV::VSUXSEG6EI64_V:
    case RISCV::VSUXSEG7EI8_V:
    case RISCV::VSUXSEG7EI16_V:
    case RISCV::VSUXSEG7EI32_V:
    case RISCV::VSUXSEG7EI64_V:
    case RISCV::VSUXSEG8EI8_V:
    case RISCV::VSUXSEG8EI16_V:
    case RISCV::VSUXSEG8EI32_V:
    case RISCV::VSUXSEG8EI64_V: {
      switch (OpNum) {
      case 2:
        // op: vs2
        return 20;
      case 1:
        // op: rs1
        return 15;
      case 0:
        // op: vs3
        return 7;
      case 3:
        // op: vm
        return 25;
      }
      break;
    }
    case RISCV::VAESDF_VS:
    case RISCV::VAESDF_VV:
    case RISCV::VAESDM_VS:
    case RISCV::VAESDM_VV:
    case RISCV::VAESEF_VS:
    case RISCV::VAESEF_VV:
    case RISCV::VAESEM_VS:
    case RISCV::VAESEM_VV:
    case RISCV::VAESZ_VS:
    case RISCV::VGMUL_VS:
    case RISCV::VGMUL_VV:
    case RISCV::VSM4R_VS:
    case RISCV::VSM4R_VV: {
      switch (OpNum) {
      case 2:
        // op: vs2
        return 20;
      case 1:
        // op: vd
        return 7;
      }
      break;
    }
    case RISCV::VAESKF2_VI:
    case RISCV::VSM3C_VI: {
      switch (OpNum) {
      case 2:
        // op: vs2
        return 20;
      case 3:
        // op: imm
        return 15;
      case 1:
        // op: vd
        return 7;
      }
      break;
    }
    case RISCV::VGHSH_VS:
    case RISCV::VGHSH_VV:
    case RISCV::VSHA2CH_VV:
    case RISCV::VSHA2CL_VV:
    case RISCV::VSHA2MS_VV: {
      switch (OpNum) {
      case 2:
        // op: vs2
        return 20;
      case 3:
        // op: vs1
        return 15;
      case 1:
        // op: vd
        return 7;
      }
      break;
    }
    case RISCV::CV_SB_ri_inc:
    case RISCV::CV_SH_ri_inc:
    case RISCV::CV_SW_ri_inc: {
      switch (OpNum) {
      case 3:
        // op: imm12
        return 7;
      case 1:
        // op: rs2
        return 20;
      case 2:
        // op: rs1
        return 15;
      }
      break;
    }
    case RISCV::CV_LBU_rr_inc:
    case RISCV::CV_LB_rr_inc:
    case RISCV::CV_LHU_rr_inc:
    case RISCV::CV_LH_rr_inc:
    case RISCV::CV_LW_rr_inc: {
      switch (OpNum) {
      case 3:
        // op: rs2
        return 20;
      case 2:
        // op: rs1
        return 15;
      case 0:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::CV_MACHHSN:
    case RISCV::CV_MACHHSRN:
    case RISCV::CV_MACHHUN:
    case RISCV::CV_MACHHURN:
    case RISCV::CV_MACSN:
    case RISCV::CV_MACSRN:
    case RISCV::CV_MACUN:
    case RISCV::CV_MACURN: {
      switch (OpNum) {
      case 3:
        // op: rs2
        return 20;
      case 2:
        // op: rs1
        return 15;
      case 1:
        // op: rd
        return 7;
      case 4:
        // op: imm5
        return 25;
      }
      break;
    }
    case RISCV::AMOCAS_B:
    case RISCV::AMOCAS_B_AQ:
    case RISCV::AMOCAS_B_AQ_RL:
    case RISCV::AMOCAS_B_RL:
    case RISCV::AMOCAS_D_RV32:
    case RISCV::AMOCAS_D_RV32_AQ:
    case RISCV::AMOCAS_D_RV32_AQ_RL:
    case RISCV::AMOCAS_D_RV32_RL:
    case RISCV::AMOCAS_D_RV64:
    case RISCV::AMOCAS_D_RV64_AQ:
    case RISCV::AMOCAS_D_RV64_AQ_RL:
    case RISCV::AMOCAS_D_RV64_RL:
    case RISCV::AMOCAS_H:
    case RISCV::AMOCAS_H_AQ:
    case RISCV::AMOCAS_H_AQ_RL:
    case RISCV::AMOCAS_H_RL:
    case RISCV::AMOCAS_Q:
    case RISCV::AMOCAS_Q_AQ:
    case RISCV::AMOCAS_Q_AQ_RL:
    case RISCV::AMOCAS_Q_RL:
    case RISCV::AMOCAS_W:
    case RISCV::AMOCAS_W_AQ:
    case RISCV::AMOCAS_W_AQ_RL:
    case RISCV::AMOCAS_W_RL:
    case RISCV::CV_ADDNR:
    case RISCV::CV_ADDRNR:
    case RISCV::CV_ADDUNR:
    case RISCV::CV_ADDURNR:
    case RISCV::CV_CPLXMUL_I:
    case RISCV::CV_CPLXMUL_I_DIV2:
    case RISCV::CV_CPLXMUL_I_DIV4:
    case RISCV::CV_CPLXMUL_I_DIV8:
    case RISCV::CV_CPLXMUL_R:
    case RISCV::CV_CPLXMUL_R_DIV2:
    case RISCV::CV_CPLXMUL_R_DIV4:
    case RISCV::CV_CPLXMUL_R_DIV8:
    case RISCV::CV_INSERTR:
    case RISCV::CV_MAC:
    case RISCV::CV_MSU:
    case RISCV::CV_PACKHI_B:
    case RISCV::CV_PACKLO_B:
    case RISCV::CV_SDOTSP_B:
    case RISCV::CV_SDOTSP_H:
    case RISCV::CV_SDOTSP_SC_B:
    case RISCV::CV_SDOTSP_SC_H:
    case RISCV::CV_SDOTUP_B:
    case RISCV::CV_SDOTUP_H:
    case RISCV::CV_SDOTUP_SC_B:
    case RISCV::CV_SDOTUP_SC_H:
    case RISCV::CV_SDOTUSP_B:
    case RISCV::CV_SDOTUSP_H:
    case RISCV::CV_SDOTUSP_SC_B:
    case RISCV::CV_SDOTUSP_SC_H:
    case RISCV::CV_SHUFFLE2_B:
    case RISCV::CV_SHUFFLE2_H:
    case RISCV::CV_SUBNR:
    case RISCV::CV_SUBRNR:
    case RISCV::CV_SUBUNR:
    case RISCV::CV_SUBURNR:
    case RISCV::TH_MULA:
    case RISCV::TH_MULAH:
    case RISCV::TH_MULAW:
    case RISCV::TH_MULS:
    case RISCV::TH_MULSH:
    case RISCV::TH_MULSW:
    case RISCV::TH_MVEQZ:
    case RISCV::TH_MVNEZ: {
      switch (OpNum) {
      case 3:
        // op: rs2
        return 20;
      case 2:
        // op: rs1
        return 15;
      case 1:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::VC_V_FVV:
    case RISCV::VC_V_FVW: {
      switch (OpNum) {
      case 3:
        // op: rs2
        return 20;
      case 4:
        // op: rs1
        return 15;
      case 2:
        // op: rd
        return 7;
      case 1:
        // op: funct6_lo1
        return 26;
      }
      break;
    }
    case RISCV::VC_V_IVV:
    case RISCV::VC_V_IVW:
    case RISCV::VC_V_VVV:
    case RISCV::VC_V_VVW:
    case RISCV::VC_V_XVV:
    case RISCV::VC_V_XVW: {
      switch (OpNum) {
      case 3:
        // op: rs2
        return 20;
      case 4:
        // op: rs1
        return 15;
      case 2:
        // op: rd
        return 7;
      case 1:
        // op: funct6_lo2
        return 26;
      }
      break;
    }
    case RISCV::FMADD_D:
    case RISCV::FMADD_D_IN32X:
    case RISCV::FMADD_D_INX:
    case RISCV::FMADD_H:
    case RISCV::FMADD_H_INX:
    case RISCV::FMADD_S:
    case RISCV::FMADD_S_INX:
    case RISCV::FMSUB_D:
    case RISCV::FMSUB_D_IN32X:
    case RISCV::FMSUB_D_INX:
    case RISCV::FMSUB_H:
    case RISCV::FMSUB_H_INX:
    case RISCV::FMSUB_S:
    case RISCV::FMSUB_S_INX:
    case RISCV::FNMADD_D:
    case RISCV::FNMADD_D_IN32X:
    case RISCV::FNMADD_D_INX:
    case RISCV::FNMADD_H:
    case RISCV::FNMADD_H_INX:
    case RISCV::FNMADD_S:
    case RISCV::FNMADD_S_INX:
    case RISCV::FNMSUB_D:
    case RISCV::FNMSUB_D_IN32X:
    case RISCV::FNMSUB_D_INX:
    case RISCV::FNMSUB_H:
    case RISCV::FNMSUB_H_INX:
    case RISCV::FNMSUB_S:
    case RISCV::FNMSUB_S_INX: {
      switch (OpNum) {
      case 3:
        // op: rs3
        return 27;
      case 2:
        // op: rs2
        return 20;
      case 1:
        // op: rs1
        return 15;
      case 4:
        // op: frm
        return 12;
      case 0:
        // op: rd
        return 7;
      }
      break;
    }
    case RISCV::CV_SB_rr_inc:
    case RISCV::CV_SH_rr_inc:
    case RISCV::CV_SW_rr_inc: {
      switch (OpNum) {
      case 3:
        // op: rs3
        return 7;
      case 1:
        // op: rs2
        return 20;
      case 2:
        // op: rs1
        return 15;
      }
      break;
    }
    case RISCV::THVdotVMAQASU_VX:
    case RISCV::THVdotVMAQAUS_VX:
    case RISCV::THVdotVMAQAU_VX:
    case RISCV::THVdotVMAQA_VX:
    case RISCV::VFMACC_VF:
    case RISCV::VFMADD_VF:
    case RISCV::VFMSAC_VF:
    case RISCV::VFMSUB_VF:
    case RISCV::VFNMACC_VF:
    case RISCV::VFNMADD_VF:
    case RISCV::VFNMSAC_VF:
    case RISCV::VFNMSUB_VF:
    case RISCV::VFWMACCBF16_VF:
    case RISCV::VFWMACC_VF:
    case RISCV::VFWMSAC_VF:
    case RISCV::VFWNMACC_VF:
    case RISCV::VFWNMSAC_VF:
    case RISCV::VMACC_VX:
    case RISCV::VMADD_VX:
    case RISCV::VNMSAC_VX:
    case RISCV::VNMSUB_VX:
    case RISCV::VWMACCSU_VX:
    case RISCV::VWMACCUS_VX:
    case RISCV::VWMACCU_VX:
    case RISCV::VWMACC_VX: {
      switch (OpNum) {
      case 3:
        // op: vs2
        return 20;
      case 2:
        // op: rs1
        return 15;
      case 1:
        // op: vd
        return 7;
      case 4:
        // op: vm
        return 25;
      }
      break;
    }
    case RISCV::THVdotVMAQASU_VV:
    case RISCV::THVdotVMAQAU_VV:
    case RISCV::THVdotVMAQA_VV:
    case RISCV::VFMACC_VV:
    case RISCV::VFMADD_VV:
    case RISCV::VFMSAC_VV:
    case RISCV::VFMSUB_VV:
    case RISCV::VFNMACC_VV:
    case RISCV::VFNMADD_VV:
    case RISCV::VFNMSAC_VV:
    case RISCV::VFNMSUB_VV:
    case RISCV::VFWMACCBF16_VV:
    case RISCV::VFWMACC_VV:
    case RISCV::VFWMSAC_VV:
    case RISCV::VFWNMACC_VV:
    case RISCV::VFWNMSAC_VV:
    case RISCV::VMACC_VV:
    case RISCV::VMADD_VV:
    case RISCV::VNMSAC_VV:
    case RISCV::VNMSUB_VV:
    case RISCV::VWMACCSU_VV:
    case RISCV::VWMACCU_VV:
    case RISCV::VWMACC_VV: {
      switch (OpNum) {
      case 3:
        // op: vs2
        return 20;
      case 2:
        // op: vs1
        return 15;
      case 1:
        // op: vd
        return 7;
      case 4:
        // op: vm
        return 25;
      }
      break;
    }
  }
  std::string msg;
  raw_string_ostream Msg(msg);
  Msg << "Not supported instr[opcode]: " << MI << "[" << OpNum << "]";
  report_fatal_error(Msg.str().c_str());
}

#endif // GET_OPERAND_BIT_OFFSET