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:
return 2;
}
break;
}
case RISCV::CM_JALT:
case RISCV::CM_JT: {
switch (OpNum) {
case 0:
return 2;
}
break;
}
case RISCV::C_J:
case RISCV::C_JAL: {
switch (OpNum) {
case 0:
return 2;
}
break;
}
case RISCV::InsnS: {
switch (OpNum) {
case 0:
return 0;
case 1:
return 12;
case 4:
return 7;
case 2:
return 20;
case 3:
return 15;
}
break;
}
case RISCV::InsnB: {
switch (OpNum) {
case 0:
return 0;
case 1:
return 12;
case 4:
return 7;
case 3:
return 20;
case 2:
return 15;
}
break;
}
case RISCV::InsnCJ: {
switch (OpNum) {
case 0:
return 0;
case 1:
return 13;
case 2:
return 2;
}
break;
}
case RISCV::InsnCSS: {
switch (OpNum) {
case 0:
return 0;
case 1:
return 13;
case 3:
return 7;
case 2:
return 2;
}
break;
}
case RISCV::InsnCB: {
switch (OpNum) {
case 0:
return 0;
case 1:
return 13;
case 3:
return 2;
case 2:
return 7;
}
break;
}
case RISCV::InsnCS: {
switch (OpNum) {
case 0:
return 0;
case 1:
return 13;
case 4:
return 5;
case 2:
return 2;
case 3:
return 7;
}
break;
}
case RISCV::FENCE: {
switch (OpNum) {
case 0:
return 24;
case 1:
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:
return 2;
case 1:
return 7;
case 2:
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:
return 7;
case 1:
return 15;
}
break;
}
case RISCV::FLI_D:
case RISCV::FLI_H:
case RISCV::FLI_S: {
switch (OpNum) {
case 0:
return 7;
case 1:
return 15;
}
break;
}
case RISCV::SSRDP: {
switch (OpNum) {
case 0:
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:
return 2;
case 2:
return 7;
}
break;
}
case RISCV::CM_POP:
case RISCV::CM_POPRET:
case RISCV::CM_POPRETZ:
case RISCV::CM_PUSH: {
switch (OpNum) {
case 0:
return 4;
case 1:
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:
return 15;
}
break;
}
case RISCV::C_MV: {
switch (OpNum) {
case 0:
return 7;
case 1:
return 2;
}
break;
}
case RISCV::C_JALR:
case RISCV::C_JR: {
switch (OpNum) {
case 0:
return 7;
}
break;
}
case RISCV::CV_SB_rr:
case RISCV::CV_SH_rr:
case RISCV::CV_SW_rr: {
switch (OpNum) {
case 0:
return 20;
case 1:
return 7;
}
break;
}
case RISCV::HSV_B:
case RISCV::HSV_D:
case RISCV::HSV_H:
case RISCV::HSV_W: {
switch (OpNum) {
case 0:
return 20;
case 1:
return 15;
}
break;
}
case RISCV::SSPUSH: {
switch (OpNum) {
case 0:
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:
return 2;
case 1:
return 7;
case 2:
return 5;
}
break;
}
case RISCV::Insn16:
case RISCV::Insn32: {
switch (OpNum) {
case 0:
return 0;
}
break;
}
case RISCV::VID_V: {
switch (OpNum) {
case 0:
return 7;
case 1:
return 25;
}
break;
}
case RISCV::VMV_V_I: {
switch (OpNum) {
case 1:
return 15;
case 0:
return 7;
}
break;
}
case RISCV::C_LI:
case RISCV::C_LUI: {
switch (OpNum) {
case 1:
return 2;
case 0:
return 7;
}
break;
}
case RISCV::C_BEQZ:
case RISCV::C_BNEZ: {
switch (OpNum) {
case 1:
return 2;
case 0:
return 7;
}
break;
}
case RISCV::C_LI_HINT:
case RISCV::C_LUI_HINT: {
switch (OpNum) {
case 1:
return 2;
}
break;
}
case RISCV::PREFETCH_I:
case RISCV::PREFETCH_R:
case RISCV::PREFETCH_W: {
switch (OpNum) {
case 1:
return 25;
case 0:
return 15;
}
break;
}
case RISCV::AUIPC:
case RISCV::JAL:
case RISCV::LUI: {
switch (OpNum) {
case 1:
return 12;
case 0:
return 7;
}
break;
}
case RISCV::InsnI:
case RISCV::InsnI_Mem: {
switch (OpNum) {
case 1:
return 0;
case 2:
return 12;
case 4:
return 20;
case 3:
return 15;
case 0:
return 7;
}
break;
}
case RISCV::InsnCI: {
switch (OpNum) {
case 1:
return 0;
case 2:
return 13;
case 3:
return 2;
case 0:
return 7;
}
break;
}
case RISCV::InsnCIW: {
switch (OpNum) {
case 1:
return 0;
case 2:
return 13;
case 3:
return 5;
case 0:
return 2;
}
break;
}
case RISCV::InsnCL: {
switch (OpNum) {
case 1:
return 0;
case 2:
return 13;
case 4:
return 5;
case 0:
return 2;
case 3:
return 7;
}
break;
}
case RISCV::InsnCR: {
switch (OpNum) {
case 1:
return 0;
case 2:
return 12;
case 3:
return 2;
case 0:
return 7;
}
break;
}
case RISCV::InsnCA: {
switch (OpNum) {
case 1:
return 0;
case 2:
return 10;
case 3:
return 5;
case 0:
return 7;
case 4:
return 2;
}
break;
}
case RISCV::InsnJ:
case RISCV::InsnU: {
switch (OpNum) {
case 1:
return 0;
case 2:
return 12;
case 0:
return 7;
}
break;
}
case RISCV::InsnR4: {
switch (OpNum) {
case 1:
return 0;
case 3:
return 25;
case 2:
return 12;
case 6:
return 27;
case 5:
return 20;
case 4:
return 15;
case 0:
return 7;
}
break;
}
case RISCV::InsnR: {
switch (OpNum) {
case 1:
return 0;
case 3:
return 25;
case 2:
return 12;
case 5:
return 20;
case 4:
return 15;
case 0:
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:
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:
return 15;
case 0:
return 7;
case 2:
return 20;
}
break;
}
case RISCV::CV_CLIP:
case RISCV::CV_CLIPU: {
switch (OpNum) {
case 1:
return 15;
case 0:
return 7;
case 2:
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:
return 15;
case 0:
return 7;
case 2:
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:
return 15;
case 0:
return 7;
case 2:
return 25;
case 3:
return 20;
}
break;
}
case RISCV::TH_EXT:
case RISCV::TH_EXTU: {
switch (OpNum) {
case 1:
return 15;
case 0:
return 7;
case 2:
return 26;
case 3:
return 20;
}
break;
}
case RISCV::AES64KS1I: {
switch (OpNum) {
case 1:
return 15;
case 0:
return 7;
case 2:
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:
return 15;
case 0:
return 7;
case 2:
return 20;
}
break;
}
case RISCV::VSETVLI: {
switch (OpNum) {
case 1:
return 15;
case 0:
return 7;
case 2:
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:
return 15;
case 0:
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:
return 15;
case 0:
return 7;
case 2:
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:
return 15;
case 0:
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:
return 15;
case 0:
return 7;
case 2:
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:
return 15;
case 0:
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:
return 15;
case 2:
return 12;
case 0:
return 7;
}
break;
}
case RISCV::C_ADD: {
switch (OpNum) {
case 1:
return 7;
case 2:
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:
return 20;
case 0:
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:
return 20;
case 2:
return 15;
case 0:
return 7;
case 3:
return 25;
}
break;
}
case RISCV::VC_I:
case RISCV::VC_X: {
switch (OpNum) {
case 1:
return 20;
case 3:
return 15;
case 2:
return 7;
case 0:
return 26;
}
break;
}
case RISCV::CM_MVA01S:
case RISCV::CM_MVSA01: {
switch (OpNum) {
case 1:
return 2;
case 0:
return 7;
}
break;
}
case RISCV::C_MV_HINT: {
switch (OpNum) {
case 1:
return 2;
}
break;
}
case RISCV::VSETIVLI: {
switch (OpNum) {
case 1:
return 15;
case 0:
return 7;
case 2:
return 20;
}
break;
}
case RISCV::VMV_V_V: {
switch (OpNum) {
case 1:
return 15;
case 0:
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:
return 20;
case 0:
return 7;
case 2:
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:
return 20;
case 0:
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:
return 20;
case 2:
return 15;
case 0:
return 7;
case 3:
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:
return 20;
case 2:
return 15;
case 0:
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:
return 20;
case 2:
return 15;
case 0:
return 7;
case 3:
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:
return 20;
case 2:
return 15;
case 0:
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:
return 20;
case 2:
return 15;
case 0:
return 7;
case 3:
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:
return 20;
case 2:
return 15;
case 0:
return 7;
}
break;
}
case RISCV::C_ADDI_NOP: {
switch (OpNum) {
case 2:
return 12;
case 1:
return 7;
}
break;
}
case RISCV::C_FLDSP:
case RISCV::C_FLWSP:
case RISCV::C_LDSP:
case RISCV::C_LWSP: {
switch (OpNum) {
case 2:
return 2;
case 0:
return 7;
}
break;
}
case RISCV::C_ADDI:
case RISCV::C_ADDIW:
case RISCV::C_SLLI: {
switch (OpNum) {
case 2:
return 2;
case 1:
return 7;
}
break;
}
case RISCV::C_ANDI:
case RISCV::C_SRAI:
case RISCV::C_SRLI: {
switch (OpNum) {
case 2:
return 2;
case 1:
return 7;
}
break;
}
case RISCV::C_ADDI16SP:
case RISCV::C_SLLI_HINT: {
switch (OpNum) {
case 2:
return 2;
}
break;
}
case RISCV::C_ADDI4SPN: {
switch (OpNum) {
case 2:
return 5;
case 0:
return 2;
}
break;
}
case RISCV::C_FSDSP:
case RISCV::C_FSWSP:
case RISCV::C_SDSP:
case RISCV::C_SWSP: {
switch (OpNum) {
case 2:
return 7;
case 0:
return 2;
}
break;
}
case RISCV::CV_BEQIMM:
case RISCV::CV_BNEIMM: {
switch (OpNum) {
case 2:
return 7;
case 0:
return 15;
case 1:
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:
return 7;
case 0:
return 20;
case 1:
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:
return 7;
case 1:
return 20;
case 0:
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:
return 15;
case 0:
return 7;
case 1:
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:
return 15;
case 0:
return 7;
case 3:
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:
return 15;
case 0:
return 7;
case 3:
return 20;
case 4:
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:
return 15;
case 1:
return 7;
case 3:
return 20;
}
break;
}
case RISCV::CV_INSERT: {
switch (OpNum) {
case 2:
return 15;
case 1:
return 7;
case 3:
return 25;
case 4:
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:
return 15;
case 1:
return 7;
case 3:
return 20;
case 4:
return 25;
}
break;
}
case RISCV::VFMV_S_F:
case RISCV::VMV_S_X: {
switch (OpNum) {
case 2:
return 15;
case 1:
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:
return 20;
case 1:
return 15;
case 0:
return 7;
case 3:
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:
return 20;
case 1:
return 15;
case 0:
return 7;
case 3:
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:
return 20;
case 1:
return 15;
case 0:
return 7;
case 3:
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:
return 20;
case 1:
return 15;
case 0:
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:
return 20;
case 1:
return 15;
case 0:
return 7;
case 3:
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:
return 20;
case 1:
return 15;
case 0:
return 7;
case 3:
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:
return 20;
case 1:
return 15;
case 3:
return 12;
case 0:
return 7;
}
break;
}
case RISCV::VC_V_FV: {
switch (OpNum) {
case 2:
return 20;
case 3:
return 15;
case 0:
return 7;
case 1:
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:
return 20;
case 3:
return 15;
case 0:
return 7;
case 1:
return 26;
}
break;
}
case RISCV::VC_FV:
case RISCV::VC_FVV:
case RISCV::VC_FVW: {
switch (OpNum) {
case 2:
return 20;
case 3:
return 15;
case 1:
return 7;
case 0:
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:
return 20;
case 3:
return 15;
case 1:
return 7;
case 0:
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:
return 2;
case 1:
return 7;
}
break;
}
case RISCV::C_ADD_HINT: {
switch (OpNum) {
case 2:
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:
return 20;
case 1:
return 15;
case 0:
return 7;
case 3:
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:
return 20;
case 1:
return 15;
case 0:
return 7;
case 3:
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:
return 20;
case 1:
return 7;
}
break;
}
case RISCV::VAESKF2_VI:
case RISCV::VSM3C_VI: {
switch (OpNum) {
case 2:
return 20;
case 3:
return 15;
case 1:
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:
return 20;
case 3:
return 15;
case 1:
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:
return 7;
case 1:
return 20;
case 2:
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:
return 20;
case 2:
return 15;
case 0:
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:
return 20;
case 2:
return 15;
case 1:
return 7;
case 4:
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:
return 20;
case 2:
return 15;
case 1:
return 7;
}
break;
}
case RISCV::VC_V_FVV:
case RISCV::VC_V_FVW: {
switch (OpNum) {
case 3:
return 20;
case 4:
return 15;
case 2:
return 7;
case 1:
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:
return 20;
case 4:
return 15;
case 2:
return 7;
case 1:
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:
return 27;
case 2:
return 20;
case 1:
return 15;
case 4:
return 12;
case 0:
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:
return 7;
case 1:
return 20;
case 2:
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:
return 20;
case 2:
return 15;
case 1:
return 7;
case 4:
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:
return 20;
case 2:
return 15;
case 1:
return 7;
case 4:
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