1f9015e62SKrzysztof Parzyszek//===--- HexagonMapAsm2IntrinV62.gen.td -----------------------------------===// 2f9015e62SKrzysztof Parzyszek// 3*2946cd70SChandler Carruth// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*2946cd70SChandler Carruth// See https://llvm.org/LICENSE.txt for license information. 5*2946cd70SChandler Carruth// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6f9015e62SKrzysztof Parzyszek// 7f9015e62SKrzysztof Parzyszek//===----------------------------------------------------------------------===// 8f9015e62SKrzysztof Parzyszek 9f9015e62SKrzysztof Parzyszekmulticlass T_VR_HVX_gen_pat <InstHexagon MI, Intrinsic IntID> { 1055772976SKrzysztof Parzyszek def: Pat<(IntID HvxVR:$src1, IntRegs:$src2), 1155772976SKrzysztof Parzyszek (MI HvxVR:$src1, IntRegs:$src2)>; 1255772976SKrzysztof Parzyszek def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxVR:$src1, IntRegs:$src2), 1355772976SKrzysztof Parzyszek (MI HvxVR:$src1, IntRegs:$src2)>; 14f9015e62SKrzysztof Parzyszek} 15f9015e62SKrzysztof Parzyszek 16f9015e62SKrzysztof Parzyszekmulticlass T_VVL_HVX_gen_pat <InstHexagon MI, Intrinsic IntID> { 1755772976SKrzysztof Parzyszek def: Pat<(IntID HvxVR:$src1, HvxVR:$src2, IntRegsLow8:$src3), 1855772976SKrzysztof Parzyszek (MI HvxVR:$src1, HvxVR:$src2, IntRegsLow8:$src3)>; 1955772976SKrzysztof Parzyszek def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxVR:$src1, HvxVR:$src2, 2055772976SKrzysztof Parzyszek IntRegsLow8:$src3), 2155772976SKrzysztof Parzyszek (MI HvxVR:$src1, HvxVR:$src2, IntRegsLow8:$src3)>; 22f9015e62SKrzysztof Parzyszek} 23f9015e62SKrzysztof Parzyszek 24f9015e62SKrzysztof Parzyszekmulticlass T_VV_HVX_gen_pat <InstHexagon MI, Intrinsic IntID> { 2555772976SKrzysztof Parzyszek def: Pat<(IntID HvxVR:$src1, HvxVR:$src2), 2655772976SKrzysztof Parzyszek (MI HvxVR:$src1, HvxVR:$src2)>; 2755772976SKrzysztof Parzyszek def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxVR:$src1, HvxVR:$src2), 2855772976SKrzysztof Parzyszek (MI HvxVR:$src1, HvxVR:$src2)>; 29f9015e62SKrzysztof Parzyszek} 30f9015e62SKrzysztof Parzyszek 31f9015e62SKrzysztof Parzyszekmulticlass T_WW_HVX_gen_pat <InstHexagon MI, Intrinsic IntID> { 3255772976SKrzysztof Parzyszek def: Pat<(IntID HvxWR:$src1, HvxWR:$src2), 3355772976SKrzysztof Parzyszek (MI HvxWR:$src1, HvxWR:$src2)>; 3455772976SKrzysztof Parzyszek def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxWR:$src1, HvxWR:$src2), 3555772976SKrzysztof Parzyszek (MI HvxWR:$src1, HvxWR:$src2)>; 36f9015e62SKrzysztof Parzyszek} 37f9015e62SKrzysztof Parzyszek 38f9015e62SKrzysztof Parzyszekmulticlass T_WVV_HVX_gen_pat <InstHexagon MI, Intrinsic IntID> { 3955772976SKrzysztof Parzyszek def: Pat<(IntID HvxWR:$src1, HvxVR:$src2, HvxVR:$src3), 4055772976SKrzysztof Parzyszek (MI HvxWR:$src1, HvxVR:$src2, HvxVR:$src3)>; 4155772976SKrzysztof Parzyszek def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxWR:$src1, HvxVR:$src2, 4255772976SKrzysztof Parzyszek HvxVR:$src3), 4355772976SKrzysztof Parzyszek (MI HvxWR:$src1, HvxVR:$src2, HvxVR:$src3)>; 44f9015e62SKrzysztof Parzyszek} 45f9015e62SKrzysztof Parzyszek 46f9015e62SKrzysztof Parzyszekmulticlass T_WR_HVX_gen_pat <InstHexagon MI, Intrinsic IntID> { 4755772976SKrzysztof Parzyszek def: Pat<(IntID HvxWR:$src1, IntRegs:$src2), 4855772976SKrzysztof Parzyszek (MI HvxWR:$src1, IntRegs:$src2)>; 4955772976SKrzysztof Parzyszek def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxWR:$src1, IntRegs:$src2), 5055772976SKrzysztof Parzyszek (MI HvxWR:$src1, IntRegs:$src2)>; 51f9015e62SKrzysztof Parzyszek} 52f9015e62SKrzysztof Parzyszek 53f9015e62SKrzysztof Parzyszekmulticlass T_WWR_HVX_gen_pat <InstHexagon MI, Intrinsic IntID> { 5455772976SKrzysztof Parzyszek def: Pat<(IntID HvxWR:$src1, HvxWR:$src2, IntRegs:$src3), 5555772976SKrzysztof Parzyszek (MI HvxWR:$src1, HvxWR:$src2, IntRegs:$src3)>; 5655772976SKrzysztof Parzyszek def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxWR:$src1, HvxWR:$src2, 5755772976SKrzysztof Parzyszek IntRegs:$src3), 5855772976SKrzysztof Parzyszek (MI HvxWR:$src1, HvxWR:$src2, IntRegs:$src3)>; 59f9015e62SKrzysztof Parzyszek} 60f9015e62SKrzysztof Parzyszek 61f9015e62SKrzysztof Parzyszekmulticlass T_VVR_HVX_gen_pat <InstHexagon MI, Intrinsic IntID> { 6255772976SKrzysztof Parzyszek def: Pat<(IntID HvxVR:$src1, HvxVR:$src2, IntRegs:$src3), 6355772976SKrzysztof Parzyszek (MI HvxVR:$src1, HvxVR:$src2, IntRegs:$src3)>; 6455772976SKrzysztof Parzyszek def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxVR:$src1, HvxVR:$src2, 6555772976SKrzysztof Parzyszek IntRegs:$src3), 6655772976SKrzysztof Parzyszek (MI HvxVR:$src1, HvxVR:$src2, IntRegs:$src3)>; 67f9015e62SKrzysztof Parzyszek} 68f9015e62SKrzysztof Parzyszek 69f9015e62SKrzysztof Parzyszekmulticlass T_ZR_HVX_gen_pat <InstHexagon MI, Intrinsic IntID> { 7055772976SKrzysztof Parzyszek def: Pat<(IntID HvxQR:$src1, IntRegs:$src2), 7155772976SKrzysztof Parzyszek (MI HvxQR:$src1, IntRegs:$src2)>; 7255772976SKrzysztof Parzyszek def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxQR:$src1, IntRegs:$src2), 7355772976SKrzysztof Parzyszek (MI HvxQR:$src1, IntRegs:$src2)>; 74f9015e62SKrzysztof Parzyszek} 75f9015e62SKrzysztof Parzyszek 76f9015e62SKrzysztof Parzyszekmulticlass T_VZR_HVX_gen_pat <InstHexagon MI, Intrinsic IntID> { 7755772976SKrzysztof Parzyszek def: Pat<(IntID HvxVR:$src1, HvxQR:$src2, IntRegs:$src3), 7855772976SKrzysztof Parzyszek (MI HvxVR:$src1, HvxQR:$src2, IntRegs:$src3)>; 7955772976SKrzysztof Parzyszek def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxVR:$src1, HvxQR:$src2, 8055772976SKrzysztof Parzyszek IntRegs:$src3), 8155772976SKrzysztof Parzyszek (MI HvxVR:$src1, HvxQR:$src2, IntRegs:$src3)>; 82f9015e62SKrzysztof Parzyszek} 83f9015e62SKrzysztof Parzyszek 84f9015e62SKrzysztof Parzyszekmulticlass T_ZV_HVX_gen_pat <InstHexagon MI, Intrinsic IntID> { 8555772976SKrzysztof Parzyszek def: Pat<(IntID HvxQR:$src1, HvxVR:$src2), 8655772976SKrzysztof Parzyszek (MI HvxQR:$src1, HvxVR:$src2)>; 8755772976SKrzysztof Parzyszek def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxQR:$src1, HvxVR:$src2), 8855772976SKrzysztof Parzyszek (MI HvxQR:$src1, HvxVR:$src2)>; 89f9015e62SKrzysztof Parzyszek} 90f9015e62SKrzysztof Parzyszek 91f9015e62SKrzysztof Parzyszekmulticlass T_R_HVX_gen_pat <InstHexagon MI, Intrinsic IntID> { 92f9015e62SKrzysztof Parzyszek def: Pat<(IntID IntRegs:$src1), 9355772976SKrzysztof Parzyszek (MI IntRegs:$src1)>; 94f9015e62SKrzysztof Parzyszek def: Pat<(!cast<Intrinsic>(IntID#"_128B") IntRegs:$src1), 9555772976SKrzysztof Parzyszek (MI IntRegs:$src1)>; 96f9015e62SKrzysztof Parzyszek} 97f9015e62SKrzysztof Parzyszek 98f9015e62SKrzysztof Parzyszekmulticlass T_ZZ_HVX_gen_pat <InstHexagon MI, Intrinsic IntID> { 9955772976SKrzysztof Parzyszek def: Pat<(IntID HvxQR:$src1, HvxQR:$src2), 10055772976SKrzysztof Parzyszek (MI HvxQR:$src1, HvxQR:$src2)>; 10155772976SKrzysztof Parzyszek def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxQR:$src1, HvxQR:$src2), 10255772976SKrzysztof Parzyszek (MI HvxQR:$src1, HvxQR:$src2)>; 103f9015e62SKrzysztof Parzyszek} 104f9015e62SKrzysztof Parzyszek 105f9015e62SKrzysztof Parzyszekmulticlass T_VVI_HVX_gen_pat <InstHexagon MI, Intrinsic IntID> { 10655772976SKrzysztof Parzyszek def: Pat<(IntID HvxVR:$src1, HvxVR:$src2, imm:$src3), 10755772976SKrzysztof Parzyszek (MI HvxVR:$src1, HvxVR:$src2, imm:$src3)>; 10855772976SKrzysztof Parzyszek def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxVR:$src1, HvxVR:$src2, 10955772976SKrzysztof Parzyszek imm:$src3), 11055772976SKrzysztof Parzyszek (MI HvxVR:$src1, HvxVR:$src2, imm:$src3)>; 111f9015e62SKrzysztof Parzyszek} 112f9015e62SKrzysztof Parzyszek 113f9015e62SKrzysztof Parzyszekmulticlass T_VVVI_HVX_gen_pat <InstHexagon MI, Intrinsic IntID> { 11455772976SKrzysztof Parzyszek def: Pat<(IntID HvxVR:$src1, HvxVR:$src2, HvxVR:$src3, imm:$src4), 11555772976SKrzysztof Parzyszek (MI HvxVR:$src1, HvxVR:$src2, HvxVR:$src3, imm:$src4)>; 11655772976SKrzysztof Parzyszek def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxVR:$src1, HvxVR:$src2, 11755772976SKrzysztof Parzyszek HvxVR:$src3, imm:$src4), 11855772976SKrzysztof Parzyszek (MI HvxVR:$src1, HvxVR:$src2, HvxVR:$src3, imm:$src4)>; 119f9015e62SKrzysztof Parzyszek} 120f9015e62SKrzysztof Parzyszek 121f9015e62SKrzysztof Parzyszekmulticlass T_WVVI_HVX_gen_pat <InstHexagon MI, Intrinsic IntID> { 12255772976SKrzysztof Parzyszek def: Pat<(IntID HvxWR:$src1, HvxVR:$src2, HvxVR:$src3, imm:$src4), 12355772976SKrzysztof Parzyszek (MI HvxWR:$src1, HvxVR:$src2, HvxVR:$src3, imm:$src4)>; 12455772976SKrzysztof Parzyszek def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxWR:$src1, HvxVR:$src2, 12555772976SKrzysztof Parzyszek HvxVR:$src3, imm:$src4), 12655772976SKrzysztof Parzyszek (MI HvxWR:$src1, HvxVR:$src2, HvxVR:$src3, imm:$src4)>; 127f9015e62SKrzysztof Parzyszek} 128f9015e62SKrzysztof Parzyszek 129f9015e62SKrzysztof Parzyszekdef : T_R_pat <S6_vsplatrbp, int_hexagon_S6_vsplatrbp>; 130f9015e62SKrzysztof Parzyszekdef : T_PP_pat <M6_vabsdiffb, int_hexagon_M6_vabsdiffb>; 131f9015e62SKrzysztof Parzyszekdef : T_PP_pat <M6_vabsdiffub, int_hexagon_M6_vabsdiffub>; 132f9015e62SKrzysztof Parzyszekdef : T_PP_pat <S6_vtrunehb_ppp, int_hexagon_S6_vtrunehb_ppp>; 133f9015e62SKrzysztof Parzyszekdef : T_PP_pat <S6_vtrunohb_ppp, int_hexagon_S6_vtrunohb_ppp>; 134f9015e62SKrzysztof Parzyszek 135f9015e62SKrzysztof Parzyszekdefm : T_VR_HVX_gen_pat <V6_vlsrb, int_hexagon_V6_vlsrb>; 136f9015e62SKrzysztof Parzyszekdefm : T_VR_HVX_gen_pat <V6_vmpyiwub, int_hexagon_V6_vmpyiwub>; 137f9015e62SKrzysztof Parzyszekdefm : T_VVL_HVX_gen_pat <V6_vasrwuhrndsat, int_hexagon_V6_vasrwuhrndsat>; 138f9015e62SKrzysztof Parzyszekdefm : T_VVL_HVX_gen_pat <V6_vasruwuhrndsat, int_hexagon_V6_vasruwuhrndsat>; 139f9015e62SKrzysztof Parzyszekdefm : T_VVL_HVX_gen_pat <V6_vasrhbsat, int_hexagon_V6_vasrhbsat>; 140f9015e62SKrzysztof Parzyszekdefm : T_VVL_HVX_gen_pat <V6_vlutvvb_nm, int_hexagon_V6_vlutvvb_nm>; 141f9015e62SKrzysztof Parzyszekdefm : T_VVL_HVX_gen_pat <V6_vlutvwh_nm, int_hexagon_V6_vlutvwh_nm>; 142f9015e62SKrzysztof Parzyszekdefm : T_VV_HVX_gen_pat <V6_vrounduwuh, int_hexagon_V6_vrounduwuh>; 143f9015e62SKrzysztof Parzyszekdefm : T_VV_HVX_gen_pat <V6_vrounduhub, int_hexagon_V6_vrounduhub>; 144f9015e62SKrzysztof Parzyszekdefm : T_VV_HVX_gen_pat <V6_vadduwsat, int_hexagon_V6_vadduwsat>; 145f9015e62SKrzysztof Parzyszekdefm : T_VV_HVX_gen_pat <V6_vsubuwsat, int_hexagon_V6_vsubuwsat>; 146f9015e62SKrzysztof Parzyszekdefm : T_VV_HVX_gen_pat <V6_vaddbsat, int_hexagon_V6_vaddbsat>; 147f9015e62SKrzysztof Parzyszekdefm : T_VV_HVX_gen_pat <V6_vsubbsat, int_hexagon_V6_vsubbsat>; 148f9015e62SKrzysztof Parzyszekdefm : T_VV_HVX_gen_pat <V6_vaddububb_sat, int_hexagon_V6_vaddububb_sat>; 149f9015e62SKrzysztof Parzyszekdefm : T_VV_HVX_gen_pat <V6_vsubububb_sat, int_hexagon_V6_vsubububb_sat>; 150f9015e62SKrzysztof Parzyszekdefm : T_VV_HVX_gen_pat <V6_vmpyewuh_64, int_hexagon_V6_vmpyewuh_64>; 151f9015e62SKrzysztof Parzyszekdefm : T_VV_HVX_gen_pat <V6_vmaxb, int_hexagon_V6_vmaxb>; 152f9015e62SKrzysztof Parzyszekdefm : T_VV_HVX_gen_pat <V6_vminb, int_hexagon_V6_vminb>; 153f9015e62SKrzysztof Parzyszekdefm : T_VV_HVX_gen_pat <V6_vsatuwuh, int_hexagon_V6_vsatuwuh>; 154f9015e62SKrzysztof Parzyszekdefm : T_VV_HVX_gen_pat <V6_vaddclbw, int_hexagon_V6_vaddclbw>; 155f9015e62SKrzysztof Parzyszekdefm : T_VV_HVX_gen_pat <V6_vaddclbh, int_hexagon_V6_vaddclbh>; 156f9015e62SKrzysztof Parzyszekdefm : T_WW_HVX_gen_pat <V6_vadduwsat_dv, int_hexagon_V6_vadduwsat_dv>; 157f9015e62SKrzysztof Parzyszekdefm : T_WW_HVX_gen_pat <V6_vsubuwsat_dv, int_hexagon_V6_vsubuwsat_dv>; 158f9015e62SKrzysztof Parzyszekdefm : T_WW_HVX_gen_pat <V6_vaddbsat_dv, int_hexagon_V6_vaddbsat_dv>; 159f9015e62SKrzysztof Parzyszekdefm : T_WW_HVX_gen_pat <V6_vsubbsat_dv, int_hexagon_V6_vsubbsat_dv>; 160f9015e62SKrzysztof Parzyszekdefm : T_WVV_HVX_gen_pat <V6_vaddhw_acc, int_hexagon_V6_vaddhw_acc>; 161f9015e62SKrzysztof Parzyszekdefm : T_WVV_HVX_gen_pat <V6_vadduhw_acc, int_hexagon_V6_vadduhw_acc>; 162f9015e62SKrzysztof Parzyszekdefm : T_WVV_HVX_gen_pat <V6_vaddubh_acc, int_hexagon_V6_vaddubh_acc>; 163f9015e62SKrzysztof Parzyszekdefm : T_WVV_HVX_gen_pat <V6_vmpyowh_64_acc, int_hexagon_V6_vmpyowh_64_acc>; 164f9015e62SKrzysztof Parzyszekdefm : T_WR_HVX_gen_pat <V6_vmpauhb, int_hexagon_V6_vmpauhb>; 165f9015e62SKrzysztof Parzyszekdefm : T_WWR_HVX_gen_pat <V6_vmpauhb_acc, int_hexagon_V6_vmpauhb_acc>; 166f9015e62SKrzysztof Parzyszekdefm : T_VVR_HVX_gen_pat <V6_vmpyiwub_acc, int_hexagon_V6_vmpyiwub_acc>; 167f9015e62SKrzysztof Parzyszekdefm : T_ZR_HVX_gen_pat <V6_vandnqrt, int_hexagon_V6_vandnqrt>; 168f9015e62SKrzysztof Parzyszekdefm : T_VZR_HVX_gen_pat <V6_vandnqrt_acc, int_hexagon_V6_vandnqrt_acc>; 169f9015e62SKrzysztof Parzyszekdefm : T_ZV_HVX_gen_pat <V6_vandvqv, int_hexagon_V6_vandvqv>; 170f9015e62SKrzysztof Parzyszekdefm : T_ZV_HVX_gen_pat <V6_vandvnqv, int_hexagon_V6_vandvnqv>; 171f9015e62SKrzysztof Parzyszekdefm : T_R_HVX_gen_pat <V6_pred_scalar2v2, int_hexagon_V6_pred_scalar2v2>; 172f9015e62SKrzysztof Parzyszekdefm : T_R_HVX_gen_pat <V6_lvsplath, int_hexagon_V6_lvsplath>; 173f9015e62SKrzysztof Parzyszekdefm : T_R_HVX_gen_pat <V6_lvsplatb, int_hexagon_V6_lvsplatb>; 174f9015e62SKrzysztof Parzyszekdefm : T_ZZ_HVX_gen_pat <V6_shuffeqw, int_hexagon_V6_shuffeqw>; 175f9015e62SKrzysztof Parzyszekdefm : T_ZZ_HVX_gen_pat <V6_shuffeqh, int_hexagon_V6_shuffeqh>; 176f9015e62SKrzysztof Parzyszekdefm : T_VVI_HVX_gen_pat <V6_vlutvvbi, int_hexagon_V6_vlutvvbi>; 177f9015e62SKrzysztof Parzyszekdefm : T_VVI_HVX_gen_pat <V6_vlutvwhi, int_hexagon_V6_vlutvwhi>; 178f9015e62SKrzysztof Parzyszekdefm : T_VVVI_HVX_gen_pat <V6_vlutvvb_oracci, int_hexagon_V6_vlutvvb_oracci>; 179f9015e62SKrzysztof Parzyszekdefm : T_WVVI_HVX_gen_pat <V6_vlutvwh_oracci, int_hexagon_V6_vlutvwh_oracci>; 180