xref: /aosp_15_r20/external/llvm/lib/Target/Hexagon/HexagonScheduleV60.td (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker//=-HexagonScheduleV60.td - HexagonV60 Scheduling Definitions *- tablegen -*-=//
2*9880d681SAndroid Build Coastguard Worker//
3*9880d681SAndroid Build Coastguard Worker//                     The LLVM Compiler Infrastructure
4*9880d681SAndroid Build Coastguard Worker//
5*9880d681SAndroid Build Coastguard Worker// This file is distributed under the University of Illinois Open Source
6*9880d681SAndroid Build Coastguard Worker// License. See LICENSE.TXT for details.
7*9880d681SAndroid Build Coastguard Worker//
8*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Worker// CVI pipes from the "Hexagon Multimedia Co-Processor Extensions Arch Spec".
11*9880d681SAndroid Build Coastguard Workerdef CVI_ST     : FuncUnit;
12*9880d681SAndroid Build Coastguard Workerdef CVI_XLANE  : FuncUnit;
13*9880d681SAndroid Build Coastguard Workerdef CVI_SHIFT  : FuncUnit;
14*9880d681SAndroid Build Coastguard Workerdef CVI_MPY0   : FuncUnit;
15*9880d681SAndroid Build Coastguard Workerdef CVI_MPY1   : FuncUnit;
16*9880d681SAndroid Build Coastguard Workerdef CVI_LD     : FuncUnit;
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Worker// Combined functional units.
19*9880d681SAndroid Build Coastguard Workerdef CVI_XLSHF  : FuncUnit;
20*9880d681SAndroid Build Coastguard Workerdef CVI_MPY01  : FuncUnit;
21*9880d681SAndroid Build Coastguard Workerdef CVI_ALL    : FuncUnit;
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Worker// Combined functional unit data.
24*9880d681SAndroid Build Coastguard Workerdef HexagonComboFuncsV60 :
25*9880d681SAndroid Build Coastguard Worker    ComboFuncUnits<[
26*9880d681SAndroid Build Coastguard Worker      ComboFuncData<CVI_XLSHF    , [CVI_XLANE, CVI_SHIFT]>,
27*9880d681SAndroid Build Coastguard Worker      ComboFuncData<CVI_MPY01    , [CVI_MPY0, CVI_MPY1]>,
28*9880d681SAndroid Build Coastguard Worker      ComboFuncData<CVI_ALL      , [CVI_ST, CVI_XLANE, CVI_SHIFT,
29*9880d681SAndroid Build Coastguard Worker                                    CVI_MPY0, CVI_MPY1, CVI_LD]>
30*9880d681SAndroid Build Coastguard Worker    ]>;
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Worker// Note: When adding additional vector scheduling classes, add the
33*9880d681SAndroid Build Coastguard Worker// corresponding methods to the class HexagonInstrInfo.
34*9880d681SAndroid Build Coastguard Workerdef CVI_VA           : InstrItinClass;
35*9880d681SAndroid Build Coastguard Workerdef CVI_VA_DV        : InstrItinClass;
36*9880d681SAndroid Build Coastguard Workerdef CVI_VX_LONG      : InstrItinClass;
37*9880d681SAndroid Build Coastguard Workerdef CVI_VX_LATE      : InstrItinClass;
38*9880d681SAndroid Build Coastguard Workerdef CVI_VX           : InstrItinClass;
39*9880d681SAndroid Build Coastguard Workerdef CVI_VX_DV_LONG   : InstrItinClass;
40*9880d681SAndroid Build Coastguard Workerdef CVI_VX_DV        : InstrItinClass;
41*9880d681SAndroid Build Coastguard Workerdef CVI_VX_DV_SLOT2  : InstrItinClass;
42*9880d681SAndroid Build Coastguard Workerdef CVI_VP           : InstrItinClass;
43*9880d681SAndroid Build Coastguard Workerdef CVI_VP_LONG      : InstrItinClass;
44*9880d681SAndroid Build Coastguard Workerdef CVI_VP_VS_EARLY  : InstrItinClass;
45*9880d681SAndroid Build Coastguard Workerdef CVI_VP_VS_LONG_EARLY   : InstrItinClass;
46*9880d681SAndroid Build Coastguard Workerdef CVI_VP_VS_LONG   : InstrItinClass;
47*9880d681SAndroid Build Coastguard Workerdef CVI_VP_VS   : InstrItinClass;
48*9880d681SAndroid Build Coastguard Workerdef CVI_VP_DV        : InstrItinClass;
49*9880d681SAndroid Build Coastguard Workerdef CVI_VS           : InstrItinClass;
50*9880d681SAndroid Build Coastguard Workerdef CVI_VINLANESAT   : InstrItinClass;
51*9880d681SAndroid Build Coastguard Workerdef CVI_VM_LD        : InstrItinClass;
52*9880d681SAndroid Build Coastguard Workerdef CVI_VM_TMP_LD    : InstrItinClass;
53*9880d681SAndroid Build Coastguard Workerdef CVI_VM_CUR_LD    : InstrItinClass;
54*9880d681SAndroid Build Coastguard Workerdef CVI_VM_VP_LDU    : InstrItinClass;
55*9880d681SAndroid Build Coastguard Workerdef CVI_VM_ST        : InstrItinClass;
56*9880d681SAndroid Build Coastguard Workerdef CVI_VM_NEW_ST    : InstrItinClass;
57*9880d681SAndroid Build Coastguard Workerdef CVI_VM_STU       : InstrItinClass;
58*9880d681SAndroid Build Coastguard Workerdef CVI_HIST         : InstrItinClass;
59*9880d681SAndroid Build Coastguard Workerdef CVI_VA_EXT       : InstrItinClass;
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Worker// There are four SLOTS (four parallel pipelines) in Hexagon V60 machine.
62*9880d681SAndroid Build Coastguard Worker// This file describes that machine information.
63*9880d681SAndroid Build Coastguard Worker//
64*9880d681SAndroid Build Coastguard Worker//    |===========|==================================================|
65*9880d681SAndroid Build Coastguard Worker//    | PIPELINE  |              Instruction Classes                 |
66*9880d681SAndroid Build Coastguard Worker//    |===========|==================================================|
67*9880d681SAndroid Build Coastguard Worker//    | SLOT0     |  LD       ST    ALU32     MEMOP     NV    SYSTEM |
68*9880d681SAndroid Build Coastguard Worker//    |-----------|--------------------------------------------------|
69*9880d681SAndroid Build Coastguard Worker//    | SLOT1     |  LD       ST    ALU32                            |
70*9880d681SAndroid Build Coastguard Worker//    |-----------|--------------------------------------------------|
71*9880d681SAndroid Build Coastguard Worker//    | SLOT2     |  XTYPE          ALU32     J         JR           |
72*9880d681SAndroid Build Coastguard Worker//    |-----------|--------------------------------------------------|
73*9880d681SAndroid Build Coastguard Worker//    | SLOT3     |  XTYPE          ALU32     J         CR           |
74*9880d681SAndroid Build Coastguard Worker//    |===========|==================================================|
75*9880d681SAndroid Build Coastguard Worker//
76*9880d681SAndroid Build Coastguard Worker//
77*9880d681SAndroid Build Coastguard Worker// In addition to using the above SLOTS, there are also six vector pipelines
78*9880d681SAndroid Build Coastguard Worker// in the CVI co-processor in the Hexagon V60 machine.
79*9880d681SAndroid Build Coastguard Worker//
80*9880d681SAndroid Build Coastguard Worker//      |=========| |=========| |=========| |=========| |=========| |=========|
81*9880d681SAndroid Build Coastguard Worker// SLOT | CVI_LD  | |CVI_MPY3 | |CVI_MPY2 | |CVI_SHIFT| |CVI_XLANE| | CVI_ST  |
82*9880d681SAndroid Build Coastguard Worker// ==== |=========| |=========| |=========| |=========| |=========| |=========|
83*9880d681SAndroid Build Coastguard Worker// S0-3 |         | | CVI_VA  | | CVI_VA  | | CVI_VA  | | CVI_VA  | |         |
84*9880d681SAndroid Build Coastguard Worker// S2-3 |         | | CVI_VX  | | CVI_VX  | |         | |         | |         |
85*9880d681SAndroid Build Coastguard Worker// S0-3 |         | |         | |         | |         | | CVI_VP  | |         |
86*9880d681SAndroid Build Coastguard Worker// S0-3 |         | |         | |         | | CVI_VS  | |         | |         |
87*9880d681SAndroid Build Coastguard Worker// S0-1 |(CVI_LD) | | CVI_LD  | | CVI_LD  | | CVI_LD  | | CVI_LD  | |         |
88*9880d681SAndroid Build Coastguard Worker// S0-1 |(C*TMP_LD) |         | |         | |         | |         | |         |
89*9880d681SAndroid Build Coastguard Worker// S01  |(C*_LDU) | |         | |         | |         | | C*_LDU  | |         |
90*9880d681SAndroid Build Coastguard Worker// S0   |         | | CVI_ST  | | CVI_ST  | | CVI_ST  | | CVI_ST  | |(CVI_ST) |
91*9880d681SAndroid Build Coastguard Worker// S0   |         | |         | |         | |         | |         | |(C*TMP_ST)
92*9880d681SAndroid Build Coastguard Worker// S01  |         | |         | |         | |         | | VSTU    | |(C*_STU) |
93*9880d681SAndroid Build Coastguard Worker//      |=========| |=========| |=========| |=========| |=========| |=========|
94*9880d681SAndroid Build Coastguard Worker//                  |=====================| |=====================|
95*9880d681SAndroid Build Coastguard Worker//                  | CVI_MPY2 & CVI_MPY3 | |CVI_XLANE & CVI_SHIFT|
96*9880d681SAndroid Build Coastguard Worker//                  |=====================| |=====================|
97*9880d681SAndroid Build Coastguard Worker// S0-3             | CVI_VA_DV           | | CVI_VA_DV           |
98*9880d681SAndroid Build Coastguard Worker// S0-3             |                     | | CVI_VP_DV           |
99*9880d681SAndroid Build Coastguard Worker// S2-3             | CVI_VX_DV           | |                     |
100*9880d681SAndroid Build Coastguard Worker//                  |=====================| |=====================|
101*9880d681SAndroid Build Coastguard Worker//      |=====================================================================|
102*9880d681SAndroid Build Coastguard Worker// S0-3 | CVI_HIST   Histogram                                                |
103*9880d681SAndroid Build Coastguard Worker// S0123| CVI_VA_EXT Extract                                                  |
104*9880d681SAndroid Build Coastguard Worker//      |=====================================================================|
105*9880d681SAndroid Build Coastguard Worker
106*9880d681SAndroid Build Coastguard Workerdef HexagonItinerariesV60 :
107*9880d681SAndroid Build Coastguard Worker      ProcessorItineraries<[SLOT0, SLOT1, SLOT2, SLOT3, SLOT_ENDLOOP,
108*9880d681SAndroid Build Coastguard Worker                            CVI_ST, CVI_XLANE, CVI_SHIFT, CVI_MPY0, CVI_MPY1,
109*9880d681SAndroid Build Coastguard Worker                            CVI_LD, CVI_XLSHF, CVI_MPY01, CVI_ALL], [], [
110*9880d681SAndroid Build Coastguard Worker        // ALU32
111*9880d681SAndroid Build Coastguard Worker        InstrItinData<ALU32_2op_tc_1_SLOT0123     ,
112*9880d681SAndroid Build Coastguard Worker                      [InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
113*9880d681SAndroid Build Coastguard Worker        InstrItinData<ALU32_2op_tc_2early_SLOT0123,
114*9880d681SAndroid Build Coastguard Worker                      [InstrStage<2, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
115*9880d681SAndroid Build Coastguard Worker        InstrItinData<ALU32_3op_tc_1_SLOT0123     ,
116*9880d681SAndroid Build Coastguard Worker                      [InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
117*9880d681SAndroid Build Coastguard Worker        InstrItinData<ALU32_3op_tc_2_SLOT0123     ,
118*9880d681SAndroid Build Coastguard Worker                      [InstrStage<2, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
119*9880d681SAndroid Build Coastguard Worker        InstrItinData<ALU32_3op_tc_2early_SLOT0123,
120*9880d681SAndroid Build Coastguard Worker                      [InstrStage<2, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
121*9880d681SAndroid Build Coastguard Worker        InstrItinData<ALU32_ADDI_tc_1_SLOT0123    ,
122*9880d681SAndroid Build Coastguard Worker                      [InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
123*9880d681SAndroid Build Coastguard Worker
124*9880d681SAndroid Build Coastguard Worker        // ALU64
125*9880d681SAndroid Build Coastguard Worker        InstrItinData<ALU64_tc_1_SLOT23     , [InstrStage<1, [SLOT2, SLOT3]>]>,
126*9880d681SAndroid Build Coastguard Worker        InstrItinData<ALU64_tc_2_SLOT23     , [InstrStage<2, [SLOT2, SLOT3]>]>,
127*9880d681SAndroid Build Coastguard Worker        InstrItinData<ALU64_tc_2early_SLOT23, [InstrStage<2, [SLOT2, SLOT3]>]>,
128*9880d681SAndroid Build Coastguard Worker        InstrItinData<ALU64_tc_3x_SLOT23    , [InstrStage<3, [SLOT2, SLOT3]>]>,
129*9880d681SAndroid Build Coastguard Worker
130*9880d681SAndroid Build Coastguard Worker        // CR -> System
131*9880d681SAndroid Build Coastguard Worker        InstrItinData<CR_tc_2_SLOT3      , [InstrStage<2, [SLOT3]>]>,
132*9880d681SAndroid Build Coastguard Worker        InstrItinData<CR_tc_2early_SLOT3 , [InstrStage<2, [SLOT3]>]>,
133*9880d681SAndroid Build Coastguard Worker        InstrItinData<CR_tc_3x_SLOT3     , [InstrStage<3, [SLOT3]>]>,
134*9880d681SAndroid Build Coastguard Worker
135*9880d681SAndroid Build Coastguard Worker        // Jump (conditional/unconditional/return etc)
136*9880d681SAndroid Build Coastguard Worker        InstrItinData<CR_tc_2early_SLOT23, [InstrStage<2, [SLOT2, SLOT3]>]>,
137*9880d681SAndroid Build Coastguard Worker        InstrItinData<CR_tc_3x_SLOT23    , [InstrStage<3, [SLOT2, SLOT3]>]>,
138*9880d681SAndroid Build Coastguard Worker        InstrItinData<CJ_tc_1_SLOT23     , [InstrStage<1, [SLOT2, SLOT3]>]>,
139*9880d681SAndroid Build Coastguard Worker        InstrItinData<CJ_tc_2early_SLOT23, [InstrStage<2, [SLOT2, SLOT3]>]>,
140*9880d681SAndroid Build Coastguard Worker        InstrItinData<J_tc_2early_SLOT23 , [InstrStage<2, [SLOT2, SLOT3]>]>,
141*9880d681SAndroid Build Coastguard Worker        InstrItinData<J_tc_2early_CJUMP_UCJUMP_ARCHDEPSLOT     , [InstrStage<1, [SLOT2, SLOT3]>]>,
142*9880d681SAndroid Build Coastguard Worker
143*9880d681SAndroid Build Coastguard Worker        // JR
144*9880d681SAndroid Build Coastguard Worker        InstrItinData<J_tc_2early_SLOT2  , [InstrStage<2, [SLOT2]>]>,
145*9880d681SAndroid Build Coastguard Worker        InstrItinData<J_tc_3stall_SLOT2  , [InstrStage<3, [SLOT2]>]>,
146*9880d681SAndroid Build Coastguard Worker
147*9880d681SAndroid Build Coastguard Worker        // Extender
148*9880d681SAndroid Build Coastguard Worker        InstrItinData<EXTENDER_tc_1_SLOT0123, [InstrStage<1,
149*9880d681SAndroid Build Coastguard Worker                              [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
150*9880d681SAndroid Build Coastguard Worker
151*9880d681SAndroid Build Coastguard Worker        // Load
152*9880d681SAndroid Build Coastguard Worker        InstrItinData<LD_tc_ld_SLOT01      , [InstrStage<3, [SLOT0, SLOT1]>]>,
153*9880d681SAndroid Build Coastguard Worker        InstrItinData<LD_tc_3or4stall_SLOT0, [InstrStage<4, [SLOT0]>]>,
154*9880d681SAndroid Build Coastguard Worker        InstrItinData<LD_tc_ld_SLOT0       , [InstrStage<3, [SLOT0]>]>,
155*9880d681SAndroid Build Coastguard Worker
156*9880d681SAndroid Build Coastguard Worker        // M
157*9880d681SAndroid Build Coastguard Worker        InstrItinData<M_tc_1_SLOT23     , [InstrStage<1, [SLOT2, SLOT3]>]>,
158*9880d681SAndroid Build Coastguard Worker        InstrItinData<M_tc_2_SLOT23     , [InstrStage<2, [SLOT2, SLOT3]>]>,
159*9880d681SAndroid Build Coastguard Worker        InstrItinData<M_tc_3_SLOT23     , [InstrStage<3, [SLOT2, SLOT3]>]>,
160*9880d681SAndroid Build Coastguard Worker        InstrItinData<M_tc_3x_SLOT23    , [InstrStage<3, [SLOT2, SLOT3]>]>,
161*9880d681SAndroid Build Coastguard Worker        InstrItinData<M_tc_3or4x_SLOT23 , [InstrStage<4, [SLOT2, SLOT3]>]>,
162*9880d681SAndroid Build Coastguard Worker        InstrItinData<M_tc_3stall_SLOT23, [InstrStage<3, [SLOT2, SLOT3]>]>,
163*9880d681SAndroid Build Coastguard Worker
164*9880d681SAndroid Build Coastguard Worker        // Store
165*9880d681SAndroid Build Coastguard Worker        InstrItinData<ST_tc_st_SLOT01   , [InstrStage<1, [SLOT0, SLOT1]>]>,
166*9880d681SAndroid Build Coastguard Worker        InstrItinData<ST_tc_3stall_SLOT0, [InstrStage<3, [SLOT0]>]>,
167*9880d681SAndroid Build Coastguard Worker        InstrItinData<ST_tc_ld_SLOT0    , [InstrStage<3, [SLOT0]>]>,
168*9880d681SAndroid Build Coastguard Worker        InstrItinData<ST_tc_st_SLOT0    , [InstrStage<1, [SLOT0]>]>,
169*9880d681SAndroid Build Coastguard Worker
170*9880d681SAndroid Build Coastguard Worker        // Subinsn
171*9880d681SAndroid Build Coastguard Worker        InstrItinData<SUBINSN_tc_2early_SLOT0, [InstrStage<2, [SLOT0]>]>,
172*9880d681SAndroid Build Coastguard Worker        InstrItinData<SUBINSN_tc_3stall_SLOT0, [InstrStage<3, [SLOT0]>]>,
173*9880d681SAndroid Build Coastguard Worker        InstrItinData<SUBINSN_tc_ld_SLOT0    , [InstrStage<3, [SLOT0]>]>,
174*9880d681SAndroid Build Coastguard Worker        InstrItinData<SUBINSN_tc_1_SLOT01    , [InstrStage<1, [SLOT0, SLOT1]>]>,
175*9880d681SAndroid Build Coastguard Worker        InstrItinData<SUBINSN_tc_2early_SLOT01,
176*9880d681SAndroid Build Coastguard Worker                                               [InstrStage<2, [SLOT0, SLOT1]>]>,
177*9880d681SAndroid Build Coastguard Worker        InstrItinData<SUBINSN_tc_ld_SLOT01   , [InstrStage<3, [SLOT0, SLOT1]>]>,
178*9880d681SAndroid Build Coastguard Worker        InstrItinData<SUBINSN_tc_st_SLOT01   , [InstrStage<1, [SLOT0, SLOT1]>]>,
179*9880d681SAndroid Build Coastguard Worker
180*9880d681SAndroid Build Coastguard Worker        // S
181*9880d681SAndroid Build Coastguard Worker        InstrItinData<S_2op_tc_1_SLOT23     , [InstrStage<1, [SLOT2, SLOT3]>]>,
182*9880d681SAndroid Build Coastguard Worker        InstrItinData<S_2op_tc_2_SLOT23     , [InstrStage<2, [SLOT2, SLOT3]>]>,
183*9880d681SAndroid Build Coastguard Worker        InstrItinData<S_2op_tc_2early_SLOT23, [InstrStage<2, [SLOT2, SLOT3]>]>,
184*9880d681SAndroid Build Coastguard Worker        // The S_2op_tc_3x_SLOT23 slots are 4 cycles on v60.
185*9880d681SAndroid Build Coastguard Worker        InstrItinData<S_2op_tc_3or4x_SLOT23 , [InstrStage<4, [SLOT2, SLOT3]>]>,
186*9880d681SAndroid Build Coastguard Worker        InstrItinData<S_3op_tc_1_SLOT23     , [InstrStage<1, [SLOT2, SLOT3]>]>,
187*9880d681SAndroid Build Coastguard Worker        InstrItinData<S_3op_tc_2_SLOT23     , [InstrStage<2, [SLOT2, SLOT3]>]>,
188*9880d681SAndroid Build Coastguard Worker        InstrItinData<S_3op_tc_2early_SLOT23, [InstrStage<2, [SLOT2, SLOT3]>]>,
189*9880d681SAndroid Build Coastguard Worker        InstrItinData<S_3op_tc_3_SLOT23     , [InstrStage<3, [SLOT2, SLOT3]>]>,
190*9880d681SAndroid Build Coastguard Worker        InstrItinData<S_3op_tc_3stall_SLOT23, [InstrStage<3, [SLOT2, SLOT3]>]>,
191*9880d681SAndroid Build Coastguard Worker        InstrItinData<S_3op_tc_3x_SLOT23    , [InstrStage<3, [SLOT2, SLOT3]>]>,
192*9880d681SAndroid Build Coastguard Worker
193*9880d681SAndroid Build Coastguard Worker        // New Value Compare Jump
194*9880d681SAndroid Build Coastguard Worker        InstrItinData<NCJ_tc_3or4stall_SLOT0, [InstrStage<4, [SLOT0]>]>,
195*9880d681SAndroid Build Coastguard Worker
196*9880d681SAndroid Build Coastguard Worker        // Mem ops
197*9880d681SAndroid Build Coastguard Worker        InstrItinData<V2LDST_tc_st_SLOT0  , [InstrStage<1, [SLOT0]>]>,
198*9880d681SAndroid Build Coastguard Worker        InstrItinData<V2LDST_tc_ld_SLOT01 , [InstrStage<2, [SLOT0, SLOT1]>]>,
199*9880d681SAndroid Build Coastguard Worker        InstrItinData<V2LDST_tc_st_SLOT01 , [InstrStage<1, [SLOT0, SLOT1]>]>,
200*9880d681SAndroid Build Coastguard Worker        InstrItinData<V4LDST_tc_st_SLOT0  , [InstrStage<1, [SLOT0]>]>,
201*9880d681SAndroid Build Coastguard Worker        InstrItinData<V4LDST_tc_ld_SLOT01 , [InstrStage<3, [SLOT0, SLOT1]>]>,
202*9880d681SAndroid Build Coastguard Worker        InstrItinData<V4LDST_tc_st_SLOT01 , [InstrStage<1, [SLOT0, SLOT1]>]>,
203*9880d681SAndroid Build Coastguard Worker
204*9880d681SAndroid Build Coastguard Worker        // Endloop
205*9880d681SAndroid Build Coastguard Worker        InstrItinData<J_tc_2early_SLOT0123, [InstrStage<2, [SLOT_ENDLOOP]>]>,
206*9880d681SAndroid Build Coastguard Worker
207*9880d681SAndroid Build Coastguard Worker        // Vector
208*9880d681SAndroid Build Coastguard Worker        InstrItinData<COPROC_VMEM_vtc_long_SLOT01,
209*9880d681SAndroid Build Coastguard Worker                             [InstrStage<3, [SLOT0, SLOT1]>]>,
210*9880d681SAndroid Build Coastguard Worker        InstrItinData<COPROC_VX_vtc_long_SLOT23  ,
211*9880d681SAndroid Build Coastguard Worker                             [InstrStage<3, [SLOT2, SLOT3]>]>,
212*9880d681SAndroid Build Coastguard Worker        InstrItinData<COPROC_VX_vtc_SLOT23 ,
213*9880d681SAndroid Build Coastguard Worker                             [InstrStage<3, [SLOT2, SLOT3]>]>,
214*9880d681SAndroid Build Coastguard Worker        InstrItinData<MAPPING_tc_1_SLOT0123      ,
215*9880d681SAndroid Build Coastguard Worker                             [InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
216*9880d681SAndroid Build Coastguard Worker
217*9880d681SAndroid Build Coastguard Worker        // Duplex and Compound
218*9880d681SAndroid Build Coastguard Worker        InstrItinData<DUPLEX     , [InstrStage<1, [SLOT0]>]>,
219*9880d681SAndroid Build Coastguard Worker        InstrItinData<COMPOUND_CJ_ARCHDEPSLOT   , [InstrStage<1, [SLOT2, SLOT3]>]>,
220*9880d681SAndroid Build Coastguard Worker        InstrItinData<COMPOUND , [InstrStage<1, [SLOT2, SLOT3]>]>,
221*9880d681SAndroid Build Coastguard Worker        // Misc
222*9880d681SAndroid Build Coastguard Worker        InstrItinData<PREFIX , [InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
223*9880d681SAndroid Build Coastguard Worker        InstrItinData<PSEUDO , [InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
224*9880d681SAndroid Build Coastguard Worker        InstrItinData<PSEUDOM    , [InstrStage<1, [SLOT2, SLOT3], 0>,
225*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [SLOT2, SLOT3]>]>,
226*9880d681SAndroid Build Coastguard Worker
227*9880d681SAndroid Build Coastguard Worker        // Latest CVI spec definitions.
228*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VA,[InstrStage<1, [SLOT0,SLOT1,SLOT2,SLOT3], 0>,
229*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_XLANE,CVI_SHIFT,
230*9880d681SAndroid Build Coastguard Worker                                                   CVI_MPY0, CVI_MPY1]>]>,
231*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VA_DV,
232*9880d681SAndroid Build Coastguard Worker                                   [InstrStage<1, [SLOT0,SLOT1,SLOT2,SLOT3], 0>,
233*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_XLSHF, CVI_MPY01]>]>,
234*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VX_LONG, [InstrStage<1, [SLOT2, SLOT3], 0>,
235*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_MPY0, CVI_MPY1]>]>,
236*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VX_LATE, [InstrStage<1, [SLOT2, SLOT3], 0>,
237*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_MPY0, CVI_MPY1]>]>,
238*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VX,[InstrStage<1, [SLOT2, SLOT3], 0>,
239*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_MPY0, CVI_MPY1]>]>,
240*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VX_DV_LONG,
241*9880d681SAndroid Build Coastguard Worker                                   [InstrStage<1, [SLOT2, SLOT3], 0>,
242*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_MPY01]>]>,
243*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VX_DV,
244*9880d681SAndroid Build Coastguard Worker                                   [InstrStage<1, [SLOT2, SLOT3], 0>,
245*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_MPY01]>]>,
246*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VX_DV_SLOT2,
247*9880d681SAndroid Build Coastguard Worker                                   [InstrStage<1, [SLOT2], 0>,
248*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_MPY01]>]>,
249*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VP,      [InstrStage<1, [SLOT0,SLOT1,SLOT2,SLOT3], 0>,
250*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_XLANE]>]>,
251*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VP_LONG, [InstrStage<1, [SLOT0,SLOT1,SLOT2,SLOT3], 0>,
252*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_XLANE]>]>,
253*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VP_VS_EARLY,
254*9880d681SAndroid Build Coastguard Worker                                   [InstrStage<1, [SLOT0,SLOT1,SLOT2,SLOT3], 0>,
255*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_XLSHF]>]>,
256*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VP_VS_LONG,
257*9880d681SAndroid Build Coastguard Worker                                   [InstrStage<1, [SLOT0,SLOT1,SLOT2,SLOT3], 0>,
258*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_XLSHF]>]>,
259*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VP_VS,
260*9880d681SAndroid Build Coastguard Worker                                   [InstrStage<1, [SLOT0,SLOT1,SLOT2,SLOT3], 0>,
261*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_XLSHF]>]>,
262*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VP_VS_LONG_EARLY,
263*9880d681SAndroid Build Coastguard Worker                                   [InstrStage<1, [SLOT0,SLOT1,SLOT2,SLOT3], 0>,
264*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_XLSHF]>]>,
265*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VP_DV  , [InstrStage<1, [SLOT0,SLOT1,SLOT2,SLOT3], 0>,
266*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_XLSHF]>]>,
267*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VS,
268*9880d681SAndroid Build Coastguard Worker                                   [InstrStage<1, [SLOT0,SLOT1,SLOT2,SLOT3], 0>,
269*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_SHIFT]>]>,
270*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VINLANESAT,
271*9880d681SAndroid Build Coastguard Worker                                   [InstrStage<1, [SLOT0,SLOT1,SLOT2,SLOT3], 0>,
272*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_SHIFT]>]>,
273*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VM_LD  , [InstrStage<1, [SLOT0, SLOT1], 0>,
274*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_LD], 0>,
275*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_XLANE, CVI_SHIFT,
276*9880d681SAndroid Build Coastguard Worker                                                   CVI_MPY0, CVI_MPY1]>]>,
277*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VM_TMP_LD,[InstrStage<1,[SLOT0, SLOT1], 0>,
278*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_LD]>]>,
279*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VM_CUR_LD,[InstrStage<1,[SLOT0, SLOT1], 0>,
280*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_LD], 0>,
281*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_XLANE, CVI_SHIFT,
282*9880d681SAndroid Build Coastguard Worker                                                   CVI_MPY0, CVI_MPY1]>]>,
283*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VM_VP_LDU,[InstrStage<1,[SLOT0], 0>,
284*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [SLOT1], 0>,
285*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_LD], 0>,
286*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_XLANE]>]>,
287*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VM_ST  , [InstrStage<1, [SLOT0], 0>,
288*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_ST], 0>,
289*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_XLANE, CVI_SHIFT,
290*9880d681SAndroid Build Coastguard Worker                                                   CVI_MPY0, CVI_MPY1]>]>,
291*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VM_NEW_ST,[InstrStage<1,[SLOT0], 0>,
292*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_ST]>]>,
293*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_VM_STU , [InstrStage<1, [SLOT0], 0>,
294*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [SLOT1], 0>,
295*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_ST], 0>,
296*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_XLANE]>]>,
297*9880d681SAndroid Build Coastguard Worker        InstrItinData<CVI_HIST   , [InstrStage<1, [SLOT0,SLOT1,SLOT2,SLOT3], 0>,
298*9880d681SAndroid Build Coastguard Worker                                    InstrStage<1, [CVI_ALL]>]>
299*9880d681SAndroid Build Coastguard Worker      ]>;
300*9880d681SAndroid Build Coastguard Worker
301*9880d681SAndroid Build Coastguard Workerdef HexagonModelV60 : SchedMachineModel {
302*9880d681SAndroid Build Coastguard Worker  // Max issue per cycle == bundle width.
303*9880d681SAndroid Build Coastguard Worker  let IssueWidth = 4;
304*9880d681SAndroid Build Coastguard Worker  let Itineraries = HexagonItinerariesV60;
305*9880d681SAndroid Build Coastguard Worker  let LoadLatency = 1;
306*9880d681SAndroid Build Coastguard Worker  let CompleteModel = 0;
307*9880d681SAndroid Build Coastguard Worker}
308*9880d681SAndroid Build Coastguard Worker
309*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
310*9880d681SAndroid Build Coastguard Worker// Hexagon V60 Resource Definitions -
311*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
312