//===--- HexagonMapAsm2IntrinV62.gen.td -----------------------------------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// multiclass T_VR_HVX_gen_pat { def: Pat<(IntID VectorRegs:$src1, IntRegs:$src2), (MI VectorRegs:$src1, IntRegs:$src2)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VectorRegs128B:$src1, IntRegs:$src2), (!cast(MI#"_128B") VectorRegs128B:$src1, IntRegs:$src2)>, Requires<[UseHVXDbl]>; } multiclass T_VVL_HVX_gen_pat { def: Pat<(IntID VectorRegs:$src1, VectorRegs:$src2, IntRegsLow8:$src3), (MI VectorRegs:$src1, VectorRegs:$src2, IntRegsLow8:$src3)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2, IntRegsLow8:$src3), (!cast(MI#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2, IntRegsLow8:$src3)>, Requires<[UseHVXDbl]>; } multiclass T_VV_HVX_gen_pat { def: Pat<(IntID VectorRegs:$src1, VectorRegs:$src2), (MI VectorRegs:$src1, VectorRegs:$src2)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2), (!cast(MI#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2)>, Requires<[UseHVXDbl]>; } multiclass T_WW_HVX_gen_pat { def: Pat<(IntID VecDblRegs:$src1, VecDblRegs:$src2), (MI VecDblRegs:$src1, VecDblRegs:$src2)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecDblRegs128B:$src1, VecDblRegs128B:$src2), (!cast(MI#"_128B") VecDblRegs128B:$src1, VecDblRegs128B:$src2)>, Requires<[UseHVXDbl]>; } multiclass T_WVV_HVX_gen_pat { def: Pat<(IntID VecDblRegs:$src1, VectorRegs:$src2, VectorRegs:$src3), (MI VecDblRegs:$src1, VectorRegs:$src2, VectorRegs:$src3)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecDblRegs128B:$src1, VectorRegs128B:$src2, VectorRegs128B:$src3), (!cast(MI#"_128B") VecDblRegs128B:$src1, VectorRegs128B:$src2, VectorRegs128B:$src3)>, Requires<[UseHVXDbl]>; } multiclass T_WR_HVX_gen_pat { def: Pat<(IntID VecDblRegs:$src1, IntRegs:$src2), (MI VecDblRegs:$src1, IntRegs:$src2)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecDblRegs128B:$src1, IntRegs:$src2), (!cast(MI#"_128B") VecDblRegs128B:$src1, IntRegs:$src2)>, Requires<[UseHVXDbl]>; } multiclass T_WWR_HVX_gen_pat { def: Pat<(IntID VecDblRegs:$src1, VecDblRegs:$src2, IntRegs:$src3), (MI VecDblRegs:$src1, VecDblRegs:$src2, IntRegs:$src3)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecDblRegs128B:$src1, VecDblRegs128B:$src2, IntRegs:$src3), (!cast(MI#"_128B") VecDblRegs128B:$src1, VecDblRegs128B:$src2, IntRegs:$src3)>, Requires<[UseHVXDbl]>; } multiclass T_VVR_HVX_gen_pat { def: Pat<(IntID VectorRegs:$src1, VectorRegs:$src2, IntRegs:$src3), (MI VectorRegs:$src1, VectorRegs:$src2, IntRegs:$src3)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2, IntRegs:$src3), (!cast(MI#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2, IntRegs:$src3)>, Requires<[UseHVXDbl]>; } multiclass T_ZR_HVX_gen_pat { def: Pat<(IntID VecPredRegs:$src1, IntRegs:$src2), (MI VecPredRegs:$src1, IntRegs:$src2)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecPredRegs128B:$src1, IntRegs:$src2), (!cast(MI#"_128B") VecPredRegs128B:$src1, IntRegs:$src2)>, Requires<[UseHVXDbl]>; } multiclass T_VZR_HVX_gen_pat { def: Pat<(IntID VectorRegs:$src1, VecPredRegs:$src2, IntRegs:$src3), (MI VectorRegs:$src1, VecPredRegs:$src2, IntRegs:$src3)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VectorRegs128B:$src1, VecPredRegs128B:$src2, IntRegs:$src3), (!cast(MI#"_128B") VectorRegs128B:$src1, VecPredRegs128B:$src2, IntRegs:$src3)>, Requires<[UseHVXDbl]>; } multiclass T_ZV_HVX_gen_pat { def: Pat<(IntID VecPredRegs:$src1, VectorRegs:$src2), (MI VecPredRegs:$src1, VectorRegs:$src2)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecPredRegs128B:$src1, VectorRegs128B:$src2), (!cast(MI#"_128B") VecPredRegs128B:$src1, VectorRegs128B:$src2)>, Requires<[UseHVXDbl]>; } multiclass T_R_HVX_gen_pat { def: Pat<(IntID IntRegs:$src1), (MI IntRegs:$src1)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") IntRegs:$src1), (!cast(MI#"_128B") IntRegs:$src1)>, Requires<[UseHVXDbl]>; } multiclass T_ZZ_HVX_gen_pat { def: Pat<(IntID VecPredRegs:$src1, VecPredRegs:$src2), (MI VecPredRegs:$src1, VecPredRegs:$src2)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecPredRegs128B:$src1, VecPredRegs128B:$src2), (!cast(MI#"_128B") VecPredRegs128B:$src1, VecPredRegs128B:$src2)>, Requires<[UseHVXDbl]>; } multiclass T_VVI_HVX_gen_pat { def: Pat<(IntID VectorRegs:$src1, VectorRegs:$src2, imm:$src3), (MI VectorRegs:$src1, VectorRegs:$src2, imm:$src3)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2, imm:$src3), (!cast(MI#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2, imm:$src3)>, Requires<[UseHVXDbl]>; } multiclass T_VVVI_HVX_gen_pat { def: Pat<(IntID VectorRegs:$src1, VectorRegs:$src2, VectorRegs:$src3, imm:$src4), (MI VectorRegs:$src1, VectorRegs:$src2, VectorRegs:$src3, imm:$src4)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2, VectorRegs128B:$src3, imm:$src4), (!cast(MI#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2, VectorRegs128B:$src3, imm:$src4)>, Requires<[UseHVXDbl]>; } multiclass T_WVVI_HVX_gen_pat { def: Pat<(IntID VecDblRegs:$src1, VectorRegs:$src2, VectorRegs:$src3, imm:$src4), (MI VecDblRegs:$src1, VectorRegs:$src2, VectorRegs:$src3, imm:$src4)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecDblRegs128B:$src1, VectorRegs128B:$src2, VectorRegs128B:$src3, imm:$src4), (!cast(MI#"_128B") VecDblRegs128B:$src1, VectorRegs128B:$src2, VectorRegs128B:$src3, imm:$src4)>, Requires<[UseHVXDbl]>; } def : T_R_pat ; def : T_PP_pat ; def : T_PP_pat ; def : T_PP_pat ; def : T_PP_pat ; defm : T_VR_HVX_gen_pat ; defm : T_VR_HVX_gen_pat ; defm : T_VVL_HVX_gen_pat ; defm : T_VVL_HVX_gen_pat ; defm : T_VVL_HVX_gen_pat ; defm : T_VVL_HVX_gen_pat ; defm : T_VVL_HVX_gen_pat ; defm : T_VV_HVX_gen_pat ; defm : T_VV_HVX_gen_pat ; defm : T_VV_HVX_gen_pat ; defm : T_VV_HVX_gen_pat ; defm : T_VV_HVX_gen_pat ; defm : T_VV_HVX_gen_pat ; defm : T_VV_HVX_gen_pat ; defm : T_VV_HVX_gen_pat ; defm : T_VV_HVX_gen_pat ; defm : T_VV_HVX_gen_pat ; defm : T_VV_HVX_gen_pat ; defm : T_VV_HVX_gen_pat ; defm : T_VV_HVX_gen_pat ; defm : T_VV_HVX_gen_pat ; defm : T_WW_HVX_gen_pat ; defm : T_WW_HVX_gen_pat ; defm : T_WW_HVX_gen_pat ; defm : T_WW_HVX_gen_pat ; defm : T_WVV_HVX_gen_pat ; defm : T_WVV_HVX_gen_pat ; defm : T_WVV_HVX_gen_pat ; defm : T_WVV_HVX_gen_pat ; defm : T_WR_HVX_gen_pat ; defm : T_WWR_HVX_gen_pat ; defm : T_VVR_HVX_gen_pat ; defm : T_ZR_HVX_gen_pat ; defm : T_VZR_HVX_gen_pat ; defm : T_ZV_HVX_gen_pat ; defm : T_ZV_HVX_gen_pat ; defm : T_R_HVX_gen_pat ; defm : T_R_HVX_gen_pat ; defm : T_R_HVX_gen_pat ; defm : T_ZZ_HVX_gen_pat ; defm : T_ZZ_HVX_gen_pat ; defm : T_VVI_HVX_gen_pat ; defm : T_VVI_HVX_gen_pat ; defm : T_VVVI_HVX_gen_pat ; defm : T_WVVI_HVX_gen_pat ;