class sf_SInst_sf<string opc, Intrinsic IntID> : SInst<(outs IntRegs:$dst), (ins IntRegs:$src1), !strconcat("$dst = ", !strconcat(opc , "($src1)")), [(set IntRegs:$dst, (IntID IntRegs:$src1))]>; class si_SInst_sf<string opc, Intrinsic IntID> : SInst<(outs IntRegs:$dst), (ins IntRegs:$src1), !strconcat("$dst = ", !strconcat(opc , "($src1)")), [(set IntRegs:$dst, (IntID IntRegs:$src1))]>; class sf_SInst_si<string opc, Intrinsic IntID> : SInst<(outs IntRegs:$dst), (ins IntRegs:$src1), !strconcat("$dst = ", !strconcat(opc , "($src1)")), [(set IntRegs:$dst, (IntID IntRegs:$src1))]>; class sf_SInst_di<string opc, Intrinsic IntID> : SInst<(outs IntRegs:$dst), (ins DoubleRegs:$src1), !strconcat("$dst = ", !strconcat(opc , "($src1)")), [(set IntRegs:$dst, (IntID DoubleRegs:$src1))]>; class sf_SInst_df<string opc, Intrinsic IntID> : SInst<(outs IntRegs:$dst), (ins DoubleRegs:$src1), !strconcat("$dst = ", !strconcat(opc , "($src1)")), [(set IntRegs:$dst, (IntID DoubleRegs:$src1))]>; class si_SInst_df<string opc, Intrinsic IntID> : SInst<(outs IntRegs:$dst), (ins DoubleRegs:$src1), !strconcat("$dst = ", !strconcat(opc , "($src1)")), [(set IntRegs:$dst, (IntID DoubleRegs:$src1))]>; class df_SInst_sf<string opc, Intrinsic IntID> : SInst<(outs DoubleRegs:$dst), (ins IntRegs:$src1), !strconcat("$dst = ", !strconcat(opc , "($src1)")), [(set DoubleRegs:$dst, (IntID IntRegs:$src1))]>; class di_SInst_sf<string opc, Intrinsic IntID> : SInst<(outs DoubleRegs:$dst), (ins IntRegs:$src1), !strconcat("$dst = ", !strconcat(opc , "($src1)")), [(set DoubleRegs:$dst, (IntID IntRegs:$src1))]>; class df_SInst_si<string opc, Intrinsic IntID> : SInst<(outs DoubleRegs:$dst), (ins IntRegs:$src1), !strconcat("$dst = ", !strconcat(opc , "($src1)")), [(set DoubleRegs:$dst, (IntID IntRegs:$src1))]>; class df_SInst_df<string opc, Intrinsic IntID> : SInst<(outs DoubleRegs:$dst), (ins DoubleRegs:$src1), !strconcat("$dst = ", !strconcat(opc , "($src1)")), [(set DoubleRegs:$dst, (IntID DoubleRegs:$src1))]>; class di_SInst_df<string opc, Intrinsic IntID> : SInst<(outs DoubleRegs:$dst), (ins DoubleRegs:$src1), !strconcat("$dst = ", !strconcat(opc , "($src1)")), [(set DoubleRegs:$dst, (IntID DoubleRegs:$src1))]>; class df_SInst_di<string opc, Intrinsic IntID> : SInst<(outs DoubleRegs:$dst), (ins DoubleRegs:$src1), !strconcat("$dst = ", !strconcat(opc , "($src1)")), [(set DoubleRegs:$dst, (IntID DoubleRegs:$src1))]>; class sf_MInst_sfsf<string opc, Intrinsic IntID> : MInst<(outs IntRegs:$dst), (ins IntRegs:$src1, IntRegs:$src2), !strconcat("$dst = ", !strconcat(opc , "($src1, $src2)")), [(set IntRegs:$dst, (IntID IntRegs:$src1, IntRegs:$src2))]>; class df_MInst_dfdf<string opc, Intrinsic IntID> : MInst<(outs DoubleRegs:$dst), (ins DoubleRegs:$src1, DoubleRegs:$src2), !strconcat("$dst = ", !strconcat(opc , "($src1, $src2)")), [(set DoubleRegs:$dst, (IntID DoubleRegs:$src1, DoubleRegs:$src2))]>; class qi_ALU64_dfdf<string opc, Intrinsic IntID> : ALU64_rr<(outs PredRegs:$dst), (ins DoubleRegs:$src1, DoubleRegs:$src2), !strconcat("$dst = ", !strconcat(opc , "($src1, $src2)")), [(set PredRegs:$dst, (IntID DoubleRegs:$src1, DoubleRegs:$src2))]>; class qi_ALU64_dfu5<string opc, Intrinsic IntID> : ALU64_ri<(outs PredRegs:$dst), (ins DoubleRegs:$src1, u5Imm:$src2), !strconcat("$dst = ", !strconcat(opc , "($src1, #$src2)")), [(set PredRegs:$dst, (IntID DoubleRegs:$src1, imm:$src2))]>; class sf_MInst_sfsfsf_acc<string opc, Intrinsic IntID> : MInst_acc<(outs IntRegs:$dst), (ins IntRegs:$src1, IntRegs:$src2, IntRegs:$dst2), !strconcat("$dst += ", !strconcat(opc , "($src1, $src2)")), [(set IntRegs:$dst, (IntID IntRegs:$src1, IntRegs:$src2, IntRegs:$dst2))], "$dst2 = $dst">; class sf_MInst_sfsfsf_nac<string opc, Intrinsic IntID> : MInst_acc<(outs IntRegs:$dst), (ins IntRegs:$src1, IntRegs:$src2, IntRegs:$dst2), !strconcat("$dst -= ", !strconcat(opc , "($src1, $src2)")), [(set IntRegs:$dst, (IntID IntRegs:$src1, IntRegs:$src2, IntRegs:$dst2))], "$dst2 = $dst">; class sf_MInst_sfsfsfsi_sc<string opc, Intrinsic IntID> : MInst_acc<(outs IntRegs:$dst), (ins IntRegs:$dst2, IntRegs:$src1, IntRegs:$src2, IntRegs:$src3), !strconcat("$dst += ", !strconcat(opc , "($src1, $src2, $src3):scale")), [(set IntRegs:$dst, (IntID IntRegs:$dst2, IntRegs:$src1, IntRegs:$src2, IntRegs:$src3))], "$dst2 = $dst">; class sf_MInst_sfsfsf_acc_lib<string opc, Intrinsic IntID> : MInst_acc<(outs IntRegs:$dst), (ins IntRegs:$src1, IntRegs:$src2, IntRegs:$dst2), !strconcat("$dst += ", !strconcat(opc , "($src1, $src2):lib")), [(set IntRegs:$dst, (IntID IntRegs:$src1, IntRegs:$src2, IntRegs:$dst2))], "$dst2 = $dst">; class sf_MInst_sfsfsf_nac_lib<string opc, Intrinsic IntID> : MInst_acc<(outs IntRegs:$dst), (ins IntRegs:$src1, IntRegs:$src2, IntRegs:$dst2), !strconcat("$dst -= ", !strconcat(opc , "($src1, $src2):lib")), [(set IntRegs:$dst, (IntID IntRegs:$src1, IntRegs:$src2, IntRegs:$dst2))], "$dst2 = $dst">; class df_MInst_dfdfdf_acc<string opc, Intrinsic IntID> : MInst_acc<(outs DoubleRegs:$dst), (ins DoubleRegs:$src1, DoubleRegs:$src2, DoubleRegs:$dst2), !strconcat("$dst += ", !strconcat(opc , "($src1, $src2)")), [(set DoubleRegs:$dst, (IntID DoubleRegs:$src1, DoubleRegs:$src2, DoubleRegs:$dst2))], "$dst2 = $dst">; class df_MInst_dfdfdf_nac<string opc, Intrinsic IntID> : MInst_acc<(outs DoubleRegs:$dst), (ins DoubleRegs:$src1, DoubleRegs:$src2, DoubleRegs:$dst2), !strconcat("$dst -= ", !strconcat(opc , "($src1, $src2)")), [(set DoubleRegs:$dst, (IntID DoubleRegs:$src1, DoubleRegs:$src2, DoubleRegs:$dst2))], "$dst2 = $dst">; class df_MInst_dfdfdfsi_sc<string opc, Intrinsic IntID> : MInst_acc<(outs DoubleRegs:$dst), (ins DoubleRegs:$dst2, DoubleRegs:$src1, DoubleRegs:$src2, IntRegs:$src3), !strconcat("$dst += ", !strconcat(opc , "($src1, $src2, $src3):scale")), [(set DoubleRegs:$dst, (IntID DoubleRegs:$dst2, DoubleRegs:$src1, DoubleRegs:$src2, IntRegs:$src3))], "$dst2 = $dst">; class df_MInst_dfdfdf_acc_lib<string opc, Intrinsic IntID> : MInst_acc<(outs DoubleRegs:$dst), (ins DoubleRegs:$src1, DoubleRegs:$src2, DoubleRegs:$dst2), !strconcat("$dst += ", !strconcat(opc , "($src1, $src2):lib")), [(set DoubleRegs:$dst, (IntID DoubleRegs:$src1, DoubleRegs:$src2, DoubleRegs:$dst2))], "$dst2 = $dst">; class df_MInst_dfdfdf_nac_lib<string opc, Intrinsic IntID> : MInst_acc<(outs DoubleRegs:$dst), (ins DoubleRegs:$src1, DoubleRegs:$src2, DoubleRegs:$dst2), !strconcat("$dst -= ", !strconcat(opc , "($src1, $src2):lib")), [(set DoubleRegs:$dst, (IntID DoubleRegs:$src1, DoubleRegs:$src2, DoubleRegs:$dst2))], "$dst2 = $dst">; class qi_SInst_sfsf<string opc, Intrinsic IntID> : SInst<(outs PredRegs:$dst), (ins IntRegs:$src1, IntRegs:$src2), !strconcat("$dst = ", !strconcat(opc , "($src1, $src2)")), [(set PredRegs:$dst, (IntID IntRegs:$src1, IntRegs:$src2))]>; class qi_SInst_sfu5<string opc, Intrinsic IntID> : MInst<(outs PredRegs:$dst), (ins IntRegs:$src1, u5Imm:$src2), !strconcat("$dst = ", !strconcat(opc , "($src1, #$src2)")), [(set PredRegs:$dst, (IntID IntRegs:$src1, imm:$src2))]>; class sf_ALU64_u10_pos<string opc, Intrinsic IntID> : ALU64_ri<(outs IntRegs:$dst), (ins u10Imm:$src1), !strconcat("$dst = ", !strconcat(opc , "#$src1):pos")), [(set IntRegs:$dst, (IntID imm:$src1))]>; class sf_ALU64_u10_neg<string opc, Intrinsic IntID> : ALU64_ri<(outs IntRegs:$dst), (ins u10Imm:$src1), !strconcat("$dst = ", !strconcat(opc , "#$src1):neg")), [(set IntRegs:$dst, (IntID imm:$src1))]>; class df_ALU64_u10_pos<string opc, Intrinsic IntID> : ALU64_ri<(outs DoubleRegs:$dst), (ins u10Imm:$src1), !strconcat("$dst = ", !strconcat(opc , "#$src1):pos")), [(set DoubleRegs:$dst, (IntID imm:$src1))]>; class df_ALU64_u10_neg<string opc, Intrinsic IntID> : ALU64_ri<(outs DoubleRegs:$dst), (ins u10Imm:$src1), !strconcat("$dst = ", !strconcat(opc , "#$src1):neg")), [(set DoubleRegs:$dst, (IntID imm:$src1))]>; class di_MInst_diu6<string opc, Intrinsic IntID> : MInst<(outs DoubleRegs:$dst), (ins DoubleRegs:$src1, u6Imm:$src2), !strconcat("$dst = ", !strconcat(opc , "($src1, #$src2)")), [(set DoubleRegs:$dst, (IntID DoubleRegs:$src1, imm:$src2))]>; class di_MInst_diu4_rnd<string opc, Intrinsic IntID> : MInst<(outs DoubleRegs:$dst), (ins DoubleRegs:$src1, u4Imm:$src2), !strconcat("$dst = ", !strconcat(opc , "($src1, #$src2):rnd")), [(set DoubleRegs:$dst, (IntID DoubleRegs:$src1, imm:$src2))]>; class si_MInst_diu4_rnd_sat<string opc, Intrinsic IntID> : MInst<(outs IntRegs:$dst), (ins DoubleRegs:$src1, u4Imm:$src2), !strconcat("$dst = ", !strconcat(opc , "($src1, #$src2):rnd:sat")), [(set IntRegs:$dst, (IntID DoubleRegs:$src1, imm:$src2))]>; class si_SInst_diu4_sat<string opc, Intrinsic IntID> : SInst<(outs IntRegs:$dst), (ins DoubleRegs:$src1, u4Imm:$src2), !strconcat("$dst = ", !strconcat(opc , "($src1, #$src2):sat")), [(set IntRegs:$dst, (IntID DoubleRegs:$src1, imm:$src2))]>; def HEXAGON_C4_fastcorner9: qi_SInst_qiqi <"fastcorner9", int_hexagon_C4_fastcorner9>; def HEXAGON_C4_fastcorner9_not: qi_SInst_qiqi <"!fastcorner9", int_hexagon_C4_fastcorner9_not>; def HEXAGON_M5_vrmpybuu: di_MInst_didi <"vrmpybu", int_hexagon_M5_vrmpybuu>; def HEXAGON_M5_vrmacbuu: di_MInst_dididi_acc <"vrmpybu", int_hexagon_M5_vrmacbuu>; def HEXAGON_M5_vrmpybsu: di_MInst_didi <"vrmpybsu", int_hexagon_M5_vrmpybsu>; def HEXAGON_M5_vrmacbsu: di_MInst_dididi_acc <"vrmpybsu", int_hexagon_M5_vrmacbsu>; def HEXAGON_M5_vmpybuu: di_MInst_sisi <"vmpybu", int_hexagon_M5_vmpybuu>; def HEXAGON_M5_vmpybsu: di_MInst_sisi <"vmpybsu", int_hexagon_M5_vmpybsu>; def HEXAGON_M5_vmacbuu: di_MInst_disisi_acc <"vmpybu", int_hexagon_M5_vmacbuu>; def HEXAGON_M5_vmacbsu: di_MInst_disisi_acc <"vmpybsu", int_hexagon_M5_vmacbsu>; def HEXAGON_M5_vdmpybsu: di_MInst_didi_sat <"vdmpybsu", int_hexagon_M5_vdmpybsu>; def HEXAGON_M5_vdmacbsu: di_MInst_dididi_acc_sat <"vdmpybsu", int_hexagon_M5_vdmacbsu>; def HEXAGON_A5_vaddhubs: si_SInst_didi_sat <"vaddhub", int_hexagon_A5_vaddhubs>; def HEXAGON_S5_popcountp: si_SInst_di <"popcount", int_hexagon_S5_popcountp>; def HEXAGON_S5_asrhub_rnd_sat_goodsyntax: si_MInst_diu4_rnd_sat <"vasrhub", int_hexagon_S5_asrhub_rnd_sat_goodsyntax>; def HEXAGON_S5_asrhub_sat: si_SInst_diu4_sat <"vasrhub", int_hexagon_S5_asrhub_sat>; def HEXAGON_S5_vasrhrnd_goodsyntax: di_MInst_diu4_rnd <"vasrh", int_hexagon_S5_vasrhrnd_goodsyntax>; def HEXAGON_S2_asr_i_p_rnd: di_SInst_diu6 <"asr", int_hexagon_S2_asr_i_p_rnd>; def HEXAGON_S2_asr_i_p_rnd_goodsyntax: di_MInst_diu6 <"asrrnd", int_hexagon_S2_asr_i_p_rnd_goodsyntax>; def HEXAGON_F2_sfadd: sf_MInst_sfsf <"sfadd", int_hexagon_F2_sfadd>; def HEXAGON_F2_sfsub: sf_MInst_sfsf <"sfsub", int_hexagon_F2_sfsub>; def HEXAGON_F2_sfmpy: sf_MInst_sfsf <"sfmpy", int_hexagon_F2_sfmpy>; def HEXAGON_F2_sffma: sf_MInst_sfsfsf_acc <"sfmpy", int_hexagon_F2_sffma>; def HEXAGON_F2_sffma_sc: sf_MInst_sfsfsfsi_sc <"sfmpy", int_hexagon_F2_sffma_sc>; def HEXAGON_F2_sffms: sf_MInst_sfsfsf_nac <"sfmpy", int_hexagon_F2_sffms>; def HEXAGON_F2_sffma_lib: sf_MInst_sfsfsf_acc_lib <"sfmpy", int_hexagon_F2_sffma_lib>; def HEXAGON_F2_sffms_lib: sf_MInst_sfsfsf_nac_lib <"sfmpy", int_hexagon_F2_sffms_lib>; def HEXAGON_F2_sfcmpeq: qi_SInst_sfsf <"sfcmp.eq", int_hexagon_F2_sfcmpeq>; def HEXAGON_F2_sfcmpgt: qi_SInst_sfsf <"sfcmp.gt", int_hexagon_F2_sfcmpgt>; def HEXAGON_F2_sfcmpge: qi_SInst_sfsf <"sfcmp.ge", int_hexagon_F2_sfcmpge>; def HEXAGON_F2_sfcmpuo: qi_SInst_sfsf <"sfcmp.uo", int_hexagon_F2_sfcmpuo>; def HEXAGON_F2_sfmax: sf_MInst_sfsf <"sfmax", int_hexagon_F2_sfmax>; def HEXAGON_F2_sfmin: sf_MInst_sfsf <"sfmin", int_hexagon_F2_sfmin>; def HEXAGON_F2_sfclass: qi_SInst_sfu5 <"sfclass", int_hexagon_F2_sfclass>; def HEXAGON_F2_sfimm_p: sf_ALU64_u10_pos <"sfmake", int_hexagon_F2_sfimm_p>; def HEXAGON_F2_sfimm_n: sf_ALU64_u10_neg <"sfmake", int_hexagon_F2_sfimm_n>; def HEXAGON_F2_sffixupn: sf_MInst_sfsf <"sffixupn", int_hexagon_F2_sffixupn>; def HEXAGON_F2_sffixupd: sf_MInst_sfsf <"sffixupd", int_hexagon_F2_sffixupd>; def HEXAGON_F2_sffixupr: sf_SInst_sf <"sffixupr", int_hexagon_F2_sffixupr>; def HEXAGON_F2_dfadd: df_MInst_dfdf <"dfadd", int_hexagon_F2_dfadd>; def HEXAGON_F2_dfsub: df_MInst_dfdf <"dfsub", int_hexagon_F2_dfsub>; def HEXAGON_F2_dfmpy: df_MInst_dfdf <"dfmpy", int_hexagon_F2_dfmpy>; def HEXAGON_F2_dffma: df_MInst_dfdfdf_acc <"dfmpy", int_hexagon_F2_dffma>; def HEXAGON_F2_dffms: df_MInst_dfdfdf_nac <"dfmpy", int_hexagon_F2_dffms>; def HEXAGON_F2_dffma_lib: df_MInst_dfdfdf_acc_lib <"dfmpy", int_hexagon_F2_dffma_lib>; def HEXAGON_F2_dffms_lib: df_MInst_dfdfdf_nac_lib <"dfmpy", int_hexagon_F2_dffms_lib>; def HEXAGON_F2_dffma_sc: df_MInst_dfdfdfsi_sc <"dfmpy", int_hexagon_F2_dffma_sc>; def HEXAGON_F2_dfmax: df_MInst_dfdf <"dfmax", int_hexagon_F2_dfmax>; def HEXAGON_F2_dfmin: df_MInst_dfdf <"dfmin", int_hexagon_F2_dfmin>; def HEXAGON_F2_dfcmpeq: qi_ALU64_dfdf <"dfcmp.eq", int_hexagon_F2_dfcmpeq>; def HEXAGON_F2_dfcmpgt: qi_ALU64_dfdf <"dfcmp.gt", int_hexagon_F2_dfcmpgt>; def HEXAGON_F2_dfcmpge: qi_ALU64_dfdf <"dfcmp.ge", int_hexagon_F2_dfcmpge>; def HEXAGON_F2_dfcmpuo: qi_ALU64_dfdf <"dfcmp.uo", int_hexagon_F2_dfcmpuo>; def HEXAGON_F2_dfclass: qi_ALU64_dfu5 <"dfclass", int_hexagon_F2_dfclass>; def HEXAGON_F2_dfimm_p: df_ALU64_u10_pos <"dfmake", int_hexagon_F2_dfimm_p>; def HEXAGON_F2_dfimm_n: df_ALU64_u10_neg <"dfmake", int_hexagon_F2_dfimm_n>; def HEXAGON_F2_dffixupn: df_MInst_dfdf <"dffixupn", int_hexagon_F2_dffixupn>; def HEXAGON_F2_dffixupd: df_MInst_dfdf <"dffixupd", int_hexagon_F2_dffixupd>; def HEXAGON_F2_dffixupr: df_SInst_df <"dffixupr", int_hexagon_F2_dffixupr>; def HEXAGON_F2_conv_sf2df: df_SInst_sf <"convert_sf2df", int_hexagon_F2_conv_sf2df>; def HEXAGON_F2_conv_df2sf: sf_SInst_df <"convert_df2sf", int_hexagon_F2_conv_df2sf>; def HEXAGON_F2_conv_uw2sf: sf_SInst_si <"convert_uw2sf", int_hexagon_F2_conv_uw2sf>; def HEXAGON_F2_conv_uw2df: df_SInst_si <"convert_uw2df", int_hexagon_F2_conv_uw2df>; def HEXAGON_F2_conv_w2sf: sf_SInst_si <"convert_w2sf", int_hexagon_F2_conv_w2sf>; def HEXAGON_F2_conv_w2df: df_SInst_si <"convert_w2df", int_hexagon_F2_conv_w2df>; def HEXAGON_F2_conv_ud2sf: sf_SInst_di <"convert_ud2sf", int_hexagon_F2_conv_ud2sf>; def HEXAGON_F2_conv_ud2df: df_SInst_di <"convert_ud2df", int_hexagon_F2_conv_ud2df>; def HEXAGON_F2_conv_d2sf: sf_SInst_di <"convert_d2sf", int_hexagon_F2_conv_d2sf>; def HEXAGON_F2_conv_d2df: df_SInst_di <"convert_d2df", int_hexagon_F2_conv_d2df>; def HEXAGON_F2_conv_sf2uw: si_SInst_sf <"convert_sf2uw", int_hexagon_F2_conv_sf2uw>; def HEXAGON_F2_conv_sf2w: si_SInst_sf <"convert_sf2w", int_hexagon_F2_conv_sf2w>; def HEXAGON_F2_conv_sf2ud: di_SInst_sf <"convert_sf2ud", int_hexagon_F2_conv_sf2ud>; def HEXAGON_F2_conv_sf2d: di_SInst_sf <"convert_sf2d", int_hexagon_F2_conv_sf2d>; def HEXAGON_F2_conv_df2uw: si_SInst_df <"convert_df2uw", int_hexagon_F2_conv_df2uw>; def HEXAGON_F2_conv_df2w: si_SInst_df <"convert_df2w", int_hexagon_F2_conv_df2w>; def HEXAGON_F2_conv_df2ud: di_SInst_df <"convert_df2ud", int_hexagon_F2_conv_df2ud>; def HEXAGON_F2_conv_df2d: di_SInst_df <"convert_df2d", int_hexagon_F2_conv_df2d>; def HEXAGON_F2_conv_sf2uw_chop: si_SInst_sf <"convert_sf2uw", int_hexagon_F2_conv_sf2uw_chop>; def HEXAGON_F2_conv_sf2w_chop: si_SInst_sf <"convert_sf2w", int_hexagon_F2_conv_sf2w_chop>; def HEXAGON_F2_conv_sf2ud_chop: di_SInst_sf <"convert_sf2ud", int_hexagon_F2_conv_sf2ud_chop>; def HEXAGON_F2_conv_sf2d_chop: di_SInst_sf <"convert_sf2d", int_hexagon_F2_conv_sf2d_chop>; def HEXAGON_F2_conv_df2uw_chop: si_SInst_df <"convert_df2uw", int_hexagon_F2_conv_df2uw_chop>; def HEXAGON_F2_conv_df2w_chop: si_SInst_df <"convert_df2w", int_hexagon_F2_conv_df2w_chop>; def HEXAGON_F2_conv_df2ud_chop: di_SInst_df <"convert_df2ud", int_hexagon_F2_conv_df2ud_chop>; def HEXAGON_F2_conv_df2d_chop: di_SInst_df <"convert_df2d", int_hexagon_F2_conv_df2d_chop>;