1 //==- HexagonPatternsV65.td -------------------------------*- tablegen -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 multiclass vgathermh<RegisterClass RC> { 11 let isCodeGenOnly = 1, isPseudo = 1, mayLoad = 1, mayStore = 1 in 12 def NAME : CVI_GATHER_TMP_LD_Resource_NoOpcode<(outs ), 13 (ins IntRegs:$_dst_, IntRegs:$Rt, 14 ModRegs:$Mu, RC:$Vv), 15 ".error \"should not emit\" ", 16 []>; 17 } 18 19 multiclass vgathermw<RegisterClass RC> { 20 let isCodeGenOnly = 1, isPseudo = 1, mayLoad = 1, mayStore = 1 in 21 def NAME : CVI_GATHER_TMP_LD_Resource_NoOpcode<(outs ), 22 (ins IntRegs:$_dst_, IntRegs:$Rt, 23 ModRegs:$Mu, RC:$Vv), 24 ".error \"should not emit\" ", 25 []>; 26 } 27 28 multiclass vgathermhw<RegisterClass RC> { 29 let isCodeGenOnly = 1, isPseudo = 1, mayLoad = 1, mayStore = 1 in 30 def NAME : CVI_GATHER_TMP_LD_Resource_NoOpcode<(outs ), 31 (ins IntRegs:$_dst_, IntRegs:$Rt, 32 ModRegs:$Mu, RC:$Vv), 33 ".error \"should not emit\" ", 34 []>; 35 } 36 37 defm V6_vgathermh_pseudo : vgathermh<HvxVR>; 38 defm V6_vgathermw_pseudo : vgathermw<HvxVR>; 39 defm V6_vgathermhw_pseudo : vgathermhw<HvxWR>; 40 41 multiclass vgathermhq<RegisterClass RC1, RegisterClass RC2> { 42 let isCodeGenOnly = 1, isPseudo = 1, mayLoad = 1, mayStore = 1 in 43 def NAME : CVI_GATHER_TMP_LD_Resource_NoOpcode<(outs ), 44 (ins IntRegs:$_dst_, RC2:$Vq, IntRegs:$Rt, 45 ModRegs:$Mu, RC1:$Vv), 46 ".error \"should not emit\" ", 47 []>; 48 } 49 50 multiclass vgathermwq<RegisterClass RC1, RegisterClass RC2> { 51 let isCodeGenOnly = 1, isPseudo = 1, mayLoad = 1, mayStore = 1 in 52 def NAME : CVI_GATHER_TMP_LD_Resource_NoOpcode<(outs ), 53 (ins IntRegs:$_dst_, RC2:$Vq, IntRegs:$Rt, 54 ModRegs:$Mu, RC1:$Vv), 55 ".error \"should not emit\" ", 56 []>; 57 } 58 59 multiclass vgathermhwq<RegisterClass RC1, RegisterClass RC2> { 60 let isCodeGenOnly = 1, isPseudo = 1, mayLoad = 1, mayStore = 1 in 61 def NAME : CVI_GATHER_TMP_LD_Resource_NoOpcode<(outs ), 62 (ins IntRegs:$_dst_, RC2:$Vq, IntRegs:$Rt, 63 ModRegs:$Mu, RC1:$Vv), 64 ".error \"should not emit\" ", 65 []>; 66 } 67 68 defm V6_vgathermhq_pseudo : vgathermhq<HvxVR, HvxQR>; 69 defm V6_vgathermwq_pseudo : vgathermwq<HvxVR, HvxQR>; 70 defm V6_vgathermhwq_pseudo : vgathermhwq<HvxWR, HvxQR>; 71