//===- HexagonIntrinsicsV5.td - V4 Instruction intrinsics --*- tablegen -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// def : T_FF_pat; def : T_FF_pat; def : T_FF_pat; def : T_FF_pat; def : T_FF_pat; def : T_FF_pat; def : T_FF_pat; def : T_F_pat ; def: qi_CRInst_qiqi_pat; def: qi_CRInst_qiqi_pat; def : T_P_pat ; def : T_PI_pat ; def : T_PI_pat ; def : T_PI_pat ; def : T_PI_pat ; def : T_FFF_pat ; def : T_FFF_pat ; def : T_FFF_pat ; def : T_FFF_pat ; def : T_FFFQ_pat ; // Compare floating-point value def : T_FF_pat ; def : T_FF_pat ; def : T_FF_pat ; def : T_FF_pat ; def : T_DD_pat ; def : T_DD_pat ; def : T_DD_pat ; def : T_DD_pat ; // Create floating-point value def : T_I_pat ; def : T_I_pat ; def : T_I_pat ; def : T_I_pat ; def : T_DI_pat ; def : T_FI_pat ; def : T_F_pat ; def : T_D_pat ; def : T_R_pat ; def : T_R_pat ; def : T_R_pat ; def : T_R_pat ; def : T_P_pat ; def : T_P_pat ; def : T_P_pat ; def : T_P_pat ; def : T_F_pat ; def : T_F_pat ; def : T_F_pat ; def : T_F_pat ; def : T_D_pat ; def : T_D_pat ; def : T_D_pat ; def : T_D_pat ; def : T_F_pat ; def : T_F_pat ; def : T_F_pat ; def : T_F_pat ; def : T_D_pat ; def : T_D_pat ; def : T_D_pat ; def : T_D_pat ; class qi_ALU64_dfdf : 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 : 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 qi_SInst_sfsf : 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 : MInst<(outs PredRegs:$dst), (ins IntRegs:$src1, u5Imm:$src2), !strconcat("$dst = ", !strconcat(opc , "($src1, #$src2)")), [(set PredRegs:$dst, (IntID IntRegs:$src1, imm:$src2))]>; class di_MInst_diu4_rnd : MInst<(outs DoubleRegs:$dst), (ins DoubleRegs:$src1, u4Imm:$src2), !strconcat("$dst = ", !strconcat(opc , "($src1, #$src2):rnd")), [(set DoubleRegs:$dst, (IntID DoubleRegs:$src1, imm:$src2))]>; 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_vasrhrnd_goodsyntax: di_MInst_diu4_rnd <"vasrh", int_hexagon_S5_vasrhrnd_goodsyntax>;