Home | History | Annotate | Download | only in Hexagon
      1 //===--- HexagonIICHVX.td -------------------------------------------------===//
      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 def CVI_GATHER_PSEUDO : InstrItinClass;
     11 def CVI_VA            : InstrItinClass;
     12 
     13 class HVXItin {
     14   list<InstrItinData> HVXItin_list = [
     15     InstrItinData<CVI_VA,
     16       [InstrStage<1, [SLOT0,SLOT1,SLOT2,SLOT3], 0>,
     17        InstrStage<1, [CVI_XLANE,CVI_SHIFT, CVI_MPY0, CVI_MPY1]>],
     18       [9, 7, 7, 7], [HVX_FWD, HVX_FWD, HVX_FWD]>,
     19 
     20     // Used by Gather Pseudo Instructions which are expanded into
     21     // V6_vgather* and V6_vS32b_new_ai. Even though these instructions
     22     // use CVI_ST resource, it's not included below to avoid having more than
     23     // 4 InstrStages and thus changing 'MaxResTerms' to 5.
     24     InstrItinData <CVI_GATHER_PSEUDO,
     25       [InstrStage<1, [SLOT0], 0>,
     26        InstrStage<1, [CVI_LD], 0>, InstrStage<1, [CVI_ST], 0>,
     27        InstrStage<1, [CVI_MPY01, CVI_XLSHF]>]>];
     28 }
     29