]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/lib/Target/Mips/MipsSchedule.td
Merge llvm, clang, lld, lldb, compiler-rt and libc++ r308421, and update
[FreeBSD/FreeBSD.git] / contrib / llvm / lib / Target / Mips / MipsSchedule.td
1 //===-- MipsSchedule.td - Mips Scheduling Definitions ------*- 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 //===----------------------------------------------------------------------===//
11 // Functional units across Mips chips sets. Based on GCC/Mips backend files.
12 //===----------------------------------------------------------------------===//
13 def ALU     : FuncUnit;
14 def IMULDIV : FuncUnit;
15
16 //===----------------------------------------------------------------------===//
17 // Instruction Itinerary classes used for Mips
18 //===----------------------------------------------------------------------===//
19 // IIM16Alu is a placeholder class for most MIPS16 instructions.
20 def IIM16Alu           : InstrItinClass;
21 def IIPseudo           : InstrItinClass;
22
23 def II_ABS              : InstrItinClass;
24 def II_ADDI             : InstrItinClass;
25 def II_ADDIU            : InstrItinClass;
26 def II_ADDIUPC          : InstrItinClass;
27 def II_ADD              : InstrItinClass;
28 def II_ADDU             : InstrItinClass;
29 def II_ADD_D            : InstrItinClass;
30 def II_ADD_S            : InstrItinClass;
31 def II_ALIGN            : InstrItinClass;
32 def II_AND              : InstrItinClass;
33 def II_ANDI             : InstrItinClass;
34 def II_ALUIPC           : InstrItinClass;
35 def II_AUI              : InstrItinClass;
36 def II_AUIPC            : InstrItinClass;
37 def II_B                : InstrItinClass;
38 def II_BADDU            : InstrItinClass;
39 def II_BBIT             : InstrItinClass; // bbit[01], bbit[01]32
40 def II_BALC             : InstrItinClass;
41 def II_BC               : InstrItinClass;
42 def II_BC1F             : InstrItinClass;
43 def II_BC1FL            : InstrItinClass;
44 def II_BC1T             : InstrItinClass;
45 def II_BC1TL            : InstrItinClass;
46 def II_BC1CCZ           : InstrItinClass;
47 def II_BC2CCZ           : InstrItinClass;
48 def II_BCC              : InstrItinClass; // beq and bne
49 def II_BCCZ             : InstrItinClass; // b[gl][et]z
50 def II_BCCC             : InstrItinClass; // b<cc>c
51 def II_BCCZAL           : InstrItinClass; // bgezal and bltzal
52 def II_BCCZALS          : InstrItinClass; // bgezals and bltzals
53 def II_BCCZC            : InstrItinClass; // beqzc, bnezc
54 def II_BITSWAP          : InstrItinClass;
55 def II_CEIL             : InstrItinClass;
56 def II_CFC1             : InstrItinClass;
57 def II_CFC2             : InstrItinClass;
58 def II_CLO              : InstrItinClass;
59 def II_CLZ              : InstrItinClass;
60 def II_CTC1             : InstrItinClass;
61 def II_CTC2             : InstrItinClass;
62 def II_CVT              : InstrItinClass;
63 def II_C_CC_D           : InstrItinClass; // Any c.<cc>.d instruction
64 def II_C_CC_S           : InstrItinClass; // Any c.<cc>.s instruction
65 def II_CMP_CC_D         : InstrItinClass; // Any cmp.<cc>.d instruction
66 def II_CMP_CC_S         : InstrItinClass; // Any cmp.<cc>.s instruction
67 def II_CLASS_D          : InstrItinClass;
68 def II_CLASS_S          : InstrItinClass;
69 def II_DADDIU           : InstrItinClass;
70 def II_DADDU            : InstrItinClass;
71 def II_DADDI            : InstrItinClass;
72 def II_DADD             : InstrItinClass;
73 def II_DAHI             : InstrItinClass;
74 def II_DATI             : InstrItinClass;
75 def II_DAUI             : InstrItinClass;
76 def II_DALIGN           : InstrItinClass;
77 def II_DBITSWAP         : InstrItinClass;
78 def II_DCLO             : InstrItinClass;
79 def II_DCLZ             : InstrItinClass;
80 def II_DDIV             : InstrItinClass;
81 def II_DDIVU            : InstrItinClass;
82 def II_DIV              : InstrItinClass;
83 def II_DIVU             : InstrItinClass;
84 def II_DIV_D            : InstrItinClass;
85 def II_DIV_S            : InstrItinClass;
86 def II_DMFC0            : InstrItinClass;
87 def II_DMT              : InstrItinClass;
88 def II_DMTC0            : InstrItinClass;
89 def II_DMFC1            : InstrItinClass;
90 def II_DMTC1            : InstrItinClass;
91 def II_DMOD             : InstrItinClass;
92 def II_DMODU            : InstrItinClass;
93 def II_DMUH             : InstrItinClass;
94 def II_DMUHU            : InstrItinClass;
95 def II_DMFC2            : InstrItinClass;
96 def II_DMTC2            : InstrItinClass;
97 def II_DMUL             : InstrItinClass;
98 def II_DMULU            : InstrItinClass;
99 def II_DMULT            : InstrItinClass;
100 def II_DMULTU           : InstrItinClass;
101 def II_DROTR            : InstrItinClass;
102 def II_DROTR32          : InstrItinClass;
103 def II_DROTRV           : InstrItinClass;
104 def II_DSLL             : InstrItinClass;
105 def II_DSLL32           : InstrItinClass;
106 def II_DSLLV            : InstrItinClass;
107 def II_DSRA             : InstrItinClass;
108 def II_DSRA32           : InstrItinClass;
109 def II_DSRAV            : InstrItinClass;
110 def II_DSRL             : InstrItinClass;
111 def II_DSRL32           : InstrItinClass;
112 def II_DSRLV            : InstrItinClass;
113 def II_DSBH             : InstrItinClass;
114 def II_DSHD             : InstrItinClass;
115 def II_DSUBU            : InstrItinClass;
116 def II_DSUB             : InstrItinClass;
117 def II_DVPE             : InstrItinClass;
118 def II_EMT              : InstrItinClass;
119 def II_EVPE             : InstrItinClass;
120 def II_EXT              : InstrItinClass; // Any EXT instruction
121 def II_FLOOR            : InstrItinClass;
122 def II_FORK             : InstrItinClass;
123 def II_INS              : InstrItinClass; // Any INS instruction
124 def II_IndirectBranchPseudo : InstrItinClass; // Indirect branch pseudo.
125 def II_J                : InstrItinClass;
126 def II_JAL              : InstrItinClass;
127 def II_JALR             : InstrItinClass;
128 def II_JALR_HB          : InstrItinClass;
129 def II_JALRC            : InstrItinClass;
130 def II_JALRS            : InstrItinClass;
131 def II_JALS             : InstrItinClass;
132 def II_JIC              : InstrItinClass;
133 def II_JIALC            : InstrItinClass;
134 def II_JR               : InstrItinClass;
135 def II_JR_HB            : InstrItinClass;
136 def II_JRADDIUSP        : InstrItinClass;
137 def II_JRC              : InstrItinClass;
138 def II_ReturnPseudo     : InstrItinClass; // Return pseudo.
139 def II_ERET             : InstrItinClass;
140 def II_DERET            : InstrItinClass;
141 def II_ERETNC           : InstrItinClass;
142 def II_EHB              : InstrItinClass;
143 def II_SDBBP            : InstrItinClass;
144 def II_SSNOP            : InstrItinClass;
145 def II_SYSCALL          : InstrItinClass;
146 def II_PAUSE            : InstrItinClass;
147 def II_WAIT             : InstrItinClass;
148 def II_EI               : InstrItinClass;
149 def II_DI               : InstrItinClass;
150 def II_TEQ              : InstrItinClass;
151 def II_TEQI             : InstrItinClass;
152 def II_TGE              : InstrItinClass;
153 def II_TGEI             : InstrItinClass;
154 def II_TGEIU            : InstrItinClass;
155 def II_TGEU             : InstrItinClass;
156 def II_TNE              : InstrItinClass;
157 def II_TNEI             : InstrItinClass;
158 def II_TLT              : InstrItinClass;
159 def II_TLTI             : InstrItinClass;
160 def II_TLTU             : InstrItinClass;
161 def II_TTLTIU           : InstrItinClass;
162 def II_TLBP             : InstrItinClass;
163 def II_TLBR             : InstrItinClass;
164 def II_TLBWI            : InstrItinClass;
165 def II_TLBWR            : InstrItinClass;
166 def II_TRAP             : InstrItinClass;
167 def II_BREAK            : InstrItinClass;
168 def II_SYNC             : InstrItinClass;
169 def II_SYNCI            : InstrItinClass;
170 def II_LB               : InstrItinClass;
171 def II_LBE              : InstrItinClass;
172 def II_LBU              : InstrItinClass;
173 def II_LBUE             : InstrItinClass;
174 def II_LD               : InstrItinClass;
175 def II_LDC1             : InstrItinClass;
176 def II_LDC2             : InstrItinClass;
177 def II_LDC3             : InstrItinClass;
178 def II_LDL              : InstrItinClass;
179 def II_LDR              : InstrItinClass;
180 def II_LDPC             : InstrItinClass;
181 def II_LDXC1            : InstrItinClass;
182 def II_LH               : InstrItinClass;
183 def II_LHE              : InstrItinClass;
184 def II_LHU              : InstrItinClass;
185 def II_LHUE             : InstrItinClass;
186 def II_LL               : InstrItinClass;
187 def II_LI               : InstrItinClass;
188 def II_LLD              : InstrItinClass;
189 def II_LUI              : InstrItinClass;
190 def II_LUXC1            : InstrItinClass;
191 def II_LW               : InstrItinClass;
192 def II_LWE              : InstrItinClass;
193 def II_LWC1             : InstrItinClass;
194 def II_LWC2             : InstrItinClass;
195 def II_LWC3             : InstrItinClass;
196 def II_LWM              : InstrItinClass;
197 def II_LWL              : InstrItinClass;
198 def II_LWLE             : InstrItinClass;
199 def II_LWPC             : InstrItinClass;
200 def II_LWP              : InstrItinClass;
201 def II_LWR              : InstrItinClass;
202 def II_LWRE             : InstrItinClass;
203 def II_LWU              : InstrItinClass;
204 def II_LWUPC            : InstrItinClass;
205 def II_LWXC1            : InstrItinClass;
206 def II_LWXS             : InstrItinClass;
207 def II_LSA              : InstrItinClass;
208 def II_DLSA             : InstrItinClass;
209 def II_MADD             : InstrItinClass;
210 def II_MADDU            : InstrItinClass;
211 def II_MADD_D           : InstrItinClass;
212 def II_MADD_S           : InstrItinClass;
213 def II_MADDF_D          : InstrItinClass;
214 def II_MADDF_S          : InstrItinClass;
215 def II_MAX_D            : InstrItinClass;
216 def II_MAX_S            : InstrItinClass;
217 def II_MAXA_D           : InstrItinClass;
218 def II_MAXA_S           : InstrItinClass;
219 def II_MIN_D            : InstrItinClass;
220 def II_MIN_S            : InstrItinClass;
221 def II_MINA_D           : InstrItinClass;
222 def II_MINA_S           : InstrItinClass;
223 def II_MFC0             : InstrItinClass;
224 def II_MFHC0            : InstrItinClass;
225 def II_MFC1             : InstrItinClass;
226 def II_MFHC1            : InstrItinClass;
227 def II_MFC2             : InstrItinClass;
228 def II_MFHI_MFLO        : InstrItinClass; // mfhi and mflo
229 def II_MOD              : InstrItinClass;
230 def II_MODU             : InstrItinClass;
231 def II_MOVE             : InstrItinClass;
232 def II_MOVF             : InstrItinClass;
233 def II_MOVF_D           : InstrItinClass;
234 def II_MOVF_S           : InstrItinClass;
235 def II_MOVN             : InstrItinClass;
236 def II_MOVN_D           : InstrItinClass;
237 def II_MOVN_S           : InstrItinClass;
238 def II_MOVT             : InstrItinClass;
239 def II_MOVT_D           : InstrItinClass;
240 def II_MOVT_S           : InstrItinClass;
241 def II_MOVZ             : InstrItinClass;
242 def II_MOVZ_D           : InstrItinClass;
243 def II_MOVZ_S           : InstrItinClass;
244 def II_MOV_D            : InstrItinClass;
245 def II_MOV_S            : InstrItinClass;
246 def II_MSUB             : InstrItinClass;
247 def II_MSUBU            : InstrItinClass;
248 def II_MSUB_D           : InstrItinClass;
249 def II_MSUB_S           : InstrItinClass;
250 def II_MSUBF_D          : InstrItinClass;
251 def II_MSUBF_S          : InstrItinClass;
252 def II_MTC0             : InstrItinClass;
253 def II_MTHC0            : InstrItinClass;
254 def II_MTC1             : InstrItinClass;
255 def II_MTHC1            : InstrItinClass;
256 def II_MTC2             : InstrItinClass;
257 def II_MTHI_MTLO        : InstrItinClass; // mthi and mtlo
258 def II_MUL              : InstrItinClass;
259 def II_MUH              : InstrItinClass;
260 def II_MUHU             : InstrItinClass;
261 def II_MULU             : InstrItinClass;
262 def II_MULT             : InstrItinClass;
263 def II_MULTU            : InstrItinClass;
264 def II_MUL_D            : InstrItinClass;
265 def II_MUL_S            : InstrItinClass;
266 def II_NEG              : InstrItinClass;
267 def II_NMADD_D          : InstrItinClass;
268 def II_NMADD_S          : InstrItinClass;
269 def II_NMSUB_D          : InstrItinClass;
270 def II_NMSUB_S          : InstrItinClass;
271 def II_NOR              : InstrItinClass;
272 def II_NOT              : InstrItinClass;
273 def II_OR               : InstrItinClass;
274 def II_ORI              : InstrItinClass;
275 def II_POP              : InstrItinClass;
276 def II_RDHWR            : InstrItinClass;
277 def II_RESTORE          : InstrItinClass;
278 def II_RECIP_S          : InstrItinClass;
279 def II_RECIP_D          : InstrItinClass;
280 def II_RINT_S           : InstrItinClass;
281 def II_RINT_D           : InstrItinClass;
282 def II_ROTR             : InstrItinClass;
283 def II_ROTRV            : InstrItinClass;
284 def II_ROUND            : InstrItinClass;
285 def II_RSQRT_S          : InstrItinClass;
286 def II_RSQRT_D          : InstrItinClass;
287 def II_SAVE             : InstrItinClass;
288 def II_SC               : InstrItinClass;
289 def II_SCD              : InstrItinClass;
290 def II_SB               : InstrItinClass;
291 def II_SBE              : InstrItinClass;
292 def II_SD               : InstrItinClass;
293 def II_SDC1             : InstrItinClass;
294 def II_SDC2             : InstrItinClass;
295 def II_SDC3             : InstrItinClass;
296 def II_SDL              : InstrItinClass;
297 def II_SDR              : InstrItinClass;
298 def II_SDXC1            : InstrItinClass;
299 def II_SEB              : InstrItinClass;
300 def II_SEH              : InstrItinClass;
301 def II_SELCCZ           : InstrItinClass;
302 def II_SELCCZ_D         : InstrItinClass;
303 def II_SELCCZ_S         : InstrItinClass;
304 def II_SEQ_SNE          : InstrItinClass; // seq and sne
305 def II_SEQI_SNEI        : InstrItinClass; // seqi and snei
306 def II_SH               : InstrItinClass;
307 def II_SHE              : InstrItinClass;
308 def II_SLL              : InstrItinClass;
309 def II_SLLV             : InstrItinClass;
310 def II_SLTI_SLTIU       : InstrItinClass; // slti and sltiu
311 def II_SLT_SLTU         : InstrItinClass; // slt and sltu
312 def II_SQRT_D           : InstrItinClass;
313 def II_SQRT_S           : InstrItinClass;
314 def II_SEL_D            : InstrItinClass;
315 def II_SEL_S            : InstrItinClass;
316 def II_SRA              : InstrItinClass;
317 def II_SRAV             : InstrItinClass;
318 def II_SRL              : InstrItinClass;
319 def II_SRLV             : InstrItinClass;
320 def II_SUB              : InstrItinClass;
321 def II_SUBU             : InstrItinClass;
322 def II_SUB_D            : InstrItinClass;
323 def II_SUB_S            : InstrItinClass;
324 def II_SUXC1            : InstrItinClass;
325 def II_SW               : InstrItinClass;
326 def II_SWE              : InstrItinClass;
327 def II_SWC1             : InstrItinClass;
328 def II_SWC2             : InstrItinClass;
329 def II_SWC3             : InstrItinClass;
330 def II_SWL              : InstrItinClass;
331 def II_SWLE             : InstrItinClass;
332 def II_SWM              : InstrItinClass;
333 def II_SWP              : InstrItinClass;
334 def II_SWR              : InstrItinClass;
335 def II_SWRE             : InstrItinClass;
336 def II_SWXC1            : InstrItinClass;
337 def II_TRUNC            : InstrItinClass;
338 def II_WSBH             : InstrItinClass;
339 def II_XOR              : InstrItinClass;
340 def II_XORI             : InstrItinClass;
341 def II_CACHE            : InstrItinClass;
342 def II_PREF             : InstrItinClass;
343 def II_CACHEE           : InstrItinClass;
344 def II_PREFE            : InstrItinClass;
345 def II_LLE              : InstrItinClass;
346 def II_SCE              : InstrItinClass;
347 def II_TLBINV           : InstrItinClass;
348 def II_TLBINVF          : InstrItinClass;
349 def II_WRPGPR           : InstrItinClass;
350 def II_RDPGPR           : InstrItinClass;
351 def II_DVP              : InstrItinClass;
352 def II_EVP              : InstrItinClass;
353 def II_YIELD            : InstrItinClass;
354
355 //===----------------------------------------------------------------------===//
356 // Mips Generic instruction itineraries.
357 //===----------------------------------------------------------------------===//
358 def MipsGenericItineraries : ProcessorItineraries<[ALU, IMULDIV], [], [
359   InstrItinData<IIM16Alu           , [InstrStage<1,  [ALU]>]>,
360   InstrItinData<II_ADDI            , [InstrStage<1,  [ALU]>]>,
361   InstrItinData<II_ADDIU           , [InstrStage<1,  [ALU]>]>,
362   InstrItinData<II_ADDIUPC         , [InstrStage<1,  [ALU]>]>,
363   InstrItinData<II_ADD             , [InstrStage<1,  [ALU]>]>,
364   InstrItinData<II_ADDU            , [InstrStage<1,  [ALU]>]>,
365   InstrItinData<II_AUI             , [InstrStage<1,  [ALU]>]>,
366   InstrItinData<II_AND             , [InstrStage<1,  [ALU]>]>,
367   InstrItinData<II_ALUIPC          , [InstrStage<1,  [ALU]>]>,
368   InstrItinData<II_AUIPC           , [InstrStage<1,  [ALU]>]>,
369   InstrItinData<II_ALIGN           , [InstrStage<1,  [ALU]>]>,
370   InstrItinData<II_BADDU           , [InstrStage<1,  [ALU]>]>,
371   InstrItinData<II_BITSWAP         , [InstrStage<1,  [ALU]>]>,
372   InstrItinData<II_SLL             , [InstrStage<1,  [ALU]>]>,
373   InstrItinData<II_SRA             , [InstrStage<1,  [ALU]>]>,
374   InstrItinData<II_SRL             , [InstrStage<1,  [ALU]>]>,
375   InstrItinData<II_ROTR            , [InstrStage<1,  [ALU]>]>,
376   InstrItinData<II_SLLV            , [InstrStage<1,  [ALU]>]>,
377   InstrItinData<II_SRAV            , [InstrStage<1,  [ALU]>]>,
378   InstrItinData<II_SRLV            , [InstrStage<1,  [ALU]>]>,
379   InstrItinData<II_ROTRV           , [InstrStage<1,  [ALU]>]>,
380   InstrItinData<II_CLO             , [InstrStage<1,  [ALU]>]>,
381   InstrItinData<II_CLZ             , [InstrStage<1,  [ALU]>]>,
382   InstrItinData<II_DADDIU          , [InstrStage<1,  [ALU]>]>,
383   InstrItinData<II_DADDU           , [InstrStage<1,  [ALU]>]>,
384   InstrItinData<II_DADDI           , [InstrStage<1,  [ALU]>]>,
385   InstrItinData<II_DADD            , [InstrStage<1,  [ALU]>]>,
386   InstrItinData<II_DALIGN          , [InstrStage<1,  [ALU]>]>,
387   InstrItinData<II_DAHI            , [InstrStage<1,  [ALU]>]>,
388   InstrItinData<II_DATI            , [InstrStage<1,  [ALU]>]>,
389   InstrItinData<II_DAUI            , [InstrStage<1,  [ALU]>]>,
390   InstrItinData<II_DBITSWAP        , [InstrStage<1,  [ALU]>]>,
391   InstrItinData<II_DCLO            , [InstrStage<1,  [ALU]>]>,
392   InstrItinData<II_DCLZ            , [InstrStage<1,  [ALU]>]>,
393   InstrItinData<II_DMOD            , [InstrStage<17, [IMULDIV]>]>,
394   InstrItinData<II_DMODU           , [InstrStage<17, [IMULDIV]>]>,
395   InstrItinData<II_DMT             , [InstrStage<2,  [ALU]>]>,
396   InstrItinData<II_DSLL            , [InstrStage<1,  [ALU]>]>,
397   InstrItinData<II_DSLL32          , [InstrStage<1,  [ALU]>]>,
398   InstrItinData<II_DSRL            , [InstrStage<1,  [ALU]>]>,
399   InstrItinData<II_DSRL32          , [InstrStage<1,  [ALU]>]>,
400   InstrItinData<II_DSRA            , [InstrStage<1,  [ALU]>]>,
401   InstrItinData<II_DSRA32          , [InstrStage<1,  [ALU]>]>,
402   InstrItinData<II_DSLLV           , [InstrStage<1,  [ALU]>]>,
403   InstrItinData<II_DSRLV           , [InstrStage<1,  [ALU]>]>,
404   InstrItinData<II_DSRAV           , [InstrStage<1,  [ALU]>]>,
405   InstrItinData<II_DSUBU           , [InstrStage<1,  [ALU]>]>,
406   InstrItinData<II_DSUB            , [InstrStage<1,  [ALU]>]>,
407   InstrItinData<II_DROTR           , [InstrStage<1,  [ALU]>]>,
408   InstrItinData<II_DROTR32         , [InstrStage<1,  [ALU]>]>,
409   InstrItinData<II_DROTRV          , [InstrStage<1,  [ALU]>]>,
410   InstrItinData<II_DSBH            , [InstrStage<1,  [ALU]>]>,
411   InstrItinData<II_DSHD            , [InstrStage<1,  [ALU]>]>,
412   InstrItinData<II_DCLO            , [InstrStage<1,  [ALU]>]>,
413   InstrItinData<II_DCLZ            , [InstrStage<1,  [ALU]>]>,
414   InstrItinData<II_DVPE            , [InstrStage<2,  [ALU]>]>,
415   InstrItinData<II_EMT             , [InstrStage<2,  [ALU]>]>,
416   InstrItinData<II_EVPE            , [InstrStage<2,  [ALU]>]>,
417   InstrItinData<II_EXT             , [InstrStage<1,  [ALU]>]>,
418   InstrItinData<II_FORK            , [InstrStage<1,  [ALU]>]>,
419   InstrItinData<II_INS             , [InstrStage<1,  [ALU]>]>,
420   InstrItinData<II_LUI             , [InstrStage<1,  [ALU]>]>,
421   InstrItinData<II_MOVE            , [InstrStage<1,  [ALU]>]>,
422   InstrItinData<II_MOVF            , [InstrStage<1,  [ALU]>]>,
423   InstrItinData<II_MOVN            , [InstrStage<1,  [ALU]>]>,
424   InstrItinData<II_MOVN_S          , [InstrStage<1,  [ALU]>]>,
425   InstrItinData<II_MOVN_D          , [InstrStage<1,  [ALU]>]>,
426   InstrItinData<II_MOVT            , [InstrStage<1,  [ALU]>]>,
427   InstrItinData<II_MOVZ            , [InstrStage<1,  [ALU]>]>,
428   InstrItinData<II_NOR             , [InstrStage<1,  [ALU]>]>,
429   InstrItinData<II_NOT             , [InstrStage<1,  [ALU]>]>,
430   InstrItinData<II_OR              , [InstrStage<1,  [ALU]>]>,
431   InstrItinData<II_POP             , [InstrStage<1,  [ALU]>]>,
432   InstrItinData<II_RDHWR           , [InstrStage<1,  [ALU]>]>,
433   InstrItinData<II_SUB             , [InstrStage<1,  [ALU]>]>,
434   InstrItinData<II_SUBU            , [InstrStage<1,  [ALU]>]>,
435   InstrItinData<II_XOR             , [InstrStage<1,  [ALU]>]>,
436   InstrItinData<II_ANDI            , [InstrStage<1,  [ALU]>]>,
437   InstrItinData<II_ORI             , [InstrStage<1,  [ALU]>]>,
438   InstrItinData<II_XORI            , [InstrStage<1,  [ALU]>]>,
439   InstrItinData<II_LB              , [InstrStage<3,  [ALU]>]>,
440   InstrItinData<II_LBE             , [InstrStage<3,  [ALU]>]>,
441   InstrItinData<II_LBU             , [InstrStage<3,  [ALU]>]>,
442   InstrItinData<II_LBUE            , [InstrStage<3,  [ALU]>]>,
443   InstrItinData<II_LH              , [InstrStage<3,  [ALU]>]>,
444   InstrItinData<II_LHU             , [InstrStage<3,  [ALU]>]>,
445   InstrItinData<II_LHUE            , [InstrStage<3,  [ALU]>]>,
446   InstrItinData<II_LW              , [InstrStage<3,  [ALU]>]>,
447   InstrItinData<II_LWM             , [InstrStage<3,  [ALU]>]>,
448   InstrItinData<II_LWP             , [InstrStage<3,  [ALU]>]>,
449   InstrItinData<II_LWPC            , [InstrStage<3,  [ALU]>]>,
450   InstrItinData<II_LWL             , [InstrStage<3,  [ALU]>]>,
451   InstrItinData<II_LWLE            , [InstrStage<3,  [ALU]>]>,
452   InstrItinData<II_LWR             , [InstrStage<3,  [ALU]>]>,
453   InstrItinData<II_LWRE            , [InstrStage<3,  [ALU]>]>,
454   InstrItinData<II_LWUPC           , [InstrStage<3,  [ALU]>]>,
455   InstrItinData<II_LD              , [InstrStage<3,  [ALU]>]>,
456   InstrItinData<II_LDL             , [InstrStage<3,  [ALU]>]>,
457   InstrItinData<II_LDR             , [InstrStage<3,  [ALU]>]>,
458   InstrItinData<II_LDPC            , [InstrStage<3,  [ALU]>]>,
459   InstrItinData<II_LI              , [InstrStage<1,  [ALU]>]>,
460   InstrItinData<II_LL              , [InstrStage<3,  [ALU]>]>,
461   InstrItinData<II_LLD             , [InstrStage<3,  [ALU]>]>,
462   InstrItinData<II_RESTORE         , [InstrStage<3,  [ALU]>]>,
463   InstrItinData<II_SB              , [InstrStage<1,  [ALU]>]>,
464   InstrItinData<II_SH              , [InstrStage<1,  [ALU]>]>,
465   InstrItinData<II_SHE             , [InstrStage<1,  [ALU]>]>,
466   InstrItinData<II_SW              , [InstrStage<1,  [ALU]>]>,
467   InstrItinData<II_SWM             , [InstrStage<1,  [ALU]>]>,
468   InstrItinData<II_SWL             , [InstrStage<1,  [ALU]>]>,
469   InstrItinData<II_SWR             , [InstrStage<1,  [ALU]>]>,
470   InstrItinData<II_SWP             , [InstrStage<1,  [ALU]>]>,
471   InstrItinData<II_SDL             , [InstrStage<1,  [ALU]>]>,
472   InstrItinData<II_SDR             , [InstrStage<1,  [ALU]>]>,
473   InstrItinData<II_SD              , [InstrStage<1,  [ALU]>]>,
474   InstrItinData<II_SC              , [InstrStage<1,  [ALU]>]>,
475   InstrItinData<II_SCD             , [InstrStage<1,  [ALU]>]>,
476   InstrItinData<II_SAVE            , [InstrStage<1,  [ALU]>]>,
477   InstrItinData<II_SELCCZ_S        , [InstrStage<1,  [ALU]>]>,
478   InstrItinData<II_SELCCZ_D        , [InstrStage<1,  [ALU]>]>,
479   InstrItinData<II_SEQ_SNE         , [InstrStage<1,  [ALU]>]>,
480   InstrItinData<II_SEQI_SNEI       , [InstrStage<1,  [ALU]>]>,
481   InstrItinData<II_SLTI_SLTIU      , [InstrStage<1,  [ALU]>]>,
482   InstrItinData<II_SLT_SLTU        , [InstrStage<1,  [ALU]>]>,
483   InstrItinData<II_B               , [InstrStage<1,  [ALU]>]>,
484   InstrItinData<II_BALC            , [InstrStage<1,  [ALU]>]>,
485   InstrItinData<II_BBIT            , [InstrStage<1,  [ALU]>]>,
486   InstrItinData<II_BC              , [InstrStage<1,  [ALU]>]>,
487   InstrItinData<II_BC1F            , [InstrStage<1,  [ALU]>]>,
488   InstrItinData<II_BC1FL           , [InstrStage<1,  [ALU]>]>,
489   InstrItinData<II_BC1T            , [InstrStage<1,  [ALU]>]>,
490   InstrItinData<II_BC1TL           , [InstrStage<1,  [ALU]>]>,
491   InstrItinData<II_BC1CCZ          , [InstrStage<1,  [ALU]>]>,
492   InstrItinData<II_BC2CCZ          , [InstrStage<1,  [ALU]>]>,
493   InstrItinData<II_BCC             , [InstrStage<1,  [ALU]>]>,
494   InstrItinData<II_BCCC            , [InstrStage<1,  [ALU]>]>,
495   InstrItinData<II_BCCZ            , [InstrStage<1,  [ALU]>]>,
496   InstrItinData<II_BCCZAL          , [InstrStage<1,  [ALU]>]>,
497   InstrItinData<II_BCCZALS         , [InstrStage<1,  [ALU]>]>,
498   InstrItinData<II_BCCZC           , [InstrStage<1,  [ALU]>]>,
499   InstrItinData<II_CLASS_D         , [InstrStage<1,  [ALU]>]>,
500   InstrItinData<II_CLASS_S         , [InstrStage<1,  [ALU]>]>,
501   InstrItinData<II_IndirectBranchPseudo, [InstrStage<1,  [ALU]>]>,
502   InstrItinData<II_J               , [InstrStage<1,  [ALU]>]>,
503   InstrItinData<II_JAL             , [InstrStage<1,  [ALU]>]>,
504   InstrItinData<II_JALR            , [InstrStage<1,  [ALU]>]>,
505   InstrItinData<II_JALR_HB         , [InstrStage<1,  [ALU]>]>,
506   InstrItinData<II_JALRC           , [InstrStage<1,  [ALU]>]>,
507   InstrItinData<II_JALRS           , [InstrStage<1,  [ALU]>]>,
508   InstrItinData<II_JALS            , [InstrStage<1,  [ALU]>]>,
509   InstrItinData<II_JIC             , [InstrStage<1,  [ALU]>]>,
510   InstrItinData<II_JIALC           , [InstrStage<1,  [ALU]>]>,
511   InstrItinData<II_JR              , [InstrStage<1,  [ALU]>]>,
512   InstrItinData<II_JR_HB           , [InstrStage<1,  [ALU]>]>,
513   InstrItinData<II_JRADDIUSP       , [InstrStage<1,  [ALU]>]>,
514   InstrItinData<II_JRC             , [InstrStage<1,  [ALU]>]>,
515   InstrItinData<II_ReturnPseudo    , [InstrStage<1,  [ALU]>]>,
516   InstrItinData<IIPseudo           , [InstrStage<1,  [ALU]>]>,
517   InstrItinData<II_DMUH            , [InstrStage<17, [IMULDIV]>]>,
518   InstrItinData<II_DMUHU           , [InstrStage<17, [IMULDIV]>]>,
519   InstrItinData<II_ERET            , [InstrStage<1,  [ALU]>]>,
520   InstrItinData<II_DERET           , [InstrStage<1,  [ALU]>]>,
521   InstrItinData<II_ERETNC          , [InstrStage<1,  [ALU]>]>,
522   InstrItinData<II_EHB             , [InstrStage<1,  [ALU]>]>,
523   InstrItinData<II_SDBBP           , [InstrStage<1,  [ALU]>]>,
524   InstrItinData<II_SSNOP           , [InstrStage<1,  [ALU]>]>,
525   InstrItinData<II_SYSCALL         , [InstrStage<1,  [ALU]>]>,
526   InstrItinData<II_PAUSE           , [InstrStage<1,  [ALU]>]>,
527   InstrItinData<II_WAIT            , [InstrStage<1,  [ALU]>]>,
528   InstrItinData<II_EI              , [InstrStage<1,  [ALU]>]>,
529   InstrItinData<II_DI              , [InstrStage<1,  [ALU]>]>,
530   InstrItinData<II_TEQ             , [InstrStage<1,  [ALU]>]>,
531   InstrItinData<II_TEQI            , [InstrStage<1,  [ALU]>]>,
532   InstrItinData<II_TGE             , [InstrStage<1,  [ALU]>]>,
533   InstrItinData<II_TGEI            , [InstrStage<1,  [ALU]>]>,
534   InstrItinData<II_TGEIU           , [InstrStage<1,  [ALU]>]>,
535   InstrItinData<II_TGEU            , [InstrStage<1,  [ALU]>]>,
536   InstrItinData<II_TNE             , [InstrStage<1,  [ALU]>]>,
537   InstrItinData<II_TNEI            , [InstrStage<1,  [ALU]>]>,
538   InstrItinData<II_TLT             , [InstrStage<1,  [ALU]>]>,
539   InstrItinData<II_TLTI            , [InstrStage<1,  [ALU]>]>,
540   InstrItinData<II_TLTU            , [InstrStage<1,  [ALU]>]>,
541   InstrItinData<II_TTLTIU          , [InstrStage<1,  [ALU]>]>,
542   InstrItinData<II_TLBP            , [InstrStage<1,  [ALU]>]>,
543   InstrItinData<II_TLBR            , [InstrStage<1,  [ALU]>]>,
544   InstrItinData<II_TLBWI           , [InstrStage<1,  [ALU]>]>,
545   InstrItinData<II_TLBWR           , [InstrStage<1,  [ALU]>]>,
546   InstrItinData<II_TRAP            , [InstrStage<1,  [ALU]>]>,
547   InstrItinData<II_BREAK           , [InstrStage<1,  [ALU]>]>,
548   InstrItinData<II_SYNC            , [InstrStage<1,  [ALU]>]>,
549   InstrItinData<II_SYNCI           , [InstrStage<1,  [ALU]>]>,
550   InstrItinData<II_DMUL            , [InstrStage<17, [IMULDIV]>]>,
551   InstrItinData<II_DMULT           , [InstrStage<17, [IMULDIV]>]>,
552   InstrItinData<II_DMULTU          , [InstrStage<17, [IMULDIV]>]>,
553   InstrItinData<II_DMULU           , [InstrStage<17, [IMULDIV]>]>,
554   InstrItinData<II_MADD            , [InstrStage<17, [IMULDIV]>]>,
555   InstrItinData<II_MADDU           , [InstrStage<17, [IMULDIV]>]>,
556   InstrItinData<II_MFHI_MFLO       , [InstrStage<1,  [IMULDIV]>]>,
557   InstrItinData<II_MAX_D           , [InstrStage<4,  [ALU]>]>,
558   InstrItinData<II_MAX_S           , [InstrStage<4,  [ALU]>]>,
559   InstrItinData<II_MAXA_D          , [InstrStage<4,  [ALU]>]>,
560   InstrItinData<II_MAXA_S          , [InstrStage<4,  [ALU]>]>,
561   InstrItinData<II_MIN_S           , [InstrStage<4,  [ALU]>]>,
562   InstrItinData<II_MIN_D           , [InstrStage<4,  [ALU]>]>,
563   InstrItinData<II_MINA_S          , [InstrStage<4,  [ALU]>]>,
564   InstrItinData<II_MINA_D          , [InstrStage<4,  [ALU]>]>,
565   InstrItinData<II_MOD             , [InstrStage<38, [IMULDIV]>]>,
566   InstrItinData<II_MODU            , [InstrStage<38, [IMULDIV]>]>,
567   InstrItinData<II_MSUB            , [InstrStage<17, [IMULDIV]>]>,
568   InstrItinData<II_MSUBU           , [InstrStage<17, [IMULDIV]>]>,
569   InstrItinData<II_MTHI_MTLO       , [InstrStage<1,  [IMULDIV]>]>,
570   InstrItinData<II_MUH             , [InstrStage<17, [IMULDIV]>]>,
571   InstrItinData<II_MUHU            , [InstrStage<17, [IMULDIV]>]>,
572   InstrItinData<II_MUL             , [InstrStage<17, [IMULDIV]>]>,
573   InstrItinData<II_MULT            , [InstrStage<17, [IMULDIV]>]>,
574   InstrItinData<II_MULTU           , [InstrStage<17, [IMULDIV]>]>,
575   InstrItinData<II_MULU            , [InstrStage<17, [IMULDIV]>]>,
576   InstrItinData<II_MSUB            , [InstrStage<17, [IMULDIV]>]>,
577   InstrItinData<II_MSUBU           , [InstrStage<17, [IMULDIV]>]>,
578   InstrItinData<II_DIV             , [InstrStage<38, [IMULDIV]>]>,
579   InstrItinData<II_DIVU            , [InstrStage<38, [IMULDIV]>]>,
580   InstrItinData<II_DDIV            , [InstrStage<38, [IMULDIV]>]>,
581   InstrItinData<II_DDIVU           , [InstrStage<38, [IMULDIV]>]>,
582   InstrItinData<II_CEIL            , [InstrStage<1,  [ALU]>]>,
583   InstrItinData<II_CVT             , [InstrStage<1,  [ALU]>]>,
584   InstrItinData<II_ABS             , [InstrStage<1,  [ALU]>]>,
585   InstrItinData<II_FLOOR           , [InstrStage<1,  [ALU]>]>,
586   InstrItinData<II_NEG             , [InstrStage<1,  [ALU]>]>,
587   InstrItinData<II_ROUND           , [InstrStage<1,  [ALU]>]>,
588   InstrItinData<II_TRUNC           , [InstrStage<1,  [ALU]>]>,
589   InstrItinData<II_MOV_D           , [InstrStage<2,  [ALU]>]>,
590   InstrItinData<II_MOV_S           , [InstrStage<2,  [ALU]>]>,
591   InstrItinData<II_CFC1            , [InstrStage<2,  [ALU]>]>,
592   InstrItinData<II_CTC1            , [InstrStage<2,  [ALU]>]>,
593   InstrItinData<II_CFC2            , [InstrStage<2,  [ALU]>]>,
594   InstrItinData<II_CTC2            , [InstrStage<2,  [ALU]>]>,
595   InstrItinData<II_MOVF_D          , [InstrStage<2,  [ALU]>]>,
596   InstrItinData<II_MOVF_S          , [InstrStage<2,  [ALU]>]>,
597   InstrItinData<II_MOVT_D          , [InstrStage<2,  [ALU]>]>,
598   InstrItinData<II_MOVT_S          , [InstrStage<2,  [ALU]>]>,
599   InstrItinData<II_MOVZ_D          , [InstrStage<2,  [ALU]>]>,
600   InstrItinData<II_MOVZ_S          , [InstrStage<2,  [ALU]>]>,
601   InstrItinData<II_C_CC_S          , [InstrStage<3,  [ALU]>]>,
602   InstrItinData<II_C_CC_D          , [InstrStage<3,  [ALU]>]>,
603   InstrItinData<II_CMP_CC_S        , [InstrStage<3,  [ALU]>]>,
604   InstrItinData<II_CMP_CC_D        , [InstrStage<3,  [ALU]>]>,
605   InstrItinData<II_ADD_D           , [InstrStage<4,  [ALU]>]>,
606   InstrItinData<II_ADD_S           , [InstrStage<4,  [ALU]>]>,
607   InstrItinData<II_SUB_D           , [InstrStage<4,  [ALU]>]>,
608   InstrItinData<II_SUB_S           , [InstrStage<4,  [ALU]>]>,
609   InstrItinData<II_MUL_S           , [InstrStage<7,  [ALU]>]>,
610   InstrItinData<II_MADD_S          , [InstrStage<7,  [ALU]>]>,
611   InstrItinData<II_MADDF_S         , [InstrStage<7,  [ALU]>]>,
612   InstrItinData<II_MSUB_S          , [InstrStage<7,  [ALU]>]>,
613   InstrItinData<II_MSUBF_S         , [InstrStage<7,  [ALU]>]>,
614   InstrItinData<II_NMADD_S         , [InstrStage<7,  [ALU]>]>,
615   InstrItinData<II_NMSUB_S         , [InstrStage<7,  [ALU]>]>,
616   InstrItinData<II_MUL_D           , [InstrStage<8,  [ALU]>]>,
617   InstrItinData<II_MADD_D          , [InstrStage<8,  [ALU]>]>,
618   InstrItinData<II_MADDF_D         , [InstrStage<8,  [ALU]>]>,
619   InstrItinData<II_MSUB_D          , [InstrStage<8,  [ALU]>]>,
620   InstrItinData<II_MSUBF_D         , [InstrStage<8,  [ALU]>]>,
621   InstrItinData<II_NMADD_D         , [InstrStage<8,  [ALU]>]>,
622   InstrItinData<II_NMSUB_D         , [InstrStage<8,  [ALU]>]>,
623   InstrItinData<II_DIV_S           , [InstrStage<23, [ALU]>]>,
624   InstrItinData<II_DIV_D           , [InstrStage<36, [ALU]>]>,
625   InstrItinData<II_RECIP_D         , [InstrStage<25, [ALU]>]>,
626   InstrItinData<II_RECIP_S         , [InstrStage<13, [ALU]>]>,
627   InstrItinData<II_RSQRT_D         , [InstrStage<29, [ALU]>]>,
628   InstrItinData<II_RSQRT_S         , [InstrStage<14, [ALU]>]>,
629   InstrItinData<II_RINT_D          , [InstrStage<1,  [ALU]>]>,
630   InstrItinData<II_RINT_S          , [InstrStage<1,  [ALU]>]>,
631   InstrItinData<II_SQRT_S          , [InstrStage<54, [ALU]>]>,
632   InstrItinData<II_SQRT_D          , [InstrStage<12, [ALU]>]>,
633   InstrItinData<II_SEL_D           , [InstrStage<1,  [ALU]>]>,
634   InstrItinData<II_SEL_S           , [InstrStage<1,  [ALU]>]>,
635   InstrItinData<II_WSBH            , [InstrStage<1,  [ALU]>]>,
636   InstrItinData<II_LSA             , [InstrStage<1,  [ALU]>]>,
637   InstrItinData<II_DLSA            , [InstrStage<1,  [ALU]>]>,
638   InstrItinData<II_LDC1            , [InstrStage<3,  [ALU]>]>,
639   InstrItinData<II_LDC2            , [InstrStage<3,  [ALU]>]>,
640   InstrItinData<II_LDC3            , [InstrStage<3,  [ALU]>]>,
641   InstrItinData<II_LWC1            , [InstrStage<3,  [ALU]>]>,
642   InstrItinData<II_LWC2            , [InstrStage<3,  [ALU]>]>,
643   InstrItinData<II_LWC3            , [InstrStage<3,  [ALU]>]>,
644   InstrItinData<II_LDXC1           , [InstrStage<3,  [ALU]>]>,
645   InstrItinData<II_LWXC1           , [InstrStage<3,  [ALU]>]>,
646   InstrItinData<II_LUXC1           , [InstrStage<3,  [ALU]>]>,
647   InstrItinData<II_LWXS            , [InstrStage<3,  [ALU]>]>,
648   InstrItinData<II_SDC1            , [InstrStage<1,  [ALU]>]>,
649   InstrItinData<II_SDC2            , [InstrStage<1,  [ALU]>]>,
650   InstrItinData<II_SDC3            , [InstrStage<1,  [ALU]>]>,
651   InstrItinData<II_SWC1            , [InstrStage<1,  [ALU]>]>,
652   InstrItinData<II_SWC2            , [InstrStage<1,  [ALU]>]>,
653   InstrItinData<II_SWC3            , [InstrStage<1,  [ALU]>]>,
654   InstrItinData<II_SDXC1           , [InstrStage<1,  [ALU]>]>,
655   InstrItinData<II_SWXC1           , [InstrStage<1,  [ALU]>]>,
656   InstrItinData<II_SUXC1           , [InstrStage<1,  [ALU]>]>,
657   InstrItinData<II_DMFC0           , [InstrStage<2,  [ALU]>]>,
658   InstrItinData<II_DMFC1           , [InstrStage<2,  [ALU]>]>,
659   InstrItinData<II_DMFC2           , [InstrStage<2,  [ALU]>]>,
660   InstrItinData<II_DMTC0           , [InstrStage<2,  [ALU]>]>,
661   InstrItinData<II_DMTC1           , [InstrStage<2,  [ALU]>]>,
662   InstrItinData<II_DMTC2           , [InstrStage<2,  [ALU]>]>,
663   InstrItinData<II_MFC0            , [InstrStage<2,  [ALU]>]>,
664   InstrItinData<II_MFHC0           , [InstrStage<2,  [ALU]>]>,
665   InstrItinData<II_MFC1            , [InstrStage<2,  [ALU]>]>,
666   InstrItinData<II_MFC2            , [InstrStage<2,  [ALU]>]>,
667   InstrItinData<II_MTC0            , [InstrStage<2,  [ALU]>]>,
668   InstrItinData<II_MTHC0           , [InstrStage<2,  [ALU]>]>,
669   InstrItinData<II_MTC1            , [InstrStage<2,  [ALU]>]>,
670   InstrItinData<II_MTC2            , [InstrStage<2,  [ALU]>]>,
671   InstrItinData<II_MFHC1           , [InstrStage<2,  [ALU]>]>,
672   InstrItinData<II_MTHC1           , [InstrStage<2,  [ALU]>]>,
673   InstrItinData<II_CACHE           , [InstrStage<1,  [ALU]>]>,
674   InstrItinData<II_PREF            , [InstrStage<1,  [ALU]>]>,
675   InstrItinData<II_CACHEE          , [InstrStage<1,  [ALU]>]>,
676   InstrItinData<II_PREFE           , [InstrStage<1,  [ALU]>]>,
677   InstrItinData<II_TLBINV          , [InstrStage<1,  [ALU]>]>,
678   InstrItinData<II_TLBINVF         , [InstrStage<1,  [ALU]>]>,
679   InstrItinData<II_LLE             , [InstrStage<3,  [ALU]>]>,
680   InstrItinData<II_SCE             , [InstrStage<1,  [ALU]>]>,
681   InstrItinData<II_WRPGPR          , [InstrStage<1,  [ALU]>]>,
682   InstrItinData<II_RDPGPR          , [InstrStage<1,  [ALU]>]>,
683   InstrItinData<II_DVP             , [InstrStage<1,  [ALU]>]>,
684   InstrItinData<II_EVP             , [InstrStage<1,  [ALU]>]>,
685   InstrItinData<II_YIELD           , [InstrStage<5,  [ALU]>]>
686 ]>;