xref: /aosp_15_r20/external/llvm/lib/Target/PowerPC/PPCSchedule440.td (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker//===-- PPCSchedule440.td - PPC 440 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// Primary reference:
11*9880d681SAndroid Build Coastguard Worker// PowerPC 440x6 Embedded Processor Core User's Manual.
12*9880d681SAndroid Build Coastguard Worker// IBM (as updated in) 2010.
13*9880d681SAndroid Build Coastguard Worker
14*9880d681SAndroid Build Coastguard Worker// The basic PPC 440 does not include a floating-point unit; the pipeline
15*9880d681SAndroid Build Coastguard Worker// timings here are constructed to match the FP2 unit shipped with the
16*9880d681SAndroid Build Coastguard Worker// PPC-440- and PPC-450-based Blue Gene (L and P) supercomputers.
17*9880d681SAndroid Build Coastguard Worker// References:
18*9880d681SAndroid Build Coastguard Worker// S. Chatterjee, et al. Design and exploitation of a high-performance
19*9880d681SAndroid Build Coastguard Worker// SIMD floating-point unit for Blue Gene/L.
20*9880d681SAndroid Build Coastguard Worker// IBM J. Res. & Dev. 49 (2/3) March/May 2005.
21*9880d681SAndroid Build Coastguard Worker// also:
22*9880d681SAndroid Build Coastguard Worker// Carlos Sosa and Brant Knudson. IBM System Blue Gene Solution:
23*9880d681SAndroid Build Coastguard Worker// Blue Gene/P Application Development.
24*9880d681SAndroid Build Coastguard Worker// IBM (as updated in) 2009.
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
27*9880d681SAndroid Build Coastguard Worker// Functional units on the PowerPC 440/450 chip sets
28*9880d681SAndroid Build Coastguard Worker//
29*9880d681SAndroid Build Coastguard Workerdef P440_DISS1  : FuncUnit; // Issue unit 1
30*9880d681SAndroid Build Coastguard Workerdef P440_DISS2  : FuncUnit; // Issue unit 2
31*9880d681SAndroid Build Coastguard Workerdef P440_LRACC  : FuncUnit; // Register access and dispatch for
32*9880d681SAndroid Build Coastguard Worker                            // the simple integer (J-pipe) and
33*9880d681SAndroid Build Coastguard Worker                            // load/store (L-pipe) pipelines
34*9880d681SAndroid Build Coastguard Workerdef P440_IRACC  : FuncUnit; // Register access and dispatch for
35*9880d681SAndroid Build Coastguard Worker                            // the complex integer (I-pipe) pipeline
36*9880d681SAndroid Build Coastguard Workerdef P440_FRACC  : FuncUnit; // Register access and dispatch for
37*9880d681SAndroid Build Coastguard Worker                            // the floating-point execution (F-pipe) pipeline
38*9880d681SAndroid Build Coastguard Workerdef P440_IEXE1  : FuncUnit; // Execution stage 1 for the I pipeline
39*9880d681SAndroid Build Coastguard Workerdef P440_IEXE2  : FuncUnit; // Execution stage 2 for the I pipeline
40*9880d681SAndroid Build Coastguard Workerdef P440_IWB    : FuncUnit; // Write-back unit for the I pipeline
41*9880d681SAndroid Build Coastguard Workerdef P440_JEXE1  : FuncUnit; // Execution stage 1 for the J pipeline
42*9880d681SAndroid Build Coastguard Workerdef P440_JEXE2  : FuncUnit; // Execution stage 2 for the J pipeline
43*9880d681SAndroid Build Coastguard Workerdef P440_JWB    : FuncUnit; // Write-back unit for the J pipeline
44*9880d681SAndroid Build Coastguard Workerdef P440_AGEN   : FuncUnit; // Address generation for the L pipeline
45*9880d681SAndroid Build Coastguard Workerdef P440_CRD    : FuncUnit; // D-cache access for the L pipeline
46*9880d681SAndroid Build Coastguard Workerdef P440_LWB    : FuncUnit; // Write-back unit for the L pipeline
47*9880d681SAndroid Build Coastguard Workerdef P440_FEXE1  : FuncUnit; // Execution stage 1 for the F pipeline
48*9880d681SAndroid Build Coastguard Workerdef P440_FEXE2  : FuncUnit; // Execution stage 2 for the F pipeline
49*9880d681SAndroid Build Coastguard Workerdef P440_FEXE3  : FuncUnit; // Execution stage 3 for the F pipeline
50*9880d681SAndroid Build Coastguard Workerdef P440_FEXE4  : FuncUnit; // Execution stage 4 for the F pipeline
51*9880d681SAndroid Build Coastguard Workerdef P440_FEXE5  : FuncUnit; // Execution stage 5 for the F pipeline
52*9880d681SAndroid Build Coastguard Workerdef P440_FEXE6  : FuncUnit; // Execution stage 6 for the F pipeline
53*9880d681SAndroid Build Coastguard Workerdef P440_FWB    : FuncUnit; // Write-back unit for the F pipeline
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Workerdef P440_LWARX_Hold : FuncUnit; // This is a pseudo-unit which is used
56*9880d681SAndroid Build Coastguard Worker                                // to make sure that no lwarx/stwcx.
57*9880d681SAndroid Build Coastguard Worker                                // instructions are issued while another
58*9880d681SAndroid Build Coastguard Worker                                // lwarx/stwcx. is in the L pipe.
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Workerdef P440_GPR_Bypass : Bypass; // The bypass for general-purpose regs.
61*9880d681SAndroid Build Coastguard Workerdef P440_FPR_Bypass : Bypass; // The bypass for floating-point regs.
62*9880d681SAndroid Build Coastguard Worker
63*9880d681SAndroid Build Coastguard Worker// Notes:
64*9880d681SAndroid Build Coastguard Worker// Instructions are held in the FRACC, LRACC and IRACC pipeline
65*9880d681SAndroid Build Coastguard Worker// stages until their source operands become ready. Exceptions:
66*9880d681SAndroid Build Coastguard Worker//  - Store instructions will hold in the AGEN stage
67*9880d681SAndroid Build Coastguard Worker//  - The integer multiply-accumulate instruction will hold in
68*9880d681SAndroid Build Coastguard Worker//    the IEXE1 stage
69*9880d681SAndroid Build Coastguard Worker//
70*9880d681SAndroid Build Coastguard Worker// For most I-pipe operations, the result is available at the end of
71*9880d681SAndroid Build Coastguard Worker// the IEXE1 stage. Operations such as multiply and divide must
72*9880d681SAndroid Build Coastguard Worker// continue to execute in IEXE2 and IWB. Divide resides in IWB for
73*9880d681SAndroid Build Coastguard Worker// 33 cycles (multiply also calculates its result in IWB). For all
74*9880d681SAndroid Build Coastguard Worker// J-pipe instructions, the result is available
75*9880d681SAndroid Build Coastguard Worker// at the end of the JEXE1 stage. Loads have a 3-cycle latency
76*9880d681SAndroid Build Coastguard Worker// (data is not available until after the LWB stage).
77*9880d681SAndroid Build Coastguard Worker//
78*9880d681SAndroid Build Coastguard Worker// The L1 cache hit latency is four cycles for floating point loads
79*9880d681SAndroid Build Coastguard Worker// and three cycles for integer loads.
80*9880d681SAndroid Build Coastguard Worker//
81*9880d681SAndroid Build Coastguard Worker// The stwcx. instruction requires both the LRACC and the IRACC
82*9880d681SAndroid Build Coastguard Worker// dispatch stages. It must be issued from DISS0.
83*9880d681SAndroid Build Coastguard Worker//
84*9880d681SAndroid Build Coastguard Worker// All lwarx/stwcx. instructions hold in LRACC if another
85*9880d681SAndroid Build Coastguard Worker// uncommitted lwarx/stwcx. is in AGEN, CRD, or LWB.
86*9880d681SAndroid Build Coastguard Worker//
87*9880d681SAndroid Build Coastguard Worker// msync (a.k.a. sync) and mbar will hold in LWB until all load/store
88*9880d681SAndroid Build Coastguard Worker// resources are empty. AGEN and CRD are held empty until the msync/mbar
89*9880d681SAndroid Build Coastguard Worker// commits.
90*9880d681SAndroid Build Coastguard Worker//
91*9880d681SAndroid Build Coastguard Worker// Most floating-point instructions, computational and move,
92*9880d681SAndroid Build Coastguard Worker// have a 5-cycle latency. Divide takes longer (30 cycles). Instructions that
93*9880d681SAndroid Build Coastguard Worker// update the CR take 2 cycles. Stores take 3 cycles and, as mentioned above,
94*9880d681SAndroid Build Coastguard Worker// loads take 4 cycles (for L1 hit).
95*9880d681SAndroid Build Coastguard Worker
96*9880d681SAndroid Build Coastguard Worker//
97*9880d681SAndroid Build Coastguard Worker// This file defines the itinerary class data for the PPC 440 processor.
98*9880d681SAndroid Build Coastguard Worker//
99*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===//
100*9880d681SAndroid Build Coastguard Worker
101*9880d681SAndroid Build Coastguard Worker
102*9880d681SAndroid Build Coastguard Workerdef PPC440Itineraries : ProcessorItineraries<
103*9880d681SAndroid Build Coastguard Worker  [P440_DISS1, P440_DISS2, P440_FRACC, P440_IRACC, P440_IEXE1, P440_IEXE2,
104*9880d681SAndroid Build Coastguard Worker   P440_IWB, P440_LRACC, P440_JEXE1, P440_JEXE2, P440_JWB, P440_AGEN, P440_CRD,
105*9880d681SAndroid Build Coastguard Worker   P440_LWB, P440_FEXE1, P440_FEXE2, P440_FEXE3, P440_FEXE4, P440_FEXE5,
106*9880d681SAndroid Build Coastguard Worker   P440_FEXE6, P440_FWB, P440_LWARX_Hold],
107*9880d681SAndroid Build Coastguard Worker  [P440_GPR_Bypass, P440_FPR_Bypass], [
108*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_IntSimple,  [InstrStage<1, [P440_DISS1, P440_DISS2]>,
109*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC, P440_LRACC]>,
110*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1, P440_JEXE1]>,
111*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2, P440_JEXE2]>,
112*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB, P440_JWB]>],
113*9880d681SAndroid Build Coastguard Worker                                [2, 0, 0],
114*9880d681SAndroid Build Coastguard Worker                                [P440_GPR_Bypass,
115*9880d681SAndroid Build Coastguard Worker                                 P440_GPR_Bypass, P440_GPR_Bypass]>,
116*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_IntGeneral, [InstrStage<1, [P440_DISS1, P440_DISS2]>,
117*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC, P440_LRACC]>,
118*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1, P440_JEXE1]>,
119*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2, P440_JEXE2]>,
120*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB, P440_JWB]>],
121*9880d681SAndroid Build Coastguard Worker                                [2, 0, 0],
122*9880d681SAndroid Build Coastguard Worker                                [P440_GPR_Bypass,
123*9880d681SAndroid Build Coastguard Worker                                 P440_GPR_Bypass, P440_GPR_Bypass]>,
124*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_IntISEL,    [InstrStage<1, [P440_DISS1, P440_DISS2]>,
125*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC, P440_LRACC]>,
126*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1, P440_JEXE1]>,
127*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2, P440_JEXE2]>,
128*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB, P440_JWB]>],
129*9880d681SAndroid Build Coastguard Worker                                [2, 0, 0, 0],
130*9880d681SAndroid Build Coastguard Worker                                [P440_GPR_Bypass,
131*9880d681SAndroid Build Coastguard Worker                                 P440_GPR_Bypass, P440_GPR_Bypass, NoBypass]>,
132*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_IntCompare, [InstrStage<1, [P440_DISS1, P440_DISS2]>,
133*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC, P440_LRACC]>,
134*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1, P440_JEXE1]>,
135*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2, P440_JEXE2]>,
136*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB, P440_JWB]>],
137*9880d681SAndroid Build Coastguard Worker                                [2, 0, 0],
138*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>,
139*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_IntDivW,    [InstrStage<1, [P440_DISS1, P440_DISS2]>,
140*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
141*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
142*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
143*9880d681SAndroid Build Coastguard Worker                                 InstrStage<33, [P440_IWB]>],
144*9880d681SAndroid Build Coastguard Worker                                [36, 0, 0],
145*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>,
146*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_IntMFFS,    [InstrStage<1, [P440_DISS1, P440_DISS2]>,
147*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
148*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
149*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
150*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB]>],
151*9880d681SAndroid Build Coastguard Worker                                [3, 0, 0],
152*9880d681SAndroid Build Coastguard Worker                                [P440_GPR_Bypass,
153*9880d681SAndroid Build Coastguard Worker                                 P440_GPR_Bypass, P440_GPR_Bypass]>,
154*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_IntMTFSB0,  [InstrStage<1, [P440_DISS1, P440_DISS2]>,
155*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
156*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
157*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
158*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB]>],
159*9880d681SAndroid Build Coastguard Worker                                [3, 0, 0],
160*9880d681SAndroid Build Coastguard Worker                                [P440_GPR_Bypass,
161*9880d681SAndroid Build Coastguard Worker                                 P440_GPR_Bypass, P440_GPR_Bypass]>,
162*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_IntMulHW,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
163*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
164*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
165*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
166*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB]>],
167*9880d681SAndroid Build Coastguard Worker                                [4, 0, 0],
168*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>,
169*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_IntMulHWU,  [InstrStage<1, [P440_DISS1, P440_DISS2]>,
170*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
171*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
172*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
173*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB]>],
174*9880d681SAndroid Build Coastguard Worker                                [4, 0, 0],
175*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>,
176*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_IntMulLI,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
177*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
178*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
179*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
180*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB]>],
181*9880d681SAndroid Build Coastguard Worker                                [4, 0, 0],
182*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>,
183*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_IntRotate,  [InstrStage<1, [P440_DISS1, P440_DISS2]>,
184*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC, P440_LRACC]>,
185*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1, P440_JEXE1]>,
186*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2, P440_JEXE2]>,
187*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB, P440_JWB]>],
188*9880d681SAndroid Build Coastguard Worker                                [2, 0, 0],
189*9880d681SAndroid Build Coastguard Worker                                [P440_GPR_Bypass,
190*9880d681SAndroid Build Coastguard Worker                                 P440_GPR_Bypass, P440_GPR_Bypass]>,
191*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_IntShift,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
192*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC, P440_LRACC]>,
193*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1, P440_JEXE1]>,
194*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2, P440_JEXE2]>,
195*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB, P440_JWB]>],
196*9880d681SAndroid Build Coastguard Worker                                [2, 0, 0],
197*9880d681SAndroid Build Coastguard Worker                                [P440_GPR_Bypass,
198*9880d681SAndroid Build Coastguard Worker                                 P440_GPR_Bypass, P440_GPR_Bypass]>,
199*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_IntTrapW,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
200*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
201*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
202*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
203*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB]>],
204*9880d681SAndroid Build Coastguard Worker                                [2, 0],
205*9880d681SAndroid Build Coastguard Worker                                [P440_GPR_Bypass, P440_GPR_Bypass]>,
206*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_BrB,        [InstrStage<1, [P440_DISS1, P440_DISS2]>,
207*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
208*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
209*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
210*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB]>],
211*9880d681SAndroid Build Coastguard Worker                                [4, 0],
212*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
213*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_BrCR,       [InstrStage<1, [P440_DISS1, P440_DISS2]>,
214*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
215*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
216*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
217*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB]>],
218*9880d681SAndroid Build Coastguard Worker                                [4, 0, 0],
219*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>,
220*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_BrMCR,      [InstrStage<1, [P440_DISS1, P440_DISS2]>,
221*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
222*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
223*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
224*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB]>],
225*9880d681SAndroid Build Coastguard Worker                                [4, 0, 0],
226*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>,
227*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_BrMCRX,     [InstrStage<1, [P440_DISS1, P440_DISS2]>,
228*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
229*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
230*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
231*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB]>],
232*9880d681SAndroid Build Coastguard Worker                                [4, 0, 0],
233*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>,
234*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStDCBA,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
235*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
236*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
237*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
238*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LWB]>],
239*9880d681SAndroid Build Coastguard Worker                                [1, 1],
240*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
241*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStDCBF,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
242*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
243*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
244*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
245*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LWB]>],
246*9880d681SAndroid Build Coastguard Worker                                [1, 1],
247*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
248*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStDCBI,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
249*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
250*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
251*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
252*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LWB]>],
253*9880d681SAndroid Build Coastguard Worker                                [1, 1],
254*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
255*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStLoad,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
256*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
257*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
258*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
259*9880d681SAndroid Build Coastguard Worker                                 InstrStage<2, [P440_LWB]>],
260*9880d681SAndroid Build Coastguard Worker                                [5, 1, 1],
261*9880d681SAndroid Build Coastguard Worker                                [P440_GPR_Bypass, P440_GPR_Bypass]>,
262*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStLoadUpd,[InstrStage<1, [P440_DISS1, P440_DISS2]>,
263*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
264*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
265*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
266*9880d681SAndroid Build Coastguard Worker                                 InstrStage<2, [P440_LWB]>],
267*9880d681SAndroid Build Coastguard Worker                                [5, 2, 1, 1],
268*9880d681SAndroid Build Coastguard Worker                                [P440_GPR_Bypass, P440_GPR_Bypass]>,
269*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStLoadUpdX,[InstrStage<1, [P440_DISS1, P440_DISS2]>,
270*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
271*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
272*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
273*9880d681SAndroid Build Coastguard Worker                                 InstrStage<2, [P440_LWB]>],
274*9880d681SAndroid Build Coastguard Worker                                [5, 2, 1, 1],
275*9880d681SAndroid Build Coastguard Worker                                [P440_GPR_Bypass, P440_GPR_Bypass]>,
276*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStStore,  [InstrStage<1, [P440_DISS1, P440_DISS2]>,
277*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
278*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
279*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
280*9880d681SAndroid Build Coastguard Worker                                 InstrStage<2, [P440_LWB]>],
281*9880d681SAndroid Build Coastguard Worker                                [1, 1, 1],
282*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
283*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStStoreUpd,[InstrStage<1, [P440_DISS1, P440_DISS2]>,
284*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
285*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
286*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
287*9880d681SAndroid Build Coastguard Worker                                 InstrStage<2, [P440_LWB]>],
288*9880d681SAndroid Build Coastguard Worker                                [2, 1, 1, 1],
289*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
290*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStICBI,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
291*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
292*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
293*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
294*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LWB]>],
295*9880d681SAndroid Build Coastguard Worker                                [4, 1, 1],
296*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
297*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStSTFD,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
298*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
299*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
300*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
301*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LWB]>],
302*9880d681SAndroid Build Coastguard Worker                                [1, 1, 1],
303*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>,
304*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStSTFDU,  [InstrStage<1, [P440_DISS1, P440_DISS2]>,
305*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
306*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
307*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
308*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LWB]>],
309*9880d681SAndroid Build Coastguard Worker                                [2, 1, 1, 1],
310*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>,
311*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStLFD,    [InstrStage<1, [P440_DISS1, P440_DISS2]>,
312*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
313*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
314*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
315*9880d681SAndroid Build Coastguard Worker                                 InstrStage<2, [P440_LWB]>],
316*9880d681SAndroid Build Coastguard Worker                                [5, 1, 1],
317*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>,
318*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStLFDU,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
319*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
320*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
321*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
322*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LWB]>],
323*9880d681SAndroid Build Coastguard Worker                                [5, 2, 1, 1],
324*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>,
325*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStLFDUX,  [InstrStage<1, [P440_DISS1, P440_DISS2]>,
326*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
327*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
328*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
329*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LWB]>],
330*9880d681SAndroid Build Coastguard Worker                                [5, 2, 1, 1],
331*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>,
332*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStLHA,    [InstrStage<1, [P440_DISS1, P440_DISS2]>,
333*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
334*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
335*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
336*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LWB]>],
337*9880d681SAndroid Build Coastguard Worker                                [4, 1, 1],
338*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
339*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStLHAU,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
340*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
341*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
342*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
343*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LWB]>],
344*9880d681SAndroid Build Coastguard Worker                                [4, 1, 1],
345*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
346*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStLHAUX,  [InstrStage<1, [P440_DISS1, P440_DISS2]>,
347*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
348*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
349*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
350*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LWB]>],
351*9880d681SAndroid Build Coastguard Worker                                [4, 1, 1],
352*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
353*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStLMW,    [InstrStage<1, [P440_DISS1, P440_DISS2]>,
354*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
355*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
356*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
357*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LWB]>],
358*9880d681SAndroid Build Coastguard Worker                                [4, 1, 1],
359*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
360*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStLWARX,  [InstrStage<1, [P440_DISS1]>,
361*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC], 0>,
362*9880d681SAndroid Build Coastguard Worker                                 InstrStage<4, [P440_LWARX_Hold], 0>,
363*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
364*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
365*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
366*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LWB]>],
367*9880d681SAndroid Build Coastguard Worker                                [4, 1, 1],
368*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
369*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStSTD,    [InstrStage<1, [P440_DISS1, P440_DISS2]>,
370*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
371*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
372*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
373*9880d681SAndroid Build Coastguard Worker                                 InstrStage<2, [P440_LWB]>],
374*9880d681SAndroid Build Coastguard Worker                                [4, 1, 1],
375*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
376*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStSTDU,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
377*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
378*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
379*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
380*9880d681SAndroid Build Coastguard Worker                                 InstrStage<2, [P440_LWB]>],
381*9880d681SAndroid Build Coastguard Worker                                [2, 1, 1, 1],
382*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
383*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStSTDUX,  [InstrStage<1, [P440_DISS1, P440_DISS2]>,
384*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
385*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
386*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
387*9880d681SAndroid Build Coastguard Worker                                 InstrStage<2, [P440_LWB]>],
388*9880d681SAndroid Build Coastguard Worker                                [2, 1, 1, 1],
389*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
390*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStSTDCX,  [InstrStage<1, [P440_DISS1]>,
391*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC], 0>,
392*9880d681SAndroid Build Coastguard Worker                                 InstrStage<4, [P440_LWARX_Hold], 0>,
393*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
394*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
395*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
396*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LWB]>],
397*9880d681SAndroid Build Coastguard Worker                                [4, 1, 1],
398*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
399*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStSTWCX,  [InstrStage<1, [P440_DISS1]>,
400*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC], 0>,
401*9880d681SAndroid Build Coastguard Worker                                 InstrStage<4, [P440_LWARX_Hold], 0>,
402*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
403*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN]>,
404*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD]>,
405*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LWB]>],
406*9880d681SAndroid Build Coastguard Worker                                [4, 1, 1],
407*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
408*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_LdStSync,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
409*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC]>,
410*9880d681SAndroid Build Coastguard Worker                                 InstrStage<3, [P440_AGEN], 1>,
411*9880d681SAndroid Build Coastguard Worker                                 InstrStage<2, [P440_CRD],  1>,
412*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LWB]>]>,
413*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_SprISYNC,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
414*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FRACC], 0>,
415*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_LRACC], 0>,
416*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
417*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE1], 0>,
418*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_AGEN],  0>,
419*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_JEXE1], 0>,
420*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
421*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE2], 0>,
422*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_CRD],   0>,
423*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_JEXE2], 0>,
424*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
425*9880d681SAndroid Build Coastguard Worker                                 InstrStage<6, [P440_FEXE3], 0>,
426*9880d681SAndroid Build Coastguard Worker                                 InstrStage<6, [P440_LWB],   0>,
427*9880d681SAndroid Build Coastguard Worker                                 InstrStage<6, [P440_JWB],   0>,
428*9880d681SAndroid Build Coastguard Worker                                 InstrStage<6, [P440_IWB]>]>,
429*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_SprMFSR,    [InstrStage<1, [P440_DISS1, P440_DISS2]>,
430*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
431*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
432*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
433*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB]>],
434*9880d681SAndroid Build Coastguard Worker                                [2, 0],
435*9880d681SAndroid Build Coastguard Worker                                [P440_GPR_Bypass, P440_GPR_Bypass]>,
436*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_SprMTMSR,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
437*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
438*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
439*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
440*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB]>],
441*9880d681SAndroid Build Coastguard Worker                                [2, 0],
442*9880d681SAndroid Build Coastguard Worker                                [P440_GPR_Bypass, P440_GPR_Bypass]>,
443*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_SprMTSR,    [InstrStage<1, [P440_DISS1, P440_DISS2]>,
444*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
445*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
446*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
447*9880d681SAndroid Build Coastguard Worker                                 InstrStage<3, [P440_IWB]>],
448*9880d681SAndroid Build Coastguard Worker                                [5, 0],
449*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
450*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_SprTLBSYNC, [InstrStage<1, [P440_DISS1, P440_DISS2]>,
451*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
452*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
453*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
454*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB]>]>,
455*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_SprMFCR,    [InstrStage<1, [P440_DISS1, P440_DISS2]>,
456*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
457*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
458*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
459*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB]>],
460*9880d681SAndroid Build Coastguard Worker                                [4, 0],
461*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
462*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_SprMFMSR,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
463*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
464*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
465*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
466*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB]>],
467*9880d681SAndroid Build Coastguard Worker                                [3, 0],
468*9880d681SAndroid Build Coastguard Worker                                [P440_GPR_Bypass, P440_GPR_Bypass]>,
469*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_SprMFSPR,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
470*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
471*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
472*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
473*9880d681SAndroid Build Coastguard Worker                                 InstrStage<3, [P440_IWB]>],
474*9880d681SAndroid Build Coastguard Worker                                [6, 0],
475*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
476*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_SprMFTB,    [InstrStage<1, [P440_DISS1, P440_DISS2]>,
477*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
478*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
479*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
480*9880d681SAndroid Build Coastguard Worker                                 InstrStage<3, [P440_IWB]>],
481*9880d681SAndroid Build Coastguard Worker                                [6, 0],
482*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
483*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_SprMTSPR,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
484*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
485*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
486*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
487*9880d681SAndroid Build Coastguard Worker                                 InstrStage<3, [P440_IWB]>],
488*9880d681SAndroid Build Coastguard Worker                                [6, 0],
489*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
490*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_SprMTSRIN,  [InstrStage<1, [P440_DISS1, P440_DISS2]>,
491*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
492*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
493*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
494*9880d681SAndroid Build Coastguard Worker                                 InstrStage<3, [P440_IWB]>],
495*9880d681SAndroid Build Coastguard Worker                                [6, 0],
496*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
497*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_SprRFI,     [InstrStage<1, [P440_DISS1, P440_DISS2]>,
498*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
499*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
500*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
501*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB]>],
502*9880d681SAndroid Build Coastguard Worker                                [4, 0],
503*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
504*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_SprSC,      [InstrStage<1, [P440_DISS1, P440_DISS2]>,
505*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IRACC]>,
506*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE1]>,
507*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IEXE2]>,
508*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_IWB]>],
509*9880d681SAndroid Build Coastguard Worker                                [4, 0],
510*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_GPR_Bypass]>,
511*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_FPGeneral,  [InstrStage<1, [P440_DISS1, P440_DISS2]>,
512*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FRACC]>,
513*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE1]>,
514*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE2]>,
515*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE3]>,
516*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE4]>,
517*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE5]>,
518*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE6]>,
519*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FWB]>],
520*9880d681SAndroid Build Coastguard Worker                                [6, 0, 0],
521*9880d681SAndroid Build Coastguard Worker                                [P440_FPR_Bypass,
522*9880d681SAndroid Build Coastguard Worker                                 P440_FPR_Bypass, P440_FPR_Bypass]>,
523*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_FPAddSub,   [InstrStage<1, [P440_DISS1, P440_DISS2]>,
524*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FRACC]>,
525*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE1]>,
526*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE2]>,
527*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE3]>,
528*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE4]>,
529*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE5]>,
530*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE6]>,
531*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FWB]>],
532*9880d681SAndroid Build Coastguard Worker                                [6, 0, 0],
533*9880d681SAndroid Build Coastguard Worker                                [P440_FPR_Bypass,
534*9880d681SAndroid Build Coastguard Worker                                 P440_FPR_Bypass, P440_FPR_Bypass]>,
535*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_FPCompare,  [InstrStage<1, [P440_DISS1, P440_DISS2]>,
536*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FRACC]>,
537*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE1]>,
538*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE2]>,
539*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE3]>,
540*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE4]>,
541*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE5]>,
542*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE6]>,
543*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FWB]>],
544*9880d681SAndroid Build Coastguard Worker                                [6, 0, 0],
545*9880d681SAndroid Build Coastguard Worker                                [P440_FPR_Bypass, P440_FPR_Bypass,
546*9880d681SAndroid Build Coastguard Worker                                 P440_FPR_Bypass]>,
547*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_FPDivD,     [InstrStage<1, [P440_DISS1, P440_DISS2]>,
548*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FRACC]>,
549*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE1]>,
550*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE2]>,
551*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE3]>,
552*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE4]>,
553*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE5]>,
554*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE6]>,
555*9880d681SAndroid Build Coastguard Worker                                 InstrStage<25, [P440_FWB]>],
556*9880d681SAndroid Build Coastguard Worker                                [31, 0, 0],
557*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_FPR_Bypass, P440_FPR_Bypass]>,
558*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_FPDivS,     [InstrStage<1, [P440_DISS1, P440_DISS2]>,
559*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FRACC]>,
560*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE1]>,
561*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE2]>,
562*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE3]>,
563*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE4]>,
564*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE5]>,
565*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE6]>,
566*9880d681SAndroid Build Coastguard Worker                                 InstrStage<13, [P440_FWB]>],
567*9880d681SAndroid Build Coastguard Worker                                [19, 0, 0],
568*9880d681SAndroid Build Coastguard Worker                                [NoBypass, P440_FPR_Bypass, P440_FPR_Bypass]>,
569*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_FPFused,    [InstrStage<1, [P440_DISS1, P440_DISS2]>,
570*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FRACC]>,
571*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE1]>,
572*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE2]>,
573*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE3]>,
574*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE4]>,
575*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE5]>,
576*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE6]>,
577*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FWB]>],
578*9880d681SAndroid Build Coastguard Worker                                [6, 0, 0, 0],
579*9880d681SAndroid Build Coastguard Worker                                [P440_FPR_Bypass,
580*9880d681SAndroid Build Coastguard Worker                                 P440_FPR_Bypass, P440_FPR_Bypass,
581*9880d681SAndroid Build Coastguard Worker                                 P440_FPR_Bypass]>,
582*9880d681SAndroid Build Coastguard Worker  InstrItinData<IIC_FPRes,      [InstrStage<1, [P440_DISS1, P440_DISS2]>,
583*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FRACC]>,
584*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE1]>,
585*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE2]>,
586*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE3]>,
587*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE4]>,
588*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE5]>,
589*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FEXE6]>,
590*9880d681SAndroid Build Coastguard Worker                                 InstrStage<1, [P440_FWB]>],
591*9880d681SAndroid Build Coastguard Worker                                [6, 0],
592*9880d681SAndroid Build Coastguard Worker                                [P440_FPR_Bypass, P440_FPR_Bypass]>
593*9880d681SAndroid Build Coastguard Worker]>;
594*9880d681SAndroid Build Coastguard Worker
595*9880d681SAndroid Build Coastguard Worker// ===---------------------------------------------------------------------===//
596*9880d681SAndroid Build Coastguard Worker// PPC440 machine model for scheduling and other instruction cost heuristics.
597*9880d681SAndroid Build Coastguard Worker
598*9880d681SAndroid Build Coastguard Workerdef PPC440Model : SchedMachineModel {
599*9880d681SAndroid Build Coastguard Worker  let IssueWidth = 2;  // 2 instructions are dispatched per cycle.
600*9880d681SAndroid Build Coastguard Worker  let LoadLatency = 5; // Optimistic load latency assuming bypass.
601*9880d681SAndroid Build Coastguard Worker                       // This is overriden by OperandCycles if the
602*9880d681SAndroid Build Coastguard Worker                       // Itineraries are queried instead.
603*9880d681SAndroid Build Coastguard Worker
604*9880d681SAndroid Build Coastguard Worker  let CompleteModel = 0;
605*9880d681SAndroid Build Coastguard Worker
606*9880d681SAndroid Build Coastguard Worker  let Itineraries = PPC440Itineraries;
607*9880d681SAndroid Build Coastguard Worker}
608*9880d681SAndroid Build Coastguard Worker
609