brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.0 KiB · 42393d0 Raw
92 lines · plain
1//==- HexagonPatternsV65.td -------------------------------*- tablegen -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9multiclass vgathermh<RegisterClass RC> {10  let isCodeGenOnly = 1, isPseudo = 1, mayLoad = 1,11  mayStore = 1, addrMode = BaseImmOffset, accessSize = HalfWordAccess in12  def NAME : CVI_GATHER_TMP_LD_Resource_NoOpcode<(outs ),13                           (ins IntRegs:$_dst_, s4_0Imm:$Ii,14                                IntRegs:$Rt, ModRegs:$Mu, RC:$Vv),15                           ".error \"should not emit\" ",16                           []>;17}18 19multiclass vgathermw<RegisterClass RC> {20  let isCodeGenOnly = 1, isPseudo = 1, mayLoad = 1,21  mayStore = 1, addrMode = BaseImmOffset, accessSize = WordAccess in22  def NAME : CVI_GATHER_TMP_LD_Resource_NoOpcode<(outs ),23                           (ins IntRegs:$_dst_, s4_0Imm:$Ii,24                                IntRegs:$Rt, ModRegs:$Mu, RC:$Vv),25                           ".error \"should not emit\" ",26                           []>;27}28 29multiclass vgathermhw<RegisterClass RC> {30  let isCodeGenOnly = 1, isPseudo = 1, mayLoad = 1,31   mayStore = 1, addrMode = BaseImmOffset, accessSize = HalfWordAccess in32  def NAME : CVI_GATHER_TMP_LD_Resource_NoOpcode<(outs ),33                           (ins IntRegs:$_dst_, s4_0Imm:$Ii,34                                IntRegs:$Rt, ModRegs:$Mu, RC:$Vv),35                           ".error \"should not emit\" ",36                           []>;37}38 39defm V6_vgathermh_pseudo  : vgathermh<HvxVR>;40defm V6_vgathermw_pseudo  : vgathermw<HvxVR>;41defm V6_vgathermhw_pseudo  : vgathermhw<HvxWR>;42 43 44multiclass vgather_scatter_mh<RegisterClass RC> {45  let isCodeGenOnly = 1, isPseudo = 1, mayLoad = 1,46  mayStore = 1, addrMode = BaseImmOffset, accessSize = HalfWordAccess in47  def NAME : CVI_GATHER_TMP_LD_Resource_NoOpcode<(outs ),48                           (ins IntRegs:$_dst_, s4_0Imm:$Ii,49                                IntRegs:$Rt, ModRegs:$Mu, RC:$Vv),50                           ".error \"should not emit\" ",51                           []>;52}53 54defm V6_vgather_vscatter_mh_pseudo  : vgather_scatter_mh<HvxVR>;55 56multiclass vgathermhq<RegisterClass RC1, RegisterClass RC2> {57  let isCodeGenOnly = 1, isPseudo = 1, mayLoad = 1,58  mayStore = 1, addrMode = BaseImmOffset, accessSize = HalfWordAccess in59  def NAME : CVI_GATHER_TMP_LD_Resource_NoOpcode<(outs ),60                           (ins IntRegs:$_dst_, s4_0Imm:$Ii,61                                RC2:$Vq, IntRegs:$Rt, ModRegs:$Mu,62                                RC1:$Vv),63                           ".error \"should not emit\" ",64                           []>;65}66 67multiclass vgathermwq<RegisterClass RC1, RegisterClass RC2> {68  let isCodeGenOnly = 1, isPseudo = 1, mayLoad = 1,69  mayStore = 1, addrMode = BaseImmOffset, accessSize = WordAccess in70  def NAME : CVI_GATHER_TMP_LD_Resource_NoOpcode<(outs ),71                           (ins IntRegs:$_dst_, s4_0Imm:$Ii,72                                RC2:$Vq, IntRegs:$Rt, ModRegs:$Mu,73                                RC1:$Vv),74                           ".error \"should not emit\" ",75                           []>;76}77 78multiclass vgathermhwq<RegisterClass RC1, RegisterClass RC2> {79  let isCodeGenOnly = 1, isPseudo = 1, mayLoad = 1,80  mayStore = 1, addrMode = BaseImmOffset, accessSize = HalfWordAccess  in81  def NAME : CVI_GATHER_TMP_LD_Resource_NoOpcode<(outs ),82                           (ins IntRegs:$_dst_, s4_0Imm:$Ii,83                              RC2:$Vq, IntRegs:$Rt, ModRegs:$Mu,84                              RC1:$Vv),85                           ".error \"should not emit\" ",86                           []>;87}88 89defm V6_vgathermhq_pseudo  : vgathermhq<HvxVR, HvxQR>;90defm V6_vgathermwq_pseudo  : vgathermwq<HvxVR, HvxQR>;91defm V6_vgathermhwq_pseudo  : vgathermhwq<HvxWR, HvxQR>;92