xref: /llvm-project/llvm/lib/Target/Hexagon/HexagonMapAsm2IntrinV62.gen.td (revision 2946cd701067404b99c39fb29dc9c74bd7193eb3)
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