diff --git a/llvm/lib/Target/Hexagon/HexagonInstrFormats.td b/llvm/lib/Target/Hexagon/HexagonInstrFormats.td index f0ca90832c4fb..605064986b336 100644 --- a/llvm/lib/Target/Hexagon/HexagonInstrFormats.td +++ b/llvm/lib/Target/Hexagon/HexagonInstrFormats.td @@ -336,5 +336,4 @@ class InstDuplex iClass, string cstr = ""> : Instruction, // Instruction Classes Definitions - //===----------------------------------------------------------------------===// -include "HexagonInstrFormatsV60.td" include "HexagonInstrFormatsV65.td" diff --git a/llvm/lib/Target/Hexagon/HexagonInstrFormatsV60.td b/llvm/lib/Target/Hexagon/HexagonInstrFormatsV60.td deleted file mode 100644 index 86a82183a1ad8..0000000000000 --- a/llvm/lib/Target/Hexagon/HexagonInstrFormatsV60.td +++ /dev/null @@ -1,21 +0,0 @@ -//==- HexagonInstrFormatsV60.td - Hexagon Instruction Formats -*- tablegen -==// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -// This file describes the Hexagon V60 instruction classes in TableGen format. -// -//===----------------------------------------------------------------------===// - -//----------------------------------------------------------------------------// -// Instruction Classes Definitions + -//----------------------------------------------------------------------------// - -class CVI_VA_Resource pattern = [], string cstr = "", - InstrItinClass itin = CVI_VA> - : InstHexagon, - OpcodeHexagon, Requires<[HasV60, UseHVX]>; diff --git a/llvm/lib/Target/Hexagon/HexagonInstrFormatsV65.td b/llvm/lib/Target/Hexagon/HexagonInstrFormatsV65.td index 246a1d364d41a..85b826fc835a1 100644 --- a/llvm/lib/Target/Hexagon/HexagonInstrFormatsV65.td +++ b/llvm/lib/Target/Hexagon/HexagonInstrFormatsV65.td @@ -20,11 +20,6 @@ // Instruction Classes Definitions + //----------------------------------------------------------------------------// -class CVI_VA_Resource_NoOpcode pattern = [], string cstr = "", - InstrItinClass itin = CVI_VA> - : InstHexagon; - class CVI_GATHER_TMP_LD_Resource_NoOpcode pattern = [], string cstr = "", InstrItinClass itin = CVI_GATHER_PSEUDO> diff --git a/llvm/lib/Target/Hexagon/HexagonIntrinsicsV5.td b/llvm/lib/Target/Hexagon/HexagonIntrinsicsV5.td deleted file mode 100644 index 44f39a3e9b163..0000000000000 --- a/llvm/lib/Target/Hexagon/HexagonIntrinsicsV5.td +++ /dev/null @@ -1,414 +0,0 @@ -//===- HexagonIntrinsicsV5.td - V5 Instruction intrinsics --*- tablegen -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -def : T_PR_pat ; -def : T_PPR_pat; -def : T_PR_pat ; - -// Vector reduce add unsigned halfwords -def : T_PP_pat; - -def: T_RP_pat; -def: T_PP_pat; -def: T_PP_pat; -def: T_PP_pat; -def: T_PP_pat; -def: T_PP_pat; - -// Vector reduce multiply word by signed half (32x16) -//Rdd=vrmpyweh(Rss,Rtt)[:<<1] -def : T_PP_pat ; -def : T_PP_pat ; - -//Rdd=vrmpywoh(Rss,Rtt)[:<<1] -def : T_PP_pat ; -def : T_PP_pat ; - -//Rdd+=vrmpyweh(Rss,Rtt)[:<<1] -def : T_PPP_pat ; -def : T_PPP_pat ; - -//Rdd=vrmpywoh(Rss,Rtt)[:<<1] -def : T_PPP_pat ; -def : T_PPP_pat ; - -// Vector multiply halfwords, signed by unsigned -// Rdd=vmpyhsu(Rs,Rt)[:<<1]:sat -def : T_RR_pat ; -def : T_RR_pat ; - -// Rxx+=vmpyhsu(Rs,Rt)[:<<1]:sat -def : T_PRR_pat ; -def : T_PRR_pat ; - -// Vector polynomial multiply halfwords -// Rdd=vpmpyh(Rs,Rt) -def : T_RR_pat ; -// Rxx[^]=vpmpyh(Rs,Rt) -def : T_PRR_pat ; - -// Polynomial multiply words -// Rdd=pmpyw(Rs,Rt) -def : T_RR_pat ; -// Rxx^=pmpyw(Rs,Rt) -def : T_PRR_pat ; - -//Rxx^=asr(Rss,Rt) -def : T_PPR_pat ; -//Rxx^=asl(Rss,Rt) -def : T_PPR_pat ; -//Rxx^=lsr(Rss,Rt) -def : T_PPR_pat ; -//Rxx^=lsl(Rss,Rt) -def : T_PPR_pat ; - -// Multiply and use upper result -def : T_RR_pat ; -def : T_RR_pat ; -def : T_RR_pat ; -def : T_RR_pat ; -def : T_RR_pat ; - -def : T_PP_pat ; -def : T_PP_pat ; - -// Vector reduce add unsigned halfwords -def : T_PP_pat ; - -def: T_P_pat; -def: T_P_pat; -def: T_P_pat; - -def: T_Q_RR_pat; -def: T_Q_RR_pat; -def: T_Q_RI_pat; - -def : T_Q_PI_pat; -def : T_Q_PI_pat; -def : T_Q_PI_pat; -def : T_Q_PI_pat; -def : T_Q_PI_pat; -def : T_Q_PI_pat; -def : T_Q_PI_pat; -def : T_Q_PI_pat; -def : T_Q_PI_pat; -def : T_Q_PP_pat; - -def : T_Q_RR_pat; -def : T_Q_RR_pat; -def : T_Q_RR_pat; -def : T_Q_RR_pat; -def : T_Q_RR_pat; -def : T_Q_RR_pat; - -def : T_Q_RI_pat; -def : T_Q_RI_pat; -def : T_Q_RI_pat; - -def : T_Q_RI_pat; -def : T_Q_RI_pat; -def : T_Q_RI_pat; - -def : T_Q_RP_pat; -def : T_Q_PR_pat; - -def : T_RRR_pat ; -def : T_IRR_pat ; -def : T_IRI_pat ; -def : T_RIR_pat ; -def : T_RRI_pat ; -def : T_RRR_pat ; -def : T_RRR_pat ; - -// Complex multiply 32x16 -def : T_PR_pat ; -def : T_PR_pat ; - -def : T_PR_pat ; -def : T_PR_pat ; - -def : T_PP_pat; -def : T_PP_pat; - -// Complex add/sub halfwords/words -def : T_PP_pat ; -def : T_PP_pat ; -def : T_PP_pat ; -def : T_PP_pat ; - -def : T_PP_pat ; -def : T_PP_pat ; - -// Extract bitfield -def : T_PP_pat ; -def : T_RP_pat ; -def : T_PII_pat ; -def : T_RII_pat ; - -// Vector conditional negate -// Rdd=vcnegh(Rss,Rt) -def : T_PR_pat ; - -// Shift an immediate left by register amount -def : T_IR_pat; - -// Vector reduce maximum halfwords -def : T_PPR_pat ; -def : T_PPR_pat ; - -// Vector reduce maximum words -def : T_PPR_pat ; -def : T_PPR_pat ; - -// Vector reduce minimum halfwords -def : T_PPR_pat ; -def : T_PPR_pat ; - -// Vector reduce minimum words -def : T_PPR_pat ; -def : T_PPR_pat ; - -// Rotate and reduce bytes -def : Pat <(int_hexagon_S4_vrcrotate DoubleRegs:$src1, IntRegs:$src2, - u2_0ImmPred:$src3), - (S4_vrcrotate DoubleRegs:$src1, IntRegs:$src2, u2_0ImmPred:$src3)>; - -// Rotate and reduce bytes with accumulation -// Rxx+=vrcrotate(Rss,Rt,#u2) -def : Pat <(int_hexagon_S4_vrcrotate_acc DoubleRegs:$src1, DoubleRegs:$src2, - IntRegs:$src3, u2_0ImmPred:$src4), - (S4_vrcrotate_acc DoubleRegs:$src1, DoubleRegs:$src2, - IntRegs:$src3, u2_0ImmPred:$src4)>; - -// Vector conditional negate -def : T_PPR_pat; - -// Logical xor with xor accumulation -def : T_PPP_pat; - -// ALU64 - Vector min/max byte -def : T_PP_pat ; -def : T_PP_pat ; - -// Shift and add/sub/and/or -def : T_IRI_pat ; -def : T_IRI_pat ; -def : T_IRI_pat ; -def : T_IRI_pat ; -def : T_IRI_pat ; -def : T_IRI_pat ; -def : T_IRI_pat ; -def : T_IRI_pat ; - -// Split bitfield -def : T_RI_pat ; -def : T_RR_pat ; - -def: T_RR_pat; - -def: T_Q_RI_pat; -def: T_Q_RR_pat; - -def: T_RI_pat; -def: T_PI_pat; -def: T_P_pat ; - -//******************************************************************* -// ALU32/ALU -//******************************************************************* - -// ALU32 / ALU / Logical Operations. -def: T_RR_pat; -def: T_RR_pat; - -//******************************************************************* -// ALU32/PERM -//******************************************************************* - -// Combine Words Into Doublewords. -def: T_RI_pat; -def: T_IR_pat; - -//******************************************************************* -// ALU32/PRED -//******************************************************************* - -// Compare -def : T_Q_RI_pat; -def : T_Q_RI_pat; -def : T_Q_RI_pat; - -// Compare To General Register. -def: T_Q_RR_pat; -def: T_Q_RR_pat; -def: T_Q_RR_pat; - -def: T_RR_pat; -def: T_RR_pat; - -def: T_RI_pat; -def: T_RI_pat; - -//******************************************************************* -// CR -//******************************************************************* - -// CR / Logical Operations On Predicates. -def: T_Q_QQQ_pat; -def: T_Q_QQQ_pat; -def: T_Q_QQQ_pat; -def: T_Q_QQQ_pat; -def: T_Q_QQQ_pat; -def: T_Q_QQQ_pat; -def: T_Q_QQQ_pat; -def: T_Q_QQQ_pat; - -//******************************************************************* -// XTYPE/ALU -//******************************************************************* - -// Add And Accumulate. - -def : T_RRI_pat ; -def : T_RIR_pat ; - - -// XTYPE / ALU / Logical-logical Words. -def : T_RRR_pat ; -def : T_RRR_pat ; -def : T_RRR_pat ; -def : T_RRR_pat ; -def : T_RRR_pat ; -def : T_RRR_pat ; -def : T_RRR_pat ; -def : T_RRR_pat ; -def : T_RRR_pat ; -def : T_RRR_pat ; -def : T_RRR_pat ; - -def : T_RRI_pat ; -def : T_RRI_pat ; -def : T_RRI_pat ; - -// Modulo wrap. -def : T_RR_pat ; - -// Arithmetic/Convergent round -// Rd=[cround|round](Rs,Rt)[:sat] -// Rd=[cround|round](Rs,#u5)[:sat] -def : T_RI_pat ; -def : T_RR_pat ; - -def : T_RI_pat ; -def : T_RR_pat ; - -def : T_RI_pat ; -def : T_RR_pat ; - -def : T_P_pat ; - -//Rdd[+]=vrmpybsu(Rss,Rtt) -//Rdd[+]=vrmpybuu(Rss,Rtt) -def : T_PP_pat ; -def : T_PP_pat ; - -def : T_PP_pat ; - -def : T_PPP_pat ; -def : T_PPP_pat ; -//Rxx+=vdmpybsu(Rss,Rtt):sat -def : T_PPP_pat ; - -// Vector multiply bytes -// Rdd=vmpyb[s]u(Rs,Rt) -def : T_RR_pat ; -def : T_RR_pat ; - -// Rxx+=vmpyb[s]u(Rs,Rt) -def : T_PRR_pat ; -def : T_PRR_pat ; - -// Rd=vaddhub(Rss,Rtt):sat -def : T_PP_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_FF_pat; -def : T_F_pat ; - -def : T_Q_QQ_pat; -def : T_Q_QQ_pat; - -def : T_P_pat ; -def : T_PI_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_Q_FF_pat ; -def : T_Q_FF_pat ; -def : T_Q_FF_pat ; -def : T_Q_FF_pat ; - -def : T_Q_DD_pat ; -def : T_Q_DD_pat ; -def : T_Q_DD_pat ; -def : T_Q_DD_pat ; - -// Create floating-point value -def : T_I_pat ; -def : T_I_pat ; -def : T_I_pat ; -def : T_I_pat ; - -def : T_Q_DI_pat ; -def : T_Q_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 ; diff --git a/llvm/lib/Target/Hexagon/HexagonIntrinsicsV60.td b/llvm/lib/Target/Hexagon/HexagonIntrinsicsV60.td deleted file mode 100644 index 796979e590614..0000000000000 --- a/llvm/lib/Target/Hexagon/HexagonIntrinsicsV60.td +++ /dev/null @@ -1,642 +0,0 @@ -//===- HexagonIntrinsicsV60.td - V60 instruction intrinsics -*- tablegen *-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -// This file describes the Hexagon V60 Compiler Intrinsics in TableGen format. -// -//===----------------------------------------------------------------------===// - - -let AddedComplexity = 100 in { -def : Pat < (v16i32 (int_hexagon_V6_lo (v32i32 HvxWR:$src1))), - (v16i32 (EXTRACT_SUBREG (v32i32 HvxWR:$src1), vsub_lo)) >; - -def : Pat < (v16i32 (int_hexagon_V6_hi (v32i32 HvxWR:$src1))), - (v16i32 (EXTRACT_SUBREG (v32i32 HvxWR:$src1), vsub_hi)) >; - -def : Pat < (v32i32 (int_hexagon_V6_lo_128B (v64i32 HvxWR:$src1))), - (v32i32 (EXTRACT_SUBREG (v64i32 HvxWR:$src1), vsub_lo)) >; - -def : Pat < (v32i32 (int_hexagon_V6_hi_128B (v64i32 HvxWR:$src1))), - (v32i32 (EXTRACT_SUBREG (v64i32 HvxWR:$src1), vsub_hi)) >; -} - -def : Pat <(v64i1 (bitconvert (v16i32 HvxVR:$src1))), - (v64i1 (V6_vandvrt(v16i32 HvxVR:$src1), (A2_tfrsi 0x01010101)))>; - -def : Pat <(v64i1 (bitconvert (v32i16 HvxVR:$src1))), - (v64i1 (V6_vandvrt(v32i16 HvxVR:$src1), (A2_tfrsi 0x01010101)))>; - -def : Pat <(v64i1 (bitconvert (v64i8 HvxVR:$src1))), - (v64i1 (V6_vandvrt(v64i8 HvxVR:$src1), (A2_tfrsi 0x01010101)))>; - -def : Pat <(v16i32 (bitconvert (v64i1 HvxQR:$src1))), - (v16i32 (V6_vandqrt(v64i1 HvxQR:$src1), (A2_tfrsi 0x01010101)))>; - -def : Pat <(v32i16 (bitconvert (v64i1 HvxQR:$src1))), - (v32i16 (V6_vandqrt(v64i1 HvxQR:$src1), (A2_tfrsi 0x01010101)))>; - -def : Pat <(v64i8 (bitconvert (v64i1 HvxQR:$src1))), - (v64i8 (V6_vandqrt(v64i1 HvxQR:$src1), (A2_tfrsi 0x01010101)))>; - -def : Pat <(v128i1 (bitconvert (v32i32 HvxVR:$src1))), - (v128i1 (V6_vandvrt (v32i32 HvxVR:$src1), (A2_tfrsi 0x01010101)))>; - -def : Pat <(v128i1 (bitconvert (v64i16 HvxVR:$src1))), - (v128i1 (V6_vandvrt (v64i16 HvxVR:$src1), (A2_tfrsi 0x01010101)))>; - -def : Pat <(v128i1 (bitconvert (v128i8 HvxVR:$src1))), - (v128i1 (V6_vandvrt (v128i8 HvxVR:$src1), (A2_tfrsi 0x01010101)))>; - -def : Pat <(v32i32 (bitconvert (v128i1 HvxQR:$src1))), - (v32i32 (V6_vandqrt (v128i1 HvxQR:$src1), (A2_tfrsi 0x01010101)))>; - -def : Pat <(v64i16 (bitconvert (v128i1 HvxQR:$src1))), - (v64i16 (V6_vandqrt (v128i1 HvxQR:$src1), (A2_tfrsi 0x01010101)))>; - -def : Pat <(v128i8 (bitconvert (v128i1 HvxQR:$src1))), - (v128i8 (V6_vandqrt (v128i1 HvxQR:$src1), (A2_tfrsi 0x01010101)))>; - -let AddedComplexity = 140 in { -def : Pat <(store (v64i1 HvxQR:$src1), (i32 IntRegs:$addr)), - (V6_vS32b_ai IntRegs:$addr, 0, - (v16i32 (V6_vandqrt (v64i1 HvxQR:$src1), - (A2_tfrsi 0x01010101))))>; - -def : Pat <(v64i1 (load (i32 IntRegs:$addr))), - (v64i1 (V6_vandvrt - (v16i32 (V6_vL32b_ai IntRegs:$addr, 0)), (A2_tfrsi 0x01010101)))>; - -def : Pat <(store (v128i1 HvxQR:$src1), (i32 IntRegs:$addr)), - (V6_vS32b_ai IntRegs:$addr, 0, - (v32i32 (V6_vandqrt (v128i1 HvxQR:$src1), - (A2_tfrsi 0x01010101))))>; - -def : Pat <(v128i1 (load (i32 IntRegs:$addr))), - (v128i1 (V6_vandvrt - (v32i32 (V6_vL32b_ai IntRegs:$addr, 0)), (A2_tfrsi 0x01010101)))>; -} - -multiclass T_R_pat { - def: Pat<(IntID IntRegs:$src1), (MI IntRegs:$src1)>; - def: Pat<(!cast(IntID#"_128B") IntRegs:$src1), - (MI IntRegs:$src1)>; -} - -multiclass T_V_pat { - def: Pat<(IntID HvxVR:$src1), - (MI HvxVR:$src1)>; - - def: Pat<(!cast(IntID#"_128B") HvxVR:$src1), - (MI HvxVR:$src1)>; -} - -multiclass T_W_pat { - def: Pat<(IntID HvxWR:$src1), - (MI HvxWR:$src1)>; - - def: Pat<(!cast(IntID#"_128B") HvxWR:$src1), - (MI HvxWR:$src1)>; -} - -multiclass T_Q_pat { - def: Pat<(IntID HvxQR:$src1), - (MI HvxQR:$src1)>; - - def: Pat<(!cast(IntID#"_128B") HvxQR:$src1), - (MI HvxQR:$src1)>; -} - -multiclass T_WR_pat { - def: Pat<(IntID HvxWR:$src1, IntRegs:$src2), - (MI HvxWR:$src1, IntRegs:$src2)>; - - def: Pat<(!cast(IntID#"_128B")HvxWR:$src1, IntRegs:$src2), - (MI HvxWR:$src1, IntRegs:$src2)>; -} - -multiclass T_VR_pat { - def: Pat<(IntID HvxVR:$src1, IntRegs:$src2), - (MI HvxVR:$src1, IntRegs:$src2)>; - - def: Pat<(!cast(IntID#"_128B")HvxVR:$src1, IntRegs:$src2), - (MI HvxVR:$src1, IntRegs:$src2)>; -} - -multiclass T_WV_pat { - def: Pat<(IntID HvxWR:$src1, HvxVR:$src2), - (MI HvxWR:$src1, HvxVR:$src2)>; - - def: Pat<(!cast(IntID#"_128B") HvxWR:$src1, HvxVR:$src2), - (MI HvxWR:$src1, HvxVR:$src2)>; -} - -multiclass T_WW_pat { - def: Pat<(IntID HvxWR:$src1, HvxWR:$src2), - (MI HvxWR:$src1, HvxWR:$src2)>; - - def: Pat<(!cast(IntID#"_128B") HvxWR:$src1, HvxWR:$src2), - (MI HvxWR:$src1, HvxWR:$src2)>; -} - -multiclass T_VV_pat { - def: Pat<(IntID HvxVR:$src1, HvxVR:$src2), - (MI HvxVR:$src1, HvxVR:$src2)>; - - def: Pat<(!cast(IntID#"_128B") HvxVR:$src1, HvxVR:$src2), - (MI HvxVR:$src1, HvxVR:$src2)>; -} - -multiclass T_QR_pat { - def: Pat<(IntID HvxQR:$src1, IntRegs:$src2), - (MI HvxQR:$src1, IntRegs:$src2)>; - - def: Pat<(!cast(IntID#"_128B") HvxQR:$src1, IntRegs:$src2), - (MI HvxQR:$src1, IntRegs:$src2)>; -} - -multiclass T_QQ_pat { - def: Pat<(IntID HvxQR:$src1, HvxQR:$src2), - (MI HvxQR:$src1, HvxQR:$src2)>; - - def: Pat<(!cast(IntID#"_128B") HvxQR:$src1, HvxQR:$src2), - (MI HvxQR:$src1, HvxQR:$src2)>; -} - -multiclass T_WWR_pat { - def: Pat<(IntID HvxWR:$src1, HvxWR:$src2, IntRegs:$src3), - (MI HvxWR:$src1, HvxWR:$src2, IntRegs:$src3)>; - - def: Pat<(!cast(IntID#"_128B") HvxWR:$src1, HvxWR:$src2, - IntRegs:$src3), - (MI HvxWR:$src1, HvxWR:$src2, IntRegs:$src3)>; -} - -multiclass T_VVR_pat { - def: Pat<(IntID HvxVR:$src1, HvxVR:$src2, IntRegs:$src3), - (MI HvxVR:$src1, HvxVR:$src2, IntRegs:$src3)>; - - def: Pat<(!cast(IntID#"_128B") HvxVR:$src1, HvxVR:$src2, - IntRegs:$src3), - (MI HvxVR:$src1, HvxVR:$src2, IntRegs:$src3)>; -} - -multiclass T_WVR_pat { - def: Pat<(IntID HvxWR:$src1, HvxVR:$src2, IntRegs:$src3), - (MI HvxWR:$src1, HvxVR:$src2, IntRegs:$src3)>; - - def: Pat<(!cast(IntID#"_128B") HvxWR:$src1, HvxVR:$src2, - IntRegs:$src3), - (MI HvxWR:$src1, HvxVR:$src2, IntRegs:$src3)>; -} - -multiclass T_VWR_pat { - def: Pat<(IntID HvxVR:$src1, HvxWR:$src2, IntRegs:$src3), - (MI HvxVR:$src1, HvxWR:$src2, IntRegs:$src3)>; - - def: Pat<(!cast(IntID#"_128B") HvxVR:$src1, HvxWR:$src2, - IntRegs:$src3), - (MI HvxVR:$src1, HvxWR:$src2, IntRegs:$src3)>; -} - -multiclass T_VVV_pat { - def: Pat<(IntID HvxVR:$src1, HvxVR:$src2, HvxVR:$src3), - (MI HvxVR:$src1, HvxVR:$src2, HvxVR:$src3)>; - - def: Pat<(!cast(IntID#"_128B") HvxVR:$src1, HvxVR:$src2, - HvxVR:$src3), - (MI HvxVR:$src1, HvxVR:$src2, HvxVR:$src3)>; -} - -multiclass T_WVV_pat { - def: Pat<(IntID HvxWR:$src1, HvxVR:$src2, HvxVR:$src3), - (MI HvxWR:$src1, HvxVR:$src2, HvxVR:$src3)>; - - def: Pat<(!cast(IntID#"_128B") HvxWR:$src1, HvxVR:$src2, - HvxVR:$src3), - (MI HvxWR:$src1, HvxVR:$src2, HvxVR:$src3)>; -} - -multiclass T_QVV_pat { - def: Pat<(IntID HvxQR:$src1, HvxVR:$src2, HvxVR:$src3), - (MI HvxQR:$src1, HvxVR:$src2, HvxVR:$src3)>; - - def: Pat<(!cast(IntID#"_128B") HvxQR:$src1, HvxVR:$src2, - HvxVR:$src3), - (MI HvxQR:$src1, HvxVR:$src2, HvxVR:$src3)>; -} - -multiclass T_VQR_pat { - def: Pat<(IntID HvxVR:$src1, HvxQR:$src2, IntRegs:$src3), - (MI HvxVR:$src1, HvxQR:$src2, IntRegs:$src3)>; - - def: Pat<(!cast(IntID#"_128B") HvxVR:$src1, HvxQR:$src2, - IntRegs:$src3), - (MI HvxVR:$src1, HvxQR:$src2, IntRegs:$src3)>; -} - - -multiclass T_QVR_pat { - def: Pat<(IntID HvxQR:$src1, HvxVR:$src2, IntRegs:$src3), - (MI HvxQR:$src1, HvxVR:$src2, IntRegs:$src3)>; - - def: Pat<(!cast(IntID#"_128B") HvxQR:$src1, HvxVR:$src2, - IntRegs:$src3), - (MI HvxQR:$src1, HvxVR:$src2, IntRegs:$src3)>; -} - -multiclass T_VVI_pat { - def: Pat<(IntID HvxVR:$src1, HvxVR:$src2, imm:$src3), - (MI HvxVR:$src1, HvxVR:$src2, imm:$src3)>; - - def: Pat<(!cast(IntID#"_128B") HvxVR:$src1, - HvxVR:$src2, imm:$src3), - (MI HvxVR:$src1, HvxVR:$src2, imm:$src3)>; -} - -multiclass T_WRI_pat { - def: Pat<(IntID HvxWR:$src1, IntRegs:$src2, imm:$src3), - (MI HvxWR:$src1, IntRegs:$src2, imm:$src3)>; - - def: Pat<(!cast(IntID#"_128B") HvxWR:$src1, - IntRegs:$src2, imm:$src3), - (MI HvxWR:$src1, IntRegs:$src2, imm:$src3)>; -} - -multiclass T_WWRI_pat { - def: Pat<(IntID HvxWR:$src1, HvxWR:$src2, IntRegs:$src3, imm:$src4), - (MI HvxWR:$src1, HvxWR:$src2, IntRegs:$src3, imm:$src4)>; - - def: Pat<(!cast(IntID#"_128B") HvxWR:$src1, HvxWR:$src2, - IntRegs:$src3, imm:$src4), - (MI HvxWR:$src1, HvxWR:$src2, IntRegs:$src3, imm:$src4)>; -} - -multiclass T_VVVR_pat { - def: Pat<(IntID HvxVR:$src1, HvxVR:$src2, HvxVR:$src3, IntRegs:$src4), - (MI HvxVR:$src1, HvxVR:$src2, HvxVR:$src3, IntRegs:$src4)>; - - def: Pat<(!cast(IntID#"_128B") HvxVR:$src1, HvxVR:$src2, - HvxVR:$src3, IntRegs:$src4), - (MI HvxVR:$src1, HvxVR:$src2, HvxVR:$src3, IntRegs:$src4)>; -} - -multiclass T_WVVR_pat { - def: Pat<(IntID HvxWR:$src1, HvxVR:$src2, HvxVR:$src3, IntRegs:$src4), - (MI HvxWR:$src1, HvxVR:$src2, HvxVR:$src3, IntRegs:$src4)>; - - def: Pat<(!cast(IntID#"_128B") HvxWR:$src1, HvxVR:$src2, - HvxVR:$src3, IntRegs:$src4), - (MI HvxWR:$src1, HvxVR:$src2, HvxVR:$src3, IntRegs:$src4)>; -} - -defm : T_WR_pat ; -defm : T_WR_pat ; -defm : T_VR_pat ; -defm : T_VR_pat ; -defm : T_VR_pat ; -defm : T_WR_pat ; -defm : T_VR_pat ; -defm : T_WR_pat ; -defm : T_VR_pat ; -defm : T_WR_pat ; -defm : T_VR_pat ; -defm : T_WR_pat ; -defm : T_WR_pat ; -defm : T_VR_pat ; -defm : T_WR_pat ; -defm : T_WR_pat ; -defm : T_VR_pat ; -defm : T_VR_pat ; -defm : T_VR_pat ; -defm : T_VR_pat ; -defm : T_VR_pat ; -defm : T_VR_pat ; -defm : T_VR_pat ; -defm : T_VR_pat ; -defm : T_VR_pat ; -defm : T_VR_pat ; -defm : T_VR_pat ; -defm : T_VR_pat ; -defm : T_VR_pat ; -defm : T_VR_pat ; -defm : T_WR_pat ; -defm : T_VR_pat ; - -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_WW_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_WW_pat ; -defm : T_WW_pat ; -defm : T_WW_pat ; -defm : T_WW_pat ; -defm : T_WW_pat ; -defm : T_WW_pat ; -defm : T_WW_pat ; -defm : T_WW_pat ; -defm : T_WW_pat ; -defm : T_WW_pat ; -defm : T_WW_pat ; -defm : T_WW_pat ; -defm : T_WW_pat ; -defm : T_WW_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_WW_pat ; - -defm : T_VVR_pat ; -defm : T_VVR_pat ; -defm : T_VVR_pat ; -defm : T_VVR_pat ; -defm : T_VVR_pat ; -defm : T_VVR_pat ; -defm : T_VVR_pat ; -defm : T_VVR_pat ; -defm : T_VVR_pat ; -defm : T_VVR_pat ; -defm : T_VVR_pat ; - -defm : T_VWR_pat ; -defm : T_VWR_pat ; - -defm : T_WVR_pat ; -defm : T_WVR_pat ; -defm : T_WVR_pat ; -defm : T_WVR_pat ; - -defm : T_WWR_pat ; -defm : T_WWR_pat ; -defm : T_WWR_pat ; -defm : T_WWR_pat ; -defm : T_WWR_pat ; -defm : T_WWR_pat ; -defm : T_WWR_pat ; -defm : T_WWR_pat ; - -defm : T_VVV_pat ; -defm : T_WVV_pat ; -defm : T_WVV_pat ; -defm : T_WVV_pat ; -defm : T_WVV_pat ; -defm : T_VVV_pat ; -defm : T_VVV_pat ; -defm : T_VVV_pat ; -defm : T_VVV_pat ; -defm : T_VVV_pat ; -defm : T_WVV_pat ; -defm : T_WVV_pat ; -defm : T_VVV_pat ; -defm : T_VVV_pat ; -defm : T_VVV_pat ; - -// Compare instructions -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; - -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; - -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QVV_pat ; - -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; -defm : T_V_pat ; - -defm : T_W_pat ; -defm : T_W_pat ; -defm : T_W_pat ; - -defm : T_WRI_pat ; -defm : T_WRI_pat ; -defm : T_WRI_pat ; - -defm : T_WWRI_pat ; -defm : T_WWRI_pat ; -defm : T_WWRI_pat ; - -// assembler mapped. -//defm : T_V_pat ; -// not present earlier.. need to add intrinsic -defm : T_VVR_pat ; -defm : T_VVR_pat ; -defm : T_VVR_pat ; -defm : T_VVR_pat ; -defm : T_VVR_pat ; -defm : T_VVR_pat ; -defm : T_VVR_pat ; -defm : T_VVR_pat ; -defm : T_VVR_pat ; - -defm : T_VVR_pat ; -defm : T_VVR_pat ; - -defm : T_WV_pat ; -defm : T_WV_pat ; -defm : T_VVI_pat ; -defm : T_VVI_pat ; - -defm : T_QVV_pat ; -defm : T_QVV_pat ; -defm : T_QQ_pat ; -defm : T_QQ_pat ; -defm : T_Q_pat ; -defm : T_QQ_pat ; -defm : T_QQ_pat ; -defm : T_QQ_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; -defm : T_VV_pat ; - -defm : T_VQR_pat ; -defm : T_QVR_pat ; -defm : T_QR_pat ; -defm : T_R_pat ; -defm : T_R_pat ; -defm : T_VR_pat ; - -defm : T_VVR_pat ; -defm : T_VVR_pat ; -defm : T_VVVR_pat ; -defm : T_WVVR_pat ; - -defm : T_QVR_pat ; -def : T_PI_pat ; -def : T_RI_pat ; -def : T_PPI_pat ; -def : T_PPI_pat ; -def : T_PPI_pat ; -def : T_PPI_pat ; -def : T_PPI_pat ; -def : T_RRI_pat ; -def : T_RRI_pat ; -def : T_RRI_pat ; -def : T_RRI_pat ; -def : T_RRI_pat ; - -defm : T_VR_pat ; -defm : T_VR_pat ; - -//def : T_PPQ_pat ; - -def: Pat<(v64i16 (trunc v64i32:$Vdd)), - (v64i16 (V6_vpackwh_sat - (v32i32 (V6_hi HvxWR:$Vdd)), - (v32i32 (V6_lo HvxWR:$Vdd))))>; - -def: Pat<(int_hexagon_V6_vd0), (V6_vd0)>; -def: Pat<(int_hexagon_V6_vd0_128B), (V6_vd0)>; - diff --git a/llvm/lib/Target/Hexagon/HexagonMapAsm2IntrinV62.gen.td b/llvm/lib/Target/Hexagon/HexagonMapAsm2IntrinV62.gen.td deleted file mode 100644 index 2fcefe6a4ef6c..0000000000000 --- a/llvm/lib/Target/Hexagon/HexagonMapAsm2IntrinV62.gen.td +++ /dev/null @@ -1,179 +0,0 @@ -//===--- HexagonMapAsm2IntrinV62.gen.td -----------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -multiclass T_VR_HVX_gen_pat { - def: Pat<(IntID HvxVR:$src1, IntRegs:$src2), - (MI HvxVR:$src1, IntRegs:$src2)>; - def: Pat<(!cast(IntID#"_128B") HvxVR:$src1, IntRegs:$src2), - (MI HvxVR:$src1, IntRegs:$src2)>; -} - -multiclass T_VVL_HVX_gen_pat { - def: Pat<(IntID HvxVR:$src1, HvxVR:$src2, IntRegsLow8:$src3), - (MI HvxVR:$src1, HvxVR:$src2, IntRegsLow8:$src3)>; - def: Pat<(!cast(IntID#"_128B") HvxVR:$src1, HvxVR:$src2, - IntRegsLow8:$src3), - (MI HvxVR:$src1, HvxVR:$src2, IntRegsLow8:$src3)>; -} - -multiclass T_VV_HVX_gen_pat { - def: Pat<(IntID HvxVR:$src1, HvxVR:$src2), - (MI HvxVR:$src1, HvxVR:$src2)>; - def: Pat<(!cast(IntID#"_128B") HvxVR:$src1, HvxVR:$src2), - (MI HvxVR:$src1, HvxVR:$src2)>; -} - -multiclass T_WW_HVX_gen_pat { - def: Pat<(IntID HvxWR:$src1, HvxWR:$src2), - (MI HvxWR:$src1, HvxWR:$src2)>; - def: Pat<(!cast(IntID#"_128B") HvxWR:$src1, HvxWR:$src2), - (MI HvxWR:$src1, HvxWR:$src2)>; -} - -multiclass T_WVV_HVX_gen_pat { - def: Pat<(IntID HvxWR:$src1, HvxVR:$src2, HvxVR:$src3), - (MI HvxWR:$src1, HvxVR:$src2, HvxVR:$src3)>; - def: Pat<(!cast(IntID#"_128B") HvxWR:$src1, HvxVR:$src2, - HvxVR:$src3), - (MI HvxWR:$src1, HvxVR:$src2, HvxVR:$src3)>; -} - -multiclass T_WR_HVX_gen_pat { - def: Pat<(IntID HvxWR:$src1, IntRegs:$src2), - (MI HvxWR:$src1, IntRegs:$src2)>; - def: Pat<(!cast(IntID#"_128B") HvxWR:$src1, IntRegs:$src2), - (MI HvxWR:$src1, IntRegs:$src2)>; -} - -multiclass T_WWR_HVX_gen_pat { - def: Pat<(IntID HvxWR:$src1, HvxWR:$src2, IntRegs:$src3), - (MI HvxWR:$src1, HvxWR:$src2, IntRegs:$src3)>; - def: Pat<(!cast(IntID#"_128B") HvxWR:$src1, HvxWR:$src2, - IntRegs:$src3), - (MI HvxWR:$src1, HvxWR:$src2, IntRegs:$src3)>; -} - -multiclass T_VVR_HVX_gen_pat { - def: Pat<(IntID HvxVR:$src1, HvxVR:$src2, IntRegs:$src3), - (MI HvxVR:$src1, HvxVR:$src2, IntRegs:$src3)>; - def: Pat<(!cast(IntID#"_128B") HvxVR:$src1, HvxVR:$src2, - IntRegs:$src3), - (MI HvxVR:$src1, HvxVR:$src2, IntRegs:$src3)>; -} - -multiclass T_ZR_HVX_gen_pat { - def: Pat<(IntID HvxQR:$src1, IntRegs:$src2), - (MI HvxQR:$src1, IntRegs:$src2)>; - def: Pat<(!cast(IntID#"_128B") HvxQR:$src1, IntRegs:$src2), - (MI HvxQR:$src1, IntRegs:$src2)>; -} - -multiclass T_VZR_HVX_gen_pat { - def: Pat<(IntID HvxVR:$src1, HvxQR:$src2, IntRegs:$src3), - (MI HvxVR:$src1, HvxQR:$src2, IntRegs:$src3)>; - def: Pat<(!cast(IntID#"_128B") HvxVR:$src1, HvxQR:$src2, - IntRegs:$src3), - (MI HvxVR:$src1, HvxQR:$src2, IntRegs:$src3)>; -} - -multiclass T_ZV_HVX_gen_pat { - def: Pat<(IntID HvxQR:$src1, HvxVR:$src2), - (MI HvxQR:$src1, HvxVR:$src2)>; - def: Pat<(!cast(IntID#"_128B") HvxQR:$src1, HvxVR:$src2), - (MI HvxQR:$src1, HvxVR:$src2)>; -} - -multiclass T_R_HVX_gen_pat { - def: Pat<(IntID IntRegs:$src1), - (MI IntRegs:$src1)>; - def: Pat<(!cast(IntID#"_128B") IntRegs:$src1), - (MI IntRegs:$src1)>; -} - -multiclass T_ZZ_HVX_gen_pat { - def: Pat<(IntID HvxQR:$src1, HvxQR:$src2), - (MI HvxQR:$src1, HvxQR:$src2)>; - def: Pat<(!cast(IntID#"_128B") HvxQR:$src1, HvxQR:$src2), - (MI HvxQR:$src1, HvxQR:$src2)>; -} - -multiclass T_VVI_HVX_gen_pat { - def: Pat<(IntID HvxVR:$src1, HvxVR:$src2, imm:$src3), - (MI HvxVR:$src1, HvxVR:$src2, imm:$src3)>; - def: Pat<(!cast(IntID#"_128B") HvxVR:$src1, HvxVR:$src2, - imm:$src3), - (MI HvxVR:$src1, HvxVR:$src2, imm:$src3)>; -} - -multiclass T_VVVI_HVX_gen_pat { - def: Pat<(IntID HvxVR:$src1, HvxVR:$src2, HvxVR:$src3, imm:$src4), - (MI HvxVR:$src1, HvxVR:$src2, HvxVR:$src3, imm:$src4)>; - def: Pat<(!cast(IntID#"_128B") HvxVR:$src1, HvxVR:$src2, - HvxVR:$src3, imm:$src4), - (MI HvxVR:$src1, HvxVR:$src2, HvxVR:$src3, imm:$src4)>; -} - -multiclass T_WVVI_HVX_gen_pat { - def: Pat<(IntID HvxWR:$src1, HvxVR:$src2, HvxVR:$src3, imm:$src4), - (MI HvxWR:$src1, HvxVR:$src2, HvxVR:$src3, imm:$src4)>; - def: Pat<(!cast(IntID#"_128B") HvxWR:$src1, HvxVR:$src2, - HvxVR:$src3, imm:$src4), - (MI HvxWR:$src1, HvxVR:$src2, HvxVR:$src3, imm:$src4)>; -} - -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 ;