/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ |* *| |* Machine Code Emitter *| |* *| |* Automatically generated file, do not edit! *| |* *| \*===----------------------------------------------------------------------===*/ uint64_t LoongArchMCCodeEmitter::getBinaryCodeForInstr(const MCInst &MI, SmallVectorImpl &Fixups, const MCSubtargetInfo &STI) const { static const uint64_t InstBits[] = { UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(0), UINT64_C(46137344), // ADDI_D UINT64_C(41943040), // ADDI_W UINT64_C(268435456), // ADDU16I_D UINT64_C(1081344), // ADD_D UINT64_C(1048576), // ADD_W UINT64_C(2883584), // ALSL_D UINT64_C(262144), // ALSL_W UINT64_C(393216), // ALSL_WU UINT64_C(945913856), // AMADD_D UINT64_C(946503680), // AMADD_DB_D UINT64_C(946470912), // AMADD_DB_W UINT64_C(945881088), // AMADD_W UINT64_C(945979392), // AMAND_D UINT64_C(946569216), // AMAND_DB_D UINT64_C(946536448), // AMAND_DB_W UINT64_C(945946624), // AMAND_W UINT64_C(946176000), // AMMAX_D UINT64_C(946765824), // AMMAX_DB_D UINT64_C(946896896), // AMMAX_DB_DU UINT64_C(946733056), // AMMAX_DB_W UINT64_C(946864128), // AMMAX_DB_WU UINT64_C(946307072), // AMMAX_DU UINT64_C(946143232), // AMMAX_W UINT64_C(946274304), // AMMAX_WU UINT64_C(946241536), // AMMIN_D UINT64_C(946831360), // AMMIN_DB_D UINT64_C(946962432), // AMMIN_DB_DU UINT64_C(946798592), // AMMIN_DB_W UINT64_C(946929664), // AMMIN_DB_WU UINT64_C(946372608), // AMMIN_DU UINT64_C(946208768), // AMMIN_W UINT64_C(946339840), // AMMIN_WU UINT64_C(946044928), // AMOR_D UINT64_C(946634752), // AMOR_DB_D UINT64_C(946601984), // AMOR_DB_W UINT64_C(946012160), // AMOR_W UINT64_C(945848320), // AMSWAP_D UINT64_C(946438144), // AMSWAP_DB_D UINT64_C(946405376), // AMSWAP_DB_W UINT64_C(945815552), // AMSWAP_W UINT64_C(946110464), // AMXOR_D UINT64_C(946700288), // AMXOR_DB_D UINT64_C(946667520), // AMXOR_DB_W UINT64_C(946077696), // AMXOR_W UINT64_C(1343488), // AND UINT64_C(54525952), // ANDI UINT64_C(1474560), // ANDN UINT64_C(98304), // ASRTGT_D UINT64_C(65536), // ASRTLE_D UINT64_C(1342177280), // B UINT64_C(1207959552), // BCEQZ UINT64_C(1207959808), // BCNEZ UINT64_C(1476395008), // BEQ UINT64_C(1073741824), // BEQZ UINT64_C(1677721600), // BGE UINT64_C(1811939328), // BGEU UINT64_C(18432), // BITREV_4B UINT64_C(19456), // BITREV_8B UINT64_C(21504), // BITREV_D UINT64_C(20480), // BITREV_W UINT64_C(1409286144), // BL UINT64_C(1610612736), // BLT UINT64_C(1744830464), // BLTU UINT64_C(1543503872), // BNE UINT64_C(1140850688), // BNEZ UINT64_C(2752512), // BREAK UINT64_C(8388608), // BSTRINS_D UINT64_C(6291456), // BSTRINS_W UINT64_C(12582912), // BSTRPICK_D UINT64_C(6324224), // BSTRPICK_W UINT64_C(786432), // BYTEPICK_D UINT64_C(524288), // BYTEPICK_W UINT64_C(100663296), // CACOP UINT64_C(8192), // CLO_D UINT64_C(4096), // CLO_W UINT64_C(9216), // CLZ_D UINT64_C(5120), // CLZ_W UINT64_C(27648), // CPUCFG UINT64_C(2490368), // CRCC_W_B_W UINT64_C(2588672), // CRCC_W_D_W UINT64_C(2523136), // CRCC_W_H_W UINT64_C(2555904), // CRCC_W_W_W UINT64_C(2359296), // CRC_W_B_W UINT64_C(2457600), // CRC_W_D_W UINT64_C(2392064), // CRC_W_H_W UINT64_C(2424832), // CRC_W_W_W UINT64_C(67108864), // CSRRD UINT64_C(67108896), // CSRWR UINT64_C(67108864), // CSRXCHG UINT64_C(10240), // CTO_D UINT64_C(6144), // CTO_W UINT64_C(11264), // CTZ_D UINT64_C(7168), // CTZ_W UINT64_C(946995200), // DBAR UINT64_C(2785280), // DBCL UINT64_C(2228224), // DIV_D UINT64_C(2293760), // DIV_DU UINT64_C(2097152), // DIV_W UINT64_C(2162688), // DIV_WU UINT64_C(105396224), // ERTN UINT64_C(23552), // EXT_W_B UINT64_C(22528), // EXT_W_H UINT64_C(18089984), // FABS_D UINT64_C(18088960), // FABS_S UINT64_C(16842752), // FADD_D UINT64_C(16809984), // FADD_S UINT64_C(18102272), // FCLASS_D UINT64_C(18101248), // FCLASS_S UINT64_C(203423744), // FCMP_CAF_D UINT64_C(202375168), // FCMP_CAF_S UINT64_C(203554816), // FCMP_CEQ_D UINT64_C(202506240), // FCMP_CEQ_S UINT64_C(203620352), // FCMP_CLE_D UINT64_C(202571776), // FCMP_CLE_S UINT64_C(203489280), // FCMP_CLT_D UINT64_C(202440704), // FCMP_CLT_S UINT64_C(203948032), // FCMP_CNE_D UINT64_C(202899456), // FCMP_CNE_S UINT64_C(204079104), // FCMP_COR_D UINT64_C(203030528), // FCMP_COR_S UINT64_C(203816960), // FCMP_CUEQ_D UINT64_C(202768384), // FCMP_CUEQ_S UINT64_C(203882496), // FCMP_CULE_D UINT64_C(202833920), // FCMP_CULE_S UINT64_C(203751424), // FCMP_CULT_D UINT64_C(202702848), // FCMP_CULT_S UINT64_C(204210176), // FCMP_CUNE_D UINT64_C(203161600), // FCMP_CUNE_S UINT64_C(203685888), // FCMP_CUN_D UINT64_C(202637312), // FCMP_CUN_S UINT64_C(203456512), // FCMP_SAF_D UINT64_C(202407936), // FCMP_SAF_S UINT64_C(203587584), // FCMP_SEQ_D UINT64_C(202539008), // FCMP_SEQ_S UINT64_C(203653120), // FCMP_SLE_D UINT64_C(202604544), // FCMP_SLE_S UINT64_C(203522048), // FCMP_SLT_D UINT64_C(202473472), // FCMP_SLT_S UINT64_C(203980800), // FCMP_SNE_D UINT64_C(202932224), // FCMP_SNE_S UINT64_C(204111872), // FCMP_SOR_D UINT64_C(203063296), // FCMP_SOR_S UINT64_C(203849728), // FCMP_SUEQ_D UINT64_C(202801152), // FCMP_SUEQ_S UINT64_C(203915264), // FCMP_SULE_D UINT64_C(202866688), // FCMP_SULE_S UINT64_C(203784192), // FCMP_SULT_D UINT64_C(202735616), // FCMP_SULT_S UINT64_C(204242944), // FCMP_SUNE_D UINT64_C(203194368), // FCMP_SUNE_S UINT64_C(203718656), // FCMP_SUN_D UINT64_C(202670080), // FCMP_SUN_S UINT64_C(18022400), // FCOPYSIGN_D UINT64_C(17989632), // FCOPYSIGN_S UINT64_C(18424832), // FCVT_D_S UINT64_C(18421760), // FCVT_S_D UINT64_C(17235968), // FDIV_D UINT64_C(17203200), // FDIV_S UINT64_C(18688000), // FFINT_D_L UINT64_C(18685952), // FFINT_D_W UINT64_C(18683904), // FFINT_S_L UINT64_C(18681856), // FFINT_S_W UINT64_C(947159040), // FLDGT_D UINT64_C(947126272), // FLDGT_S UINT64_C(947224576), // FLDLE_D UINT64_C(947191808), // FLDLE_S UINT64_C(942931968), // FLDX_D UINT64_C(942669824), // FLDX_S UINT64_C(729808896), // FLD_D UINT64_C(721420288), // FLD_S UINT64_C(18098176), // FLOGB_D UINT64_C(18097152), // FLOGB_S UINT64_C(136314880), // FMADD_D UINT64_C(135266304), // FMADD_S UINT64_C(17629184), // FMAXA_D UINT64_C(17596416), // FMAXA_S UINT64_C(17367040), // FMAX_D UINT64_C(17334272), // FMAX_S UINT64_C(17760256), // FMINA_D UINT64_C(17727488), // FMINA_S UINT64_C(17498112), // FMIN_D UINT64_C(17465344), // FMIN_S UINT64_C(18126848), // FMOV_D UINT64_C(18125824), // FMOV_S UINT64_C(140509184), // FMSUB_D UINT64_C(139460608), // FMSUB_S UINT64_C(17104896), // FMUL_D UINT64_C(17072128), // FMUL_S UINT64_C(18094080), // FNEG_D UINT64_C(18093056), // FNEG_S UINT64_C(144703488), // FNMADD_D UINT64_C(143654912), // FNMADD_S UINT64_C(148897792), // FNMSUB_D UINT64_C(147849216), // FNMSUB_S UINT64_C(18110464), // FRECIP_D UINT64_C(18109440), // FRECIP_S UINT64_C(18761728), // FRINT_D UINT64_C(18760704), // FRINT_S UINT64_C(18114560), // FRSQRT_D UINT64_C(18113536), // FRSQRT_S UINT64_C(17891328), // FSCALEB_D UINT64_C(17858560), // FSCALEB_S UINT64_C(218103808), // FSEL_D UINT64_C(218103808), // FSEL_S UINT64_C(18106368), // FSQRT_D UINT64_C(18105344), // FSQRT_S UINT64_C(947290112), // FSTGT_D UINT64_C(947257344), // FSTGT_S UINT64_C(947355648), // FSTLE_D UINT64_C(947322880), // FSTLE_S UINT64_C(943456256), // FSTX_D UINT64_C(943194112), // FSTX_S UINT64_C(734003200), // FST_D UINT64_C(725614592), // FST_S UINT64_C(16973824), // FSUB_D UINT64_C(16941056), // FSUB_S UINT64_C(18491392), // FTINTRM_L_D UINT64_C(18490368), // FTINTRM_L_S UINT64_C(18483200), // FTINTRM_W_D UINT64_C(18482176), // FTINTRM_W_S UINT64_C(18540544), // FTINTRNE_L_D UINT64_C(18539520), // FTINTRNE_L_S UINT64_C(18532352), // FTINTRNE_W_D UINT64_C(18531328), // FTINTRNE_W_S UINT64_C(18507776), // FTINTRP_L_D UINT64_C(18506752), // FTINTRP_L_S UINT64_C(18499584), // FTINTRP_W_D UINT64_C(18498560), // FTINTRP_W_S UINT64_C(18524160), // FTINTRZ_L_D UINT64_C(18523136), // FTINTRZ_L_S UINT64_C(18515968), // FTINTRZ_W_D UINT64_C(18514944), // FTINTRZ_W_S UINT64_C(18556928), // FTINT_L_D UINT64_C(18555904), // FTINT_L_S UINT64_C(18548736), // FTINT_W_D UINT64_C(18547712), // FTINT_W_S UINT64_C(947027968), // IBAR UINT64_C(105414656), // IDLE UINT64_C(105480192), // INVTLB UINT64_C(105381888), // IOCSRRD_B UINT64_C(105384960), // IOCSRRD_D UINT64_C(105382912), // IOCSRRD_H UINT64_C(105383936), // IOCSRRD_W UINT64_C(105385984), // IOCSRWR_B UINT64_C(105389056), // IOCSRWR_D UINT64_C(105387008), // IOCSRWR_H UINT64_C(105388032), // IOCSRWR_W UINT64_C(1275068416), // JIRL UINT64_C(104857600), // LDDIR UINT64_C(947388416), // LDGT_B UINT64_C(947486720), // LDGT_D UINT64_C(947421184), // LDGT_H UINT64_C(947453952), // LDGT_W UINT64_C(947519488), // LDLE_B UINT64_C(947617792), // LDLE_D UINT64_C(947552256), // LDLE_H UINT64_C(947585024), // LDLE_W UINT64_C(105119744), // LDPTE UINT64_C(637534208), // LDPTR_D UINT64_C(603979776), // LDPTR_W UINT64_C(939524096), // LDX_B UINT64_C(941621248), // LDX_BU UINT64_C(940310528), // LDX_D UINT64_C(939786240), // LDX_H UINT64_C(941883392), // LDX_HU UINT64_C(940048384), // LDX_W UINT64_C(942145536), // LDX_WU UINT64_C(671088640), // LD_B UINT64_C(704643072), // LD_BU UINT64_C(683671552), // LD_D UINT64_C(675282944), // LD_H UINT64_C(708837376), // LD_HU UINT64_C(679477248), // LD_W UINT64_C(713031680), // LD_WU UINT64_C(570425344), // LL_D UINT64_C(536870912), // LL_W UINT64_C(335544320), // LU12I_W UINT64_C(369098752), // LU32I_D UINT64_C(50331648), // LU52I_D UINT64_C(1245184), // MASKEQZ UINT64_C(1277952), // MASKNEZ UINT64_C(2260992), // MOD_D UINT64_C(2326528), // MOD_DU UINT64_C(2129920), // MOD_W UINT64_C(2195456), // MOD_WU UINT64_C(18142208), // MOVCF2FR_S UINT64_C(18144256), // MOVCF2GR UINT64_C(18139136), // MOVFCSR2GR UINT64_C(18141184), // MOVFR2CF_S UINT64_C(18135040), // MOVFR2GR_D UINT64_C(18134016), // MOVFR2GR_S UINT64_C(18134016), // MOVFR2GR_S_64 UINT64_C(18136064), // MOVFRH2GR_S UINT64_C(18143232), // MOVGR2CF UINT64_C(18137088), // MOVGR2FCSR UINT64_C(18131968), // MOVGR2FRH_W UINT64_C(18130944), // MOVGR2FR_D UINT64_C(18129920), // MOVGR2FR_W UINT64_C(18129920), // MOVGR2FR_W_64 UINT64_C(1966080), // MULH_D UINT64_C(1998848), // MULH_DU UINT64_C(1867776), // MULH_W UINT64_C(1900544), // MULH_WU UINT64_C(2031616), // MULW_D_W UINT64_C(2064384), // MULW_D_WU UINT64_C(1933312), // MUL_D UINT64_C(1835008), // MUL_W UINT64_C(1310720), // NOR UINT64_C(1376256), // OR UINT64_C(58720256), // ORI UINT64_C(1441792), // ORN UINT64_C(402653184), // PCADDI UINT64_C(469762048), // PCADDU12I UINT64_C(503316480), // PCADDU18I UINT64_C(436207616), // PCALAU12I UINT64_C(717225984), // PRELD UINT64_C(942407680), // PRELDX UINT64_C(25600), // RDTIMEH_W UINT64_C(24576), // RDTIMEL_W UINT64_C(26624), // RDTIME_D UINT64_C(12288), // REVB_2H UINT64_C(14336), // REVB_2W UINT64_C(13312), // REVB_4H UINT64_C(15360), // REVB_D UINT64_C(16384), // REVH_2W UINT64_C(17408), // REVH_D UINT64_C(5046272), // ROTRI_D UINT64_C(5013504), // ROTRI_W UINT64_C(1802240), // ROTR_D UINT64_C(1769472), // ROTR_W UINT64_C(587202560), // SC_D UINT64_C(553648128), // SC_W UINT64_C(4259840), // SLLI_D UINT64_C(4227072), // SLLI_W UINT64_C(1605632), // SLL_D UINT64_C(1507328), // SLL_W UINT64_C(1179648), // SLT UINT64_C(33554432), // SLTI UINT64_C(1212416), // SLTU UINT64_C(37748736), // SLTUI UINT64_C(4784128), // SRAI_D UINT64_C(4751360), // SRAI_W UINT64_C(1671168), // SRA_D UINT64_C(1572864), // SRA_W UINT64_C(4521984), // SRLI_D UINT64_C(4489216), // SRLI_W UINT64_C(1638400), // SRL_D UINT64_C(1540096), // SRL_W UINT64_C(947650560), // STGT_B UINT64_C(947748864), // STGT_D UINT64_C(947683328), // STGT_H UINT64_C(947716096), // STGT_W UINT64_C(947781632), // STLE_B UINT64_C(947879936), // STLE_D UINT64_C(947814400), // STLE_H UINT64_C(947847168), // STLE_W UINT64_C(654311424), // STPTR_D UINT64_C(620756992), // STPTR_W UINT64_C(940572672), // STX_B UINT64_C(941359104), // STX_D UINT64_C(940834816), // STX_H UINT64_C(941096960), // STX_W UINT64_C(687865856), // ST_B UINT64_C(700448768), // ST_D UINT64_C(692060160), // ST_H UINT64_C(696254464), // ST_W UINT64_C(1146880), // SUB_D UINT64_C(1114112), // SUB_W UINT64_C(2818048), // SYSCALL UINT64_C(105390080), // TLBCLR UINT64_C(105395200), // TLBFILL UINT64_C(105391104), // TLBFLUSH UINT64_C(105393152), // TLBRD UINT64_C(105392128), // TLBSRCH UINT64_C(105394176), // TLBWR UINT64_C(1409024), // XOR UINT64_C(62914560), // XORI UINT64_C(0) }; const unsigned opcode = MI.getOpcode(); uint64_t Value = InstBits[opcode]; uint64_t op = 0; (void)op; // suppress warning switch (opcode) { case LoongArch::ERTN: case LoongArch::TLBCLR: case LoongArch::TLBFILL: case LoongArch::TLBFLUSH: case LoongArch::TLBRD: case LoongArch::TLBSRCH: case LoongArch::TLBWR: { break; } case LoongArch::FSEL_D: case LoongArch::FSEL_S: { // op: ca op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI); op &= UINT64_C(7); op <<= 15; Value |= op; // op: fk op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(31); op <<= 10; Value |= op; // op: fj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: fd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::CSRRD: { // op: csr_num op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(16383); op <<= 10; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::CSRWR: { // op: csr_num op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(16383); op <<= 10; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::CSRXCHG: { // op: csr_num op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI); op &= UINT64_C(16383); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::FMADD_D: case LoongArch::FMADD_S: case LoongArch::FMSUB_D: case LoongArch::FMSUB_S: case LoongArch::FNMADD_D: case LoongArch::FNMADD_S: case LoongArch::FNMSUB_D: case LoongArch::FNMSUB_S: { // op: fa op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI); op &= UINT64_C(31); op <<= 15; Value |= op; // op: fk op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(31); op <<= 10; Value |= op; // op: fj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: fd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::FABS_D: case LoongArch::FABS_S: case LoongArch::FCLASS_D: case LoongArch::FCLASS_S: case LoongArch::FCVT_D_S: case LoongArch::FCVT_S_D: case LoongArch::FFINT_D_L: case LoongArch::FFINT_D_W: case LoongArch::FFINT_S_L: case LoongArch::FFINT_S_W: case LoongArch::FLOGB_D: case LoongArch::FLOGB_S: case LoongArch::FNEG_D: case LoongArch::FNEG_S: case LoongArch::FRECIP_D: case LoongArch::FRECIP_S: case LoongArch::FRINT_D: case LoongArch::FRINT_S: case LoongArch::FRSQRT_D: case LoongArch::FRSQRT_S: case LoongArch::FSQRT_D: case LoongArch::FSQRT_S: case LoongArch::FTINTRM_L_D: case LoongArch::FTINTRM_L_S: case LoongArch::FTINTRM_W_D: case LoongArch::FTINTRM_W_S: case LoongArch::FTINTRNE_L_D: case LoongArch::FTINTRNE_L_S: case LoongArch::FTINTRNE_W_D: case LoongArch::FTINTRNE_W_S: case LoongArch::FTINTRP_L_D: case LoongArch::FTINTRP_L_S: case LoongArch::FTINTRP_W_D: case LoongArch::FTINTRP_W_S: case LoongArch::FTINTRZ_L_D: case LoongArch::FTINTRZ_L_S: case LoongArch::FTINTRZ_W_D: case LoongArch::FTINTRZ_W_S: case LoongArch::FTINT_L_D: case LoongArch::FTINT_L_S: case LoongArch::FTINT_W_D: case LoongArch::FTINT_W_S: { // op: fj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: fd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::FCMP_CAF_D: case LoongArch::FCMP_CAF_S: case LoongArch::FCMP_CEQ_D: case LoongArch::FCMP_CEQ_S: case LoongArch::FCMP_CLE_D: case LoongArch::FCMP_CLE_S: case LoongArch::FCMP_CLT_D: case LoongArch::FCMP_CLT_S: case LoongArch::FCMP_CNE_D: case LoongArch::FCMP_CNE_S: case LoongArch::FCMP_COR_D: case LoongArch::FCMP_COR_S: case LoongArch::FCMP_CUEQ_D: case LoongArch::FCMP_CUEQ_S: case LoongArch::FCMP_CULE_D: case LoongArch::FCMP_CULE_S: case LoongArch::FCMP_CULT_D: case LoongArch::FCMP_CULT_S: case LoongArch::FCMP_CUNE_D: case LoongArch::FCMP_CUNE_S: case LoongArch::FCMP_CUN_D: case LoongArch::FCMP_CUN_S: case LoongArch::FCMP_SAF_D: case LoongArch::FCMP_SAF_S: case LoongArch::FCMP_SEQ_D: case LoongArch::FCMP_SEQ_S: case LoongArch::FCMP_SLE_D: case LoongArch::FCMP_SLE_S: case LoongArch::FCMP_SLT_D: case LoongArch::FCMP_SLT_S: case LoongArch::FCMP_SNE_D: case LoongArch::FCMP_SNE_S: case LoongArch::FCMP_SOR_D: case LoongArch::FCMP_SOR_S: case LoongArch::FCMP_SUEQ_D: case LoongArch::FCMP_SUEQ_S: case LoongArch::FCMP_SULE_D: case LoongArch::FCMP_SULE_S: case LoongArch::FCMP_SULT_D: case LoongArch::FCMP_SULT_S: case LoongArch::FCMP_SUNE_D: case LoongArch::FCMP_SUNE_S: case LoongArch::FCMP_SUN_D: case LoongArch::FCMP_SUN_S: { // op: fk op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(31); op <<= 10; Value |= op; // op: fj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: cd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(7); Value |= op; break; } case LoongArch::FADD_D: case LoongArch::FADD_S: case LoongArch::FCOPYSIGN_D: case LoongArch::FCOPYSIGN_S: case LoongArch::FDIV_D: case LoongArch::FDIV_S: case LoongArch::FMAXA_D: case LoongArch::FMAXA_S: case LoongArch::FMAX_D: case LoongArch::FMAX_S: case LoongArch::FMINA_D: case LoongArch::FMINA_S: case LoongArch::FMIN_D: case LoongArch::FMIN_S: case LoongArch::FMUL_D: case LoongArch::FMUL_S: case LoongArch::FSCALEB_D: case LoongArch::FSCALEB_S: case LoongArch::FSUB_D: case LoongArch::FSUB_S: { // op: fk op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(31); op <<= 10; Value |= op; // op: fj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: fd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::FLD_D: case LoongArch::FLD_S: case LoongArch::FST_D: case LoongArch::FST_S: { // op: imm12 op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(4095); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: fd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::PRELD: { // op: imm12 op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(4095); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: imm5 op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::CACOP: { // op: imm12 op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(4095); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: op op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::ADDI_D: case LoongArch::ADDI_W: case LoongArch::ANDI: case LoongArch::LD_B: case LoongArch::LD_BU: case LoongArch::LD_D: case LoongArch::LD_H: case LoongArch::LD_HU: case LoongArch::LD_W: case LoongArch::LD_WU: case LoongArch::LU52I_D: case LoongArch::ORI: case LoongArch::SLTI: case LoongArch::SLTUI: case LoongArch::ST_B: case LoongArch::ST_D: case LoongArch::ST_H: case LoongArch::ST_W: case LoongArch::XORI: { // op: imm12 op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(4095); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::LDPTR_D: case LoongArch::LDPTR_W: case LoongArch::LL_D: case LoongArch::LL_W: case LoongArch::STPTR_D: case LoongArch::STPTR_W: { // op: imm14 op = getImmOpValueAsr2(MI, 2, Fixups, STI); op &= UINT64_C(16383); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::SC_D: case LoongArch::SC_W: { // op: imm14 op = getImmOpValueAsr2(MI, 3, Fixups, STI); op &= UINT64_C(16383); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::BREAK: case LoongArch::DBAR: case LoongArch::DBCL: case LoongArch::IBAR: case LoongArch::IDLE: case LoongArch::SYSCALL: { // op: imm15 op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(32767); Value |= op; break; } case LoongArch::BEQ: case LoongArch::BGE: case LoongArch::BGEU: case LoongArch::BLT: case LoongArch::BLTU: case LoongArch::BNE: { // op: imm16 op = getImmOpValueAsr2(MI, 2, Fixups, STI); op &= UINT64_C(65535); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::JIRL: { // op: imm16 op = getImmOpValueAsr2(MI, 2, Fixups, STI); op &= UINT64_C(65535); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::ADDU16I_D: { // op: imm16 op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(65535); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::ALSL_D: case LoongArch::ALSL_W: case LoongArch::ALSL_WU: { // op: imm2 op = getImmOpValueSub1(MI, 3, Fixups, STI); op &= UINT64_C(3); op <<= 15; Value |= op; // op: rk op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(31); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::BYTEPICK_W: { // op: imm2 op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI); op &= UINT64_C(3); op <<= 15; Value |= op; // op: rk op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(31); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::LU12I_W: case LoongArch::PCADDI: case LoongArch::PCADDU12I: case LoongArch::PCADDU18I: case LoongArch::PCALAU12I: { // op: imm20 op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(1048575); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::LU32I_D: { // op: imm20 op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(1048575); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::BCEQZ: case LoongArch::BCNEZ: { // op: imm21 op = getImmOpValueAsr2(MI, 1, Fixups, STI); Value |= (op & UINT64_C(65535)) << 10; Value |= (op & UINT64_C(2031616)) >> 16; // op: cj op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(7); op <<= 5; Value |= op; break; } case LoongArch::BEQZ: case LoongArch::BNEZ: { // op: imm21 op = getImmOpValueAsr2(MI, 1, Fixups, STI); Value |= (op & UINT64_C(65535)) << 10; Value |= (op & UINT64_C(2031616)) >> 16; // op: rj op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; break; } case LoongArch::B: case LoongArch::BL: { // op: imm26 op = getImmOpValueAsr2(MI, 0, Fixups, STI); Value |= (op & UINT64_C(65535)) << 10; Value |= (op & UINT64_C(67043328)) >> 16; break; } case LoongArch::BYTEPICK_D: { // op: imm3 op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI); op &= UINT64_C(7); op <<= 15; Value |= op; // op: rk op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(31); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::ROTRI_W: case LoongArch::SLLI_W: case LoongArch::SRAI_W: case LoongArch::SRLI_W: { // op: imm5 op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(31); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::ROTRI_D: case LoongArch::SLLI_D: case LoongArch::SRAI_D: case LoongArch::SRLI_D: { // op: imm6 op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(63); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::LDDIR: { // op: imm8 op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(255); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::BSTRPICK_D: { // op: msbd op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(63); op <<= 16; Value |= op; // op: lsbd op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI); op &= UINT64_C(63); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::BSTRINS_D: { // op: msbd op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI); op &= UINT64_C(63); op <<= 16; Value |= op; // op: lsbd op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI); op &= UINT64_C(63); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::BSTRPICK_W: { // op: msbw op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(31); op <<= 16; Value |= op; // op: lsbw op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI); op &= UINT64_C(31); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::BSTRINS_W: { // op: msbw op = getMachineOpValue(MI, MI.getOperand(3), Fixups, STI); op &= UINT64_C(31); op <<= 16; Value |= op; // op: lsbw op = getMachineOpValue(MI, MI.getOperand(4), Fixups, STI); op &= UINT64_C(31); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::BITREV_4B: case LoongArch::BITREV_8B: case LoongArch::BITREV_D: case LoongArch::BITREV_W: case LoongArch::CLO_D: case LoongArch::CLO_W: case LoongArch::CLZ_D: case LoongArch::CLZ_W: case LoongArch::CPUCFG: case LoongArch::CTO_D: case LoongArch::CTO_W: case LoongArch::CTZ_D: case LoongArch::CTZ_W: case LoongArch::EXT_W_B: case LoongArch::EXT_W_H: case LoongArch::IOCSRRD_B: case LoongArch::IOCSRRD_D: case LoongArch::IOCSRRD_H: case LoongArch::IOCSRRD_W: case LoongArch::IOCSRWR_B: case LoongArch::IOCSRWR_D: case LoongArch::IOCSRWR_H: case LoongArch::IOCSRWR_W: case LoongArch::RDTIMEH_W: case LoongArch::RDTIMEL_W: case LoongArch::RDTIME_D: case LoongArch::REVB_2H: case LoongArch::REVB_2W: case LoongArch::REVB_4H: case LoongArch::REVB_D: case LoongArch::REVH_2W: case LoongArch::REVH_D: { // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::INVTLB: { // op: rk op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: op op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::ASRTGT_D: case LoongArch::ASRTLE_D: { // op: rk op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; break; } case LoongArch::AMADD_D: case LoongArch::AMADD_DB_D: case LoongArch::AMADD_DB_W: case LoongArch::AMADD_W: case LoongArch::AMAND_D: case LoongArch::AMAND_DB_D: case LoongArch::AMAND_DB_W: case LoongArch::AMAND_W: case LoongArch::AMMAX_D: case LoongArch::AMMAX_DB_D: case LoongArch::AMMAX_DB_DU: case LoongArch::AMMAX_DB_W: case LoongArch::AMMAX_DB_WU: case LoongArch::AMMAX_DU: case LoongArch::AMMAX_W: case LoongArch::AMMAX_WU: case LoongArch::AMMIN_D: case LoongArch::AMMIN_DB_D: case LoongArch::AMMIN_DB_DU: case LoongArch::AMMIN_DB_W: case LoongArch::AMMIN_DB_WU: case LoongArch::AMMIN_DU: case LoongArch::AMMIN_W: case LoongArch::AMMIN_WU: case LoongArch::AMOR_D: case LoongArch::AMOR_DB_D: case LoongArch::AMOR_DB_W: case LoongArch::AMOR_W: case LoongArch::AMSWAP_D: case LoongArch::AMSWAP_DB_D: case LoongArch::AMSWAP_DB_W: case LoongArch::AMSWAP_W: case LoongArch::AMXOR_D: case LoongArch::AMXOR_DB_D: case LoongArch::AMXOR_DB_W: case LoongArch::AMXOR_W: { // op: rk op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::FLDGT_D: case LoongArch::FLDGT_S: case LoongArch::FLDLE_D: case LoongArch::FLDLE_S: case LoongArch::FLDX_D: case LoongArch::FLDX_S: case LoongArch::FSTGT_D: case LoongArch::FSTGT_S: case LoongArch::FSTLE_D: case LoongArch::FSTLE_S: case LoongArch::FSTX_D: case LoongArch::FSTX_S: { // op: rk op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(31); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: fd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::PRELDX: { // op: rk op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(31); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: imm5 op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::ADD_D: case LoongArch::ADD_W: case LoongArch::AND: case LoongArch::ANDN: case LoongArch::CRCC_W_B_W: case LoongArch::CRCC_W_D_W: case LoongArch::CRCC_W_H_W: case LoongArch::CRCC_W_W_W: case LoongArch::CRC_W_B_W: case LoongArch::CRC_W_D_W: case LoongArch::CRC_W_H_W: case LoongArch::CRC_W_W_W: case LoongArch::DIV_D: case LoongArch::DIV_DU: case LoongArch::DIV_W: case LoongArch::DIV_WU: case LoongArch::LDGT_B: case LoongArch::LDGT_D: case LoongArch::LDGT_H: case LoongArch::LDGT_W: case LoongArch::LDLE_B: case LoongArch::LDLE_D: case LoongArch::LDLE_H: case LoongArch::LDLE_W: case LoongArch::LDX_B: case LoongArch::LDX_BU: case LoongArch::LDX_D: case LoongArch::LDX_H: case LoongArch::LDX_HU: case LoongArch::LDX_W: case LoongArch::LDX_WU: case LoongArch::MASKEQZ: case LoongArch::MASKNEZ: case LoongArch::MOD_D: case LoongArch::MOD_DU: case LoongArch::MOD_W: case LoongArch::MOD_WU: case LoongArch::MULH_D: case LoongArch::MULH_DU: case LoongArch::MULH_W: case LoongArch::MULH_WU: case LoongArch::MULW_D_W: case LoongArch::MULW_D_WU: case LoongArch::MUL_D: case LoongArch::MUL_W: case LoongArch::NOR: case LoongArch::OR: case LoongArch::ORN: case LoongArch::ROTR_D: case LoongArch::ROTR_W: case LoongArch::SLL_D: case LoongArch::SLL_W: case LoongArch::SLT: case LoongArch::SLTU: case LoongArch::SRA_D: case LoongArch::SRA_W: case LoongArch::SRL_D: case LoongArch::SRL_W: case LoongArch::STGT_B: case LoongArch::STGT_D: case LoongArch::STGT_H: case LoongArch::STGT_W: case LoongArch::STLE_B: case LoongArch::STLE_D: case LoongArch::STLE_H: case LoongArch::STLE_W: case LoongArch::STX_B: case LoongArch::STX_D: case LoongArch::STX_H: case LoongArch::STX_W: case LoongArch::SUB_D: case LoongArch::SUB_W: case LoongArch::XOR: { // op: rk op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(31); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: rd op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::LDPTE: { // op: seq op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(255); op <<= 10; Value |= op; // op: rj op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; break; } case LoongArch::FMOV_D: case LoongArch::FMOV_S: case LoongArch::MOVCF2FR_S: case LoongArch::MOVCF2GR: case LoongArch::MOVFCSR2GR: case LoongArch::MOVFR2CF_S: case LoongArch::MOVFR2GR_D: case LoongArch::MOVFR2GR_S: case LoongArch::MOVFR2GR_S_64: case LoongArch::MOVFRH2GR_S: case LoongArch::MOVGR2CF: case LoongArch::MOVGR2FCSR: case LoongArch::MOVGR2FR_D: case LoongArch::MOVGR2FR_W: case LoongArch::MOVGR2FR_W_64: { // op: src op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: dst op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } case LoongArch::MOVGR2FRH_W: { // op: src op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI); op &= UINT64_C(31); op <<= 5; Value |= op; // op: dst op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI); op &= UINT64_C(31); Value |= op; break; } default: std::string msg; raw_string_ostream Msg(msg); Msg << "Not supported instr: " << MI; report_fatal_error(Msg.str().c_str()); } return Value; }