1 //===-- PPCSchedule440.td - PPC 440 Scheduling Definitions -*- tablegen -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
11 // PowerPC 440x6 Embedded Processor Core User's Manual.
12 // IBM (as updated in) 2010.
14 // The basic PPC 440 does not include a floating-point unit; the pipeline
15 // timings here are constructed to match the FP2 unit shipped with the
16 // PPC-440- and PPC-450-based Blue Gene (L and P) supercomputers.
18 // S. Chatterjee, et al. Design and exploitation of a high-performance
19 // SIMD floating-point unit for Blue Gene/L.
20 // IBM J. Res. & Dev. 49 (2/3) March/May 2005.
22 // Carlos Sosa and Brant Knudson. IBM System Blue Gene Solution:
23 // Blue Gene/P Application Development.
24 // IBM (as updated in) 2009.
26 //===----------------------------------------------------------------------===//
27 // Functional units on the PowerPC 440/450 chip sets
29 def IFTH1 : FuncUnit; // Fetch unit 1
30 def IFTH2 : FuncUnit; // Fetch unit 2
31 def PDCD1 : FuncUnit; // Decode unit 1
32 def PDCD2 : FuncUnit; // Decode unit 2
33 def DISS1 : FuncUnit; // Issue unit 1
34 def DISS2 : FuncUnit; // Issue unit 2
35 def LRACC : FuncUnit; // Register access and dispatch for
36 // the simple integer (J-pipe) and
37 // load/store (L-pipe) pipelines
38 def IRACC : FuncUnit; // Register access and dispatch for
39 // the complex integer (I-pipe) pipeline
40 def FRACC : FuncUnit; // Register access and dispatch for
41 // the floating-point execution (F-pipe) pipeline
42 def IEXE1 : FuncUnit; // Execution stage 1 for the I pipeline
43 def IEXE2 : FuncUnit; // Execution stage 2 for the I pipeline
44 def IWB : FuncUnit; // Write-back unit for the I pipeline
45 def JEXE1 : FuncUnit; // Execution stage 1 for the J pipeline
46 def JEXE2 : FuncUnit; // Execution stage 2 for the J pipeline
47 def JWB : FuncUnit; // Write-back unit for the J pipeline
48 def AGEN : FuncUnit; // Address generation for the L pipeline
49 def CRD : FuncUnit; // D-cache access for the L pipeline
50 def LWB : FuncUnit; // Write-back unit for the L pipeline
51 def FEXE1 : FuncUnit; // Execution stage 1 for the F pipeline
52 def FEXE2 : FuncUnit; // Execution stage 2 for the F pipeline
53 def FEXE3 : FuncUnit; // Execution stage 3 for the F pipeline
54 def FEXE4 : FuncUnit; // Execution stage 4 for the F pipeline
55 def FEXE5 : FuncUnit; // Execution stage 5 for the F pipeline
56 def FEXE6 : FuncUnit; // Execution stage 6 for the F pipeline
57 def FWB : FuncUnit; // Write-back unit for the F pipeline
59 def LWARX_Hold : FuncUnit; // This is a pseudo-unit which is used
60 // to make sure that no lwarx/stwcx.
61 // instructions are issued while another
62 // lwarx/stwcx. is in the L pipe.
64 def GPR_Bypass : Bypass; // The bypass for general-purpose regs.
65 def FPR_Bypass : Bypass; // The bypass for floating-point regs.
68 // Instructions are held in the FRACC, LRACC and IRACC pipeline
69 // stages until their source operands become ready. Exceptions:
70 // - Store instructions will hold in the AGEN stage
71 // - The integer multiply-accumulate instruction will hold in
74 // For most I-pipe operations, the result is available at the end of
75 // the IEXE1 stage. Operations such as multiply and divide must
76 // continue to execute in IEXE2 and IWB. Divide resides in IWB for
77 // 33 cycles (multiply also calculates its result in IWB). For all
78 // J-pipe instructions, the result is available
79 // at the end of the JEXE1 stage. Loads have a 3-cycle latency
80 // (data is not available until after the LWB stage).
82 // The L1 cache hit latency is four cycles for floating point loads
83 // and three cycles for integer loads.
85 // The stwcx. instruction requires both the LRACC and the IRACC
86 // dispatch stages. It must be issued from DISS0.
88 // All lwarx/stwcx. instructions hold in LRACC if another
89 // uncommitted lwarx/stwcx. is in AGEN, CRD, or LWB.
91 // msync (a.k.a. sync) and mbar will hold in LWB until all load/store
92 // resources are empty. AGEN and CRD are held empty until the msync/mbar
95 // Most floating-point instructions, computational and move,
96 // have a 5-cycle latency. Divide takes longer (30 cycles). Instructions that
97 // update the CR take 2 cycles. Stores take 3 cycles and, as mentioned above,
98 // loads take 4 cycles (for L1 hit).
101 // This file defines the itinerary class data for the PPC 440 processor.
103 //===----------------------------------------------------------------------===//
106 def PPC440Itineraries : ProcessorItineraries<
107 [IFTH1, IFTH2, PDCD1, PDCD2, DISS1, DISS2, FRACC,
108 IRACC, IEXE1, IEXE2, IWB, LRACC, JEXE1, JEXE2, JWB, AGEN, CRD, LWB,
109 FEXE1, FEXE2, FEXE3, FEXE4, FEXE5, FEXE6, FWB, LWARX_Hold],
110 [GPR_Bypass, FPR_Bypass], [
111 InstrItinData<IntSimple , [InstrStage<1, [IFTH1, IFTH2]>,
112 InstrStage<1, [PDCD1, PDCD2]>,
113 InstrStage<1, [DISS1, DISS2]>,
114 InstrStage<1, [IRACC, LRACC]>,
115 InstrStage<1, [IEXE1, JEXE1]>,
116 InstrStage<1, [IEXE2, JEXE2]>,
117 InstrStage<1, [IWB, JWB]>],
119 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
120 InstrItinData<IntGeneral , [InstrStage<1, [IFTH1, IFTH2]>,
121 InstrStage<1, [PDCD1, PDCD2]>,
122 InstrStage<1, [DISS1, DISS2]>,
123 InstrStage<1, [IRACC, LRACC]>,
124 InstrStage<1, [IEXE1, JEXE1]>,
125 InstrStage<1, [IEXE2, JEXE2]>,
126 InstrStage<1, [IWB, JWB]>],
128 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
129 InstrItinData<IntCompare , [InstrStage<1, [IFTH1, IFTH2]>,
130 InstrStage<1, [PDCD1, PDCD2]>,
131 InstrStage<1, [DISS1, DISS2]>,
132 InstrStage<1, [IRACC, LRACC]>,
133 InstrStage<1, [IEXE1, JEXE1]>,
134 InstrStage<1, [IEXE2, JEXE2]>,
135 InstrStage<1, [IWB, JWB]>],
137 [NoBypass, GPR_Bypass, GPR_Bypass]>,
138 InstrItinData<IntDivW , [InstrStage<1, [IFTH1, IFTH2]>,
139 InstrStage<1, [PDCD1, PDCD2]>,
140 InstrStage<1, [DISS1, DISS2]>,
141 InstrStage<1, [IRACC]>,
142 InstrStage<1, [IEXE1]>,
143 InstrStage<1, [IEXE2]>,
144 InstrStage<33, [IWB]>],
146 [NoBypass, GPR_Bypass, GPR_Bypass]>,
147 InstrItinData<IntMFFS , [InstrStage<1, [IFTH1, IFTH2]>,
148 InstrStage<1, [PDCD1, PDCD2]>,
149 InstrStage<1, [DISS1, DISS2]>,
150 InstrStage<1, [IRACC]>,
151 InstrStage<1, [IEXE1]>,
152 InstrStage<1, [IEXE2]>,
153 InstrStage<1, [IWB]>],
155 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
156 InstrItinData<IntMTFSB0 , [InstrStage<1, [IFTH1, IFTH2]>,
157 InstrStage<1, [PDCD1, PDCD2]>,
158 InstrStage<1, [DISS1, DISS2]>,
159 InstrStage<1, [IRACC]>,
160 InstrStage<1, [IEXE1]>,
161 InstrStage<1, [IEXE2]>,
162 InstrStage<1, [IWB]>],
164 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
165 InstrItinData<IntMulHW , [InstrStage<1, [IFTH1, IFTH2]>,
166 InstrStage<1, [PDCD1, PDCD2]>,
167 InstrStage<1, [DISS1, DISS2]>,
168 InstrStage<1, [IRACC]>,
169 InstrStage<1, [IEXE1]>,
170 InstrStage<1, [IEXE2]>,
171 InstrStage<1, [IWB]>],
173 [NoBypass, GPR_Bypass, GPR_Bypass]>,
174 InstrItinData<IntMulHWU , [InstrStage<1, [IFTH1, IFTH2]>,
175 InstrStage<1, [PDCD1, PDCD2]>,
176 InstrStage<1, [DISS1, DISS2]>,
177 InstrStage<1, [IRACC]>,
178 InstrStage<1, [IEXE1]>,
179 InstrStage<1, [IEXE2]>,
180 InstrStage<1, [IWB]>],
182 [NoBypass, GPR_Bypass, GPR_Bypass]>,
183 InstrItinData<IntMulLI , [InstrStage<1, [IFTH1, IFTH2]>,
184 InstrStage<1, [PDCD1, PDCD2]>,
185 InstrStage<1, [DISS1, DISS2]>,
186 InstrStage<1, [IRACC]>,
187 InstrStage<1, [IEXE1]>,
188 InstrStage<1, [IEXE2]>,
189 InstrStage<1, [IWB]>],
191 [NoBypass, GPR_Bypass, GPR_Bypass]>,
192 InstrItinData<IntRotate , [InstrStage<1, [IFTH1, IFTH2]>,
193 InstrStage<1, [PDCD1, PDCD2]>,
194 InstrStage<1, [DISS1, DISS2]>,
195 InstrStage<1, [IRACC, LRACC]>,
196 InstrStage<1, [IEXE1, JEXE1]>,
197 InstrStage<1, [IEXE2, JEXE2]>,
198 InstrStage<1, [IWB, JWB]>],
200 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
201 InstrItinData<IntShift , [InstrStage<1, [IFTH1, IFTH2]>,
202 InstrStage<1, [PDCD1, PDCD2]>,
203 InstrStage<1, [DISS1, DISS2]>,
204 InstrStage<1, [IRACC, LRACC]>,
205 InstrStage<1, [IEXE1, JEXE1]>,
206 InstrStage<1, [IEXE2, JEXE2]>,
207 InstrStage<1, [IWB, JWB]>],
209 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
210 InstrItinData<IntTrapW , [InstrStage<1, [IFTH1, IFTH2]>,
211 InstrStage<1, [PDCD1, PDCD2]>,
212 InstrStage<1, [DISS1, DISS2]>,
213 InstrStage<1, [IRACC]>,
214 InstrStage<1, [IEXE1]>,
215 InstrStage<1, [IEXE2]>,
216 InstrStage<1, [IWB]>],
218 [GPR_Bypass, GPR_Bypass]>,
219 InstrItinData<BrB , [InstrStage<1, [IFTH1, IFTH2]>,
220 InstrStage<1, [PDCD1, PDCD2]>,
221 InstrStage<1, [DISS1, DISS2]>,
222 InstrStage<1, [IRACC]>,
223 InstrStage<1, [IEXE1]>,
224 InstrStage<1, [IEXE2]>,
225 InstrStage<1, [IWB]>],
227 [NoBypass, GPR_Bypass]>,
228 InstrItinData<BrCR , [InstrStage<1, [IFTH1, IFTH2]>,
229 InstrStage<1, [PDCD1, PDCD2]>,
230 InstrStage<1, [DISS1, DISS2]>,
231 InstrStage<1, [IRACC]>,
232 InstrStage<1, [IEXE1]>,
233 InstrStage<1, [IEXE2]>,
234 InstrStage<1, [IWB]>],
236 [NoBypass, GPR_Bypass, GPR_Bypass]>,
237 InstrItinData<BrMCR , [InstrStage<1, [IFTH1, IFTH2]>,
238 InstrStage<1, [PDCD1, PDCD2]>,
239 InstrStage<1, [DISS1, DISS2]>,
240 InstrStage<1, [IRACC]>,
241 InstrStage<1, [IEXE1]>,
242 InstrStage<1, [IEXE2]>,
243 InstrStage<1, [IWB]>],
245 [NoBypass, GPR_Bypass, GPR_Bypass]>,
246 InstrItinData<BrMCRX , [InstrStage<1, [IFTH1, IFTH2]>,
247 InstrStage<1, [PDCD1, PDCD2]>,
248 InstrStage<1, [DISS1, DISS2]>,
249 InstrStage<1, [IRACC]>,
250 InstrStage<1, [IEXE1]>,
251 InstrStage<1, [IEXE2]>,
252 InstrStage<1, [IWB]>],
254 [NoBypass, GPR_Bypass, GPR_Bypass]>,
255 InstrItinData<LdStDCBA , [InstrStage<1, [IFTH1, IFTH2]>,
256 InstrStage<1, [PDCD1, PDCD2]>,
257 InstrStage<1, [DISS1, DISS2]>,
258 InstrStage<1, [LRACC]>,
259 InstrStage<1, [AGEN]>,
260 InstrStage<1, [CRD]>,
261 InstrStage<1, [LWB]>],
263 [NoBypass, GPR_Bypass]>,
264 InstrItinData<LdStDCBF , [InstrStage<1, [IFTH1, IFTH2]>,
265 InstrStage<1, [PDCD1, PDCD2]>,
266 InstrStage<1, [DISS1, DISS2]>,
267 InstrStage<1, [LRACC]>,
268 InstrStage<1, [AGEN]>,
269 InstrStage<1, [CRD]>,
270 InstrStage<1, [LWB]>],
272 [NoBypass, GPR_Bypass]>,
273 InstrItinData<LdStDCBI , [InstrStage<1, [IFTH1, IFTH2]>,
274 InstrStage<1, [PDCD1, PDCD2]>,
275 InstrStage<1, [DISS1, DISS2]>,
276 InstrStage<1, [LRACC]>,
277 InstrStage<1, [AGEN]>,
278 InstrStage<1, [CRD]>,
279 InstrStage<1, [LWB]>],
281 [NoBypass, GPR_Bypass]>,
282 InstrItinData<LdStLoad , [InstrStage<1, [IFTH1, IFTH2]>,
283 InstrStage<1, [PDCD1, PDCD2]>,
284 InstrStage<1, [DISS1, DISS2]>,
285 InstrStage<1, [LRACC]>,
286 InstrStage<1, [AGEN]>,
287 InstrStage<1, [CRD]>,
288 InstrStage<2, [LWB]>],
290 [GPR_Bypass, GPR_Bypass]>,
291 InstrItinData<LdStLoadUpd , [InstrStage<1, [IFTH1, IFTH2]>,
292 InstrStage<1, [PDCD1, PDCD2]>,
293 InstrStage<1, [DISS1, DISS2]>,
294 InstrStage<1, [LRACC]>,
295 InstrStage<1, [AGEN]>,
296 InstrStage<1, [CRD]>,
297 InstrStage<2, [LWB]>],
299 [GPR_Bypass, GPR_Bypass]>,
300 InstrItinData<LdStStore , [InstrStage<1, [IFTH1, IFTH2]>,
301 InstrStage<1, [PDCD1, PDCD2]>,
302 InstrStage<1, [DISS1, DISS2]>,
303 InstrStage<1, [LRACC]>,
304 InstrStage<1, [AGEN]>,
305 InstrStage<1, [CRD]>,
306 InstrStage<2, [LWB]>],
308 [NoBypass, GPR_Bypass]>,
309 InstrItinData<LdStStoreUpd, [InstrStage<1, [IFTH1, IFTH2]>,
310 InstrStage<1, [PDCD1, PDCD2]>,
311 InstrStage<1, [DISS1, DISS2]>,
312 InstrStage<1, [LRACC]>,
313 InstrStage<1, [AGEN]>,
314 InstrStage<1, [CRD]>,
315 InstrStage<2, [LWB]>],
317 [NoBypass, GPR_Bypass]>,
318 InstrItinData<LdStICBI , [InstrStage<1, [IFTH1, IFTH2]>,
319 InstrStage<1, [PDCD1, PDCD2]>,
320 InstrStage<1, [DISS1, DISS2]>,
321 InstrStage<1, [LRACC]>,
322 InstrStage<1, [AGEN]>,
323 InstrStage<1, [CRD]>,
324 InstrStage<1, [LWB]>],
326 [NoBypass, GPR_Bypass]>,
327 InstrItinData<LdStSTFD , [InstrStage<1, [IFTH1, IFTH2]>,
328 InstrStage<1, [PDCD1, PDCD2]>,
329 InstrStage<1, [DISS1, DISS2]>,
330 InstrStage<1, [LRACC]>,
331 InstrStage<1, [AGEN]>,
332 InstrStage<1, [CRD]>,
333 InstrStage<1, [LWB]>],
335 [NoBypass, GPR_Bypass, GPR_Bypass]>,
336 InstrItinData<LdStSTFDU , [InstrStage<1, [IFTH1, IFTH2]>,
337 InstrStage<1, [PDCD1, PDCD2]>,
338 InstrStage<1, [DISS1, DISS2]>,
339 InstrStage<1, [LRACC]>,
340 InstrStage<1, [AGEN]>,
341 InstrStage<1, [CRD]>,
342 InstrStage<1, [LWB]>],
344 [NoBypass, GPR_Bypass, GPR_Bypass]>,
345 InstrItinData<LdStLFD , [InstrStage<1, [IFTH1, IFTH2]>,
346 InstrStage<1, [PDCD1, PDCD2]>,
347 InstrStage<1, [DISS1, DISS2]>,
348 InstrStage<1, [LRACC]>,
349 InstrStage<1, [AGEN]>,
350 InstrStage<1, [CRD]>,
351 InstrStage<2, [LWB]>],
353 [NoBypass, GPR_Bypass, GPR_Bypass]>,
354 InstrItinData<LdStLFDU , [InstrStage<1, [IFTH1, IFTH2]>,
355 InstrStage<1, [PDCD1, PDCD2]>,
356 InstrStage<1, [DISS1, DISS2]>,
357 InstrStage<1, [LRACC]>,
358 InstrStage<1, [AGEN]>,
359 InstrStage<1, [CRD]>,
360 InstrStage<1, [LWB]>],
362 [NoBypass, GPR_Bypass, GPR_Bypass]>,
363 InstrItinData<LdStLHA , [InstrStage<1, [IFTH1, IFTH2]>,
364 InstrStage<1, [PDCD1, PDCD2]>,
365 InstrStage<1, [DISS1, DISS2]>,
366 InstrStage<1, [LRACC]>,
367 InstrStage<1, [AGEN]>,
368 InstrStage<1, [CRD]>,
369 InstrStage<1, [LWB]>],
371 [NoBypass, GPR_Bypass]>,
372 InstrItinData<LdStLHAU , [InstrStage<1, [IFTH1, IFTH2]>,
373 InstrStage<1, [PDCD1, PDCD2]>,
374 InstrStage<1, [DISS1, DISS2]>,
375 InstrStage<1, [LRACC]>,
376 InstrStage<1, [AGEN]>,
377 InstrStage<1, [CRD]>,
378 InstrStage<1, [LWB]>],
380 [NoBypass, GPR_Bypass]>,
381 InstrItinData<LdStLMW , [InstrStage<1, [IFTH1, IFTH2]>,
382 InstrStage<1, [PDCD1, PDCD2]>,
383 InstrStage<1, [DISS1, DISS2]>,
384 InstrStage<1, [LRACC]>,
385 InstrStage<1, [AGEN]>,
386 InstrStage<1, [CRD]>,
387 InstrStage<1, [LWB]>],
389 [NoBypass, GPR_Bypass]>,
390 InstrItinData<LdStLWARX , [InstrStage<1, [IFTH1, IFTH2]>,
391 InstrStage<1, [PDCD1, PDCD2]>,
392 InstrStage<1, [DISS1]>,
393 InstrStage<1, [IRACC], 0>,
394 InstrStage<4, [LWARX_Hold], 0>,
395 InstrStage<1, [LRACC]>,
396 InstrStage<1, [AGEN]>,
397 InstrStage<1, [CRD]>,
398 InstrStage<1, [LWB]>],
400 [NoBypass, GPR_Bypass]>,
401 InstrItinData<LdStSTD , [InstrStage<1, [IFTH1, IFTH2]>,
402 InstrStage<1, [PDCD1, PDCD2]>,
403 InstrStage<1, [DISS1, DISS2]>,
404 InstrStage<1, [LRACC]>,
405 InstrStage<1, [AGEN]>,
406 InstrStage<1, [CRD]>,
407 InstrStage<2, [LWB]>],
409 [NoBypass, GPR_Bypass]>,
410 InstrItinData<LdStSTDU , [InstrStage<1, [IFTH1, IFTH2]>,
411 InstrStage<1, [PDCD1, PDCD2]>,
412 InstrStage<1, [DISS1, DISS2]>,
413 InstrStage<1, [LRACC]>,
414 InstrStage<1, [AGEN]>,
415 InstrStage<1, [CRD]>,
416 InstrStage<2, [LWB]>],
418 [NoBypass, GPR_Bypass]>,
419 InstrItinData<LdStSTDCX , [InstrStage<1, [IFTH1, IFTH2]>,
420 InstrStage<1, [PDCD1, PDCD2]>,
421 InstrStage<1, [DISS1]>,
422 InstrStage<1, [IRACC], 0>,
423 InstrStage<4, [LWARX_Hold], 0>,
424 InstrStage<1, [LRACC]>,
425 InstrStage<1, [AGEN]>,
426 InstrStage<1, [CRD]>,
427 InstrStage<1, [LWB]>],
429 [NoBypass, GPR_Bypass]>,
430 InstrItinData<LdStSTWCX , [InstrStage<1, [IFTH1, IFTH2]>,
431 InstrStage<1, [PDCD1, PDCD2]>,
432 InstrStage<1, [DISS1]>,
433 InstrStage<1, [IRACC], 0>,
434 InstrStage<4, [LWARX_Hold], 0>,
435 InstrStage<1, [LRACC]>,
436 InstrStage<1, [AGEN]>,
437 InstrStage<1, [CRD]>,
438 InstrStage<1, [LWB]>],
440 [NoBypass, GPR_Bypass]>,
441 InstrItinData<LdStSync , [InstrStage<1, [IFTH1, IFTH2]>,
442 InstrStage<1, [PDCD1, PDCD2]>,
443 InstrStage<1, [DISS1, DISS2]>,
444 InstrStage<1, [LRACC]>,
445 InstrStage<3, [AGEN], 1>,
446 InstrStage<2, [CRD], 1>,
447 InstrStage<1, [LWB]>]>,
448 InstrItinData<SprISYNC , [InstrStage<1, [IFTH1, IFTH2]>,
449 InstrStage<1, [PDCD1, PDCD2]>,
450 InstrStage<1, [DISS1, DISS2]>,
451 InstrStage<1, [FRACC], 0>,
452 InstrStage<1, [LRACC], 0>,
453 InstrStage<1, [IRACC]>,
454 InstrStage<1, [FEXE1], 0>,
455 InstrStage<1, [AGEN], 0>,
456 InstrStage<1, [JEXE1], 0>,
457 InstrStage<1, [IEXE1]>,
458 InstrStage<1, [FEXE2], 0>,
459 InstrStage<1, [CRD], 0>,
460 InstrStage<1, [JEXE2], 0>,
461 InstrStage<1, [IEXE2]>,
462 InstrStage<6, [FEXE3], 0>,
463 InstrStage<6, [LWB], 0>,
464 InstrStage<6, [JWB], 0>,
465 InstrStage<6, [IWB]>]>,
466 InstrItinData<SprMFSR , [InstrStage<1, [IFTH1, IFTH2]>,
467 InstrStage<1, [PDCD1, PDCD2]>,
468 InstrStage<1, [DISS1, DISS2]>,
469 InstrStage<1, [IRACC]>,
470 InstrStage<1, [IEXE1]>,
471 InstrStage<1, [IEXE2]>,
472 InstrStage<1, [IWB]>],
474 [GPR_Bypass, GPR_Bypass]>,
475 InstrItinData<SprMTMSR , [InstrStage<1, [IFTH1, IFTH2]>,
476 InstrStage<1, [PDCD1, PDCD2]>,
477 InstrStage<1, [DISS1, DISS2]>,
478 InstrStage<1, [IRACC]>,
479 InstrStage<1, [IEXE1]>,
480 InstrStage<1, [IEXE2]>,
481 InstrStage<1, [IWB]>],
483 [GPR_Bypass, GPR_Bypass]>,
484 InstrItinData<SprMTSR , [InstrStage<1, [IFTH1, IFTH2]>,
485 InstrStage<1, [PDCD1, PDCD2]>,
486 InstrStage<1, [DISS1, DISS2]>,
487 InstrStage<1, [IRACC]>,
488 InstrStage<1, [IEXE1]>,
489 InstrStage<1, [IEXE2]>,
490 InstrStage<3, [IWB]>],
492 [NoBypass, GPR_Bypass]>,
493 InstrItinData<SprTLBSYNC , [InstrStage<1, [IFTH1, IFTH2]>,
494 InstrStage<1, [PDCD1, PDCD2]>,
495 InstrStage<1, [DISS1, DISS2]>,
496 InstrStage<1, [IRACC]>,
497 InstrStage<1, [IEXE1]>,
498 InstrStage<1, [IEXE2]>,
499 InstrStage<1, [IWB]>]>,
500 InstrItinData<SprMFCR , [InstrStage<1, [IFTH1, IFTH2]>,
501 InstrStage<1, [PDCD1, PDCD2]>,
502 InstrStage<1, [DISS1, DISS2]>,
503 InstrStage<1, [IRACC]>,
504 InstrStage<1, [IEXE1]>,
505 InstrStage<1, [IEXE2]>,
506 InstrStage<1, [IWB]>],
508 [NoBypass, GPR_Bypass]>,
509 InstrItinData<SprMFMSR , [InstrStage<1, [IFTH1, IFTH2]>,
510 InstrStage<1, [PDCD1, PDCD2]>,
511 InstrStage<1, [DISS1, DISS2]>,
512 InstrStage<1, [IRACC]>,
513 InstrStage<1, [IEXE1]>,
514 InstrStage<1, [IEXE2]>,
515 InstrStage<1, [IWB]>],
517 [GPR_Bypass, GPR_Bypass]>,
518 InstrItinData<SprMFSPR , [InstrStage<1, [IFTH1, IFTH2]>,
519 InstrStage<1, [PDCD1, PDCD2]>,
520 InstrStage<1, [DISS1, DISS2]>,
521 InstrStage<1, [IRACC]>,
522 InstrStage<1, [IEXE1]>,
523 InstrStage<1, [IEXE2]>,
524 InstrStage<3, [IWB]>],
526 [NoBypass, GPR_Bypass]>,
527 InstrItinData<SprMFTB , [InstrStage<1, [IFTH1, IFTH2]>,
528 InstrStage<1, [PDCD1, PDCD2]>,
529 InstrStage<1, [DISS1, DISS2]>,
530 InstrStage<1, [IRACC]>,
531 InstrStage<1, [IEXE1]>,
532 InstrStage<1, [IEXE2]>,
533 InstrStage<3, [IWB]>],
535 [NoBypass, GPR_Bypass]>,
536 InstrItinData<SprMTSPR , [InstrStage<1, [IFTH1, IFTH2]>,
537 InstrStage<1, [PDCD1, PDCD2]>,
538 InstrStage<1, [DISS1, DISS2]>,
539 InstrStage<1, [IRACC]>,
540 InstrStage<1, [IEXE1]>,
541 InstrStage<1, [IEXE2]>,
542 InstrStage<3, [IWB]>],
544 [NoBypass, GPR_Bypass]>,
545 InstrItinData<SprMTSRIN , [InstrStage<1, [IFTH1, IFTH2]>,
546 InstrStage<1, [PDCD1, PDCD2]>,
547 InstrStage<1, [DISS1, DISS2]>,
548 InstrStage<1, [IRACC]>,
549 InstrStage<1, [IEXE1]>,
550 InstrStage<1, [IEXE2]>,
551 InstrStage<3, [IWB]>],
553 [NoBypass, GPR_Bypass]>,
554 InstrItinData<SprRFI , [InstrStage<1, [IFTH1, IFTH2]>,
555 InstrStage<1, [PDCD1, PDCD2]>,
556 InstrStage<1, [DISS1, DISS2]>,
557 InstrStage<1, [IRACC]>,
558 InstrStage<1, [IEXE1]>,
559 InstrStage<1, [IEXE2]>,
560 InstrStage<1, [IWB]>],
562 [NoBypass, GPR_Bypass]>,
563 InstrItinData<SprSC , [InstrStage<1, [IFTH1, IFTH2]>,
564 InstrStage<1, [PDCD1, PDCD2]>,
565 InstrStage<1, [DISS1, DISS2]>,
566 InstrStage<1, [IRACC]>,
567 InstrStage<1, [IEXE1]>,
568 InstrStage<1, [IEXE2]>,
569 InstrStage<1, [IWB]>],
571 [NoBypass, GPR_Bypass]>,
572 InstrItinData<FPGeneral , [InstrStage<1, [IFTH1, IFTH2]>,
573 InstrStage<1, [PDCD1, PDCD2]>,
574 InstrStage<1, [DISS1, DISS2]>,
575 InstrStage<1, [FRACC]>,
576 InstrStage<1, [FEXE1]>,
577 InstrStage<1, [FEXE2]>,
578 InstrStage<1, [FEXE3]>,
579 InstrStage<1, [FEXE4]>,
580 InstrStage<1, [FEXE5]>,
581 InstrStage<1, [FEXE6]>,
582 InstrStage<1, [FWB]>],
584 [FPR_Bypass, FPR_Bypass, FPR_Bypass]>,
585 InstrItinData<FPAddSub , [InstrStage<1, [IFTH1, IFTH2]>,
586 InstrStage<1, [PDCD1, PDCD2]>,
587 InstrStage<1, [DISS1, DISS2]>,
588 InstrStage<1, [FRACC]>,
589 InstrStage<1, [FEXE1]>,
590 InstrStage<1, [FEXE2]>,
591 InstrStage<1, [FEXE3]>,
592 InstrStage<1, [FEXE4]>,
593 InstrStage<1, [FEXE5]>,
594 InstrStage<1, [FEXE6]>,
595 InstrStage<1, [FWB]>],
597 [FPR_Bypass, FPR_Bypass, FPR_Bypass]>,
598 InstrItinData<FPCompare , [InstrStage<1, [IFTH1, IFTH2]>,
599 InstrStage<1, [PDCD1, PDCD2]>,
600 InstrStage<1, [DISS1, DISS2]>,
601 InstrStage<1, [FRACC]>,
602 InstrStage<1, [FEXE1]>,
603 InstrStage<1, [FEXE2]>,
604 InstrStage<1, [FEXE3]>,
605 InstrStage<1, [FEXE4]>,
606 InstrStage<1, [FEXE5]>,
607 InstrStage<1, [FEXE6]>,
608 InstrStage<1, [FWB]>],
610 [FPR_Bypass, FPR_Bypass, FPR_Bypass]>,
611 InstrItinData<FPDivD , [InstrStage<1, [IFTH1, IFTH2]>,
612 InstrStage<1, [PDCD1, PDCD2]>,
613 InstrStage<1, [DISS1, DISS2]>,
614 InstrStage<1, [FRACC]>,
615 InstrStage<1, [FEXE1]>,
616 InstrStage<1, [FEXE2]>,
617 InstrStage<1, [FEXE3]>,
618 InstrStage<1, [FEXE4]>,
619 InstrStage<1, [FEXE5]>,
620 InstrStage<1, [FEXE6]>,
621 InstrStage<25, [FWB]>],
623 [NoBypass, FPR_Bypass, FPR_Bypass]>,
624 InstrItinData<FPDivS , [InstrStage<1, [IFTH1, IFTH2]>,
625 InstrStage<1, [PDCD1, PDCD2]>,
626 InstrStage<1, [DISS1, DISS2]>,
627 InstrStage<1, [FRACC]>,
628 InstrStage<1, [FEXE1]>,
629 InstrStage<1, [FEXE2]>,
630 InstrStage<1, [FEXE3]>,
631 InstrStage<1, [FEXE4]>,
632 InstrStage<1, [FEXE5]>,
633 InstrStage<1, [FEXE6]>,
634 InstrStage<13, [FWB]>],
636 [NoBypass, FPR_Bypass, FPR_Bypass]>,
637 InstrItinData<FPFused , [InstrStage<1, [IFTH1, IFTH2]>,
638 InstrStage<1, [PDCD1, PDCD2]>,
639 InstrStage<1, [DISS1, DISS2]>,
640 InstrStage<1, [FRACC]>,
641 InstrStage<1, [FEXE1]>,
642 InstrStage<1, [FEXE2]>,
643 InstrStage<1, [FEXE3]>,
644 InstrStage<1, [FEXE4]>,
645 InstrStage<1, [FEXE5]>,
646 InstrStage<1, [FEXE6]>,
647 InstrStage<1, [FWB]>],
649 [FPR_Bypass, FPR_Bypass, FPR_Bypass, FPR_Bypass]>,
650 InstrItinData<FPRes , [InstrStage<1, [IFTH1, IFTH2]>,
651 InstrStage<1, [PDCD1, PDCD2]>,
652 InstrStage<1, [DISS1, DISS2]>,
653 InstrStage<1, [FRACC]>,
654 InstrStage<1, [FEXE1]>,
655 InstrStage<1, [FEXE2]>,
656 InstrStage<1, [FEXE3]>,
657 InstrStage<1, [FEXE4]>,
658 InstrStage<1, [FEXE5]>,
659 InstrStage<1, [FEXE6]>,
660 InstrStage<1, [FWB]>],
662 [FPR_Bypass, FPR_Bypass]>