1 //===- PPCScheduleA2.td - PPC A2 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 // A2 Processor User's Manual.
12 // IBM (as updated in) 2010.
14 //===----------------------------------------------------------------------===//
15 // Functional units on the PowerPC A2 chip sets
17 def IU0to3_0 : FuncUnit; // Fetch unit 1 to 4 slot 1
18 def IU0to3_1 : FuncUnit; // Fetch unit 1 to 4 slot 2
19 def IU0to3_2 : FuncUnit; // Fetch unit 1 to 4 slot 3
20 def IU0to3_3 : FuncUnit; // Fetch unit 1 to 4 slot 4
21 def IU4_0 : FuncUnit; // Instruction buffer slot 1
22 def IU4_1 : FuncUnit; // Instruction buffer slot 2
23 def IU4_2 : FuncUnit; // Instruction buffer slot 3
24 def IU4_3 : FuncUnit; // Instruction buffer slot 4
25 def IU4_4 : FuncUnit; // Instruction buffer slot 5
26 def IU4_5 : FuncUnit; // Instruction buffer slot 6
27 def IU4_6 : FuncUnit; // Instruction buffer slot 7
28 def IU4_7 : FuncUnit; // Instruction buffer slot 8
29 def IU5 : FuncUnit; // Dependency resolution
30 def IU6 : FuncUnit; // Instruction issue
33 def XEX1 : FuncUnit; // Execution stage 1 for the XU pipeline
34 def XEX2 : FuncUnit; // Execution stage 2 for the XU pipeline
35 def XEX3 : FuncUnit; // Execution stage 3 for the XU pipeline
36 def XEX4 : FuncUnit; // Execution stage 4 for the XU pipeline
37 def XEX5 : FuncUnit; // Execution stage 5 for the XU pipeline
38 def XEX6 : FuncUnit; // Execution stage 6 for the XU pipeline
40 def FEX1 : FuncUnit; // Execution stage 1 for the FU pipeline
41 def FEX2 : FuncUnit; // Execution stage 2 for the FU pipeline
42 def FEX3 : FuncUnit; // Execution stage 3 for the FU pipeline
43 def FEX4 : FuncUnit; // Execution stage 4 for the FU pipeline
44 def FEX5 : FuncUnit; // Execution stage 5 for the FU pipeline
45 def FEX6 : FuncUnit; // Execution stage 6 for the FU pipeline
47 def CR_Bypass : Bypass; // The bypass for condition regs.
48 //def GPR_Bypass : Bypass; // The bypass for general-purpose regs.
49 //def FPR_Bypass : Bypass; // The bypass for floating-point regs.
52 // This file defines the itinerary class data for the PPC A2 processor.
54 //===----------------------------------------------------------------------===//
57 def PPCA2Itineraries : ProcessorItineraries<
58 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3,
59 IU4_0, IU4_1, IU4_2, IU4_3, IU4_4, IU4_5, IU4_6, IU4_7,
60 IU5, IU6, RF0, XRF1, XEX1, XEX2, XEX3, XEX4, XEX5, XEX6,
61 FRF1, FEX1, FEX2, FEX3, FEX4, FEX5, FEX6],
62 [CR_Bypass, GPR_Bypass, FPR_Bypass], [
63 InstrItinData<IntSimple , [InstrStage<4,
64 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
65 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
66 IU4_4, IU4_5, IU4_6, IU4_7]>,
67 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
68 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
69 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
70 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
71 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
73 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
74 InstrItinData<IntGeneral , [InstrStage<4,
75 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
76 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
77 IU4_4, IU4_5, IU4_6, IU4_7]>,
78 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
79 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
80 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
81 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
82 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
84 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
85 InstrItinData<IntCompare , [InstrStage<4,
86 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
87 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
88 IU4_4, IU4_5, IU4_6, IU4_7]>,
89 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
90 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
91 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
92 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
93 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
95 [CR_Bypass, GPR_Bypass, GPR_Bypass]>,
96 InstrItinData<IntDivW , [InstrStage<4,
97 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
98 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
99 IU4_4, IU4_5, IU4_6, IU4_7]>,
100 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
101 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
102 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
103 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
104 InstrStage<1, [XEX5]>, InstrStage<38, [XEX6]>],
106 [NoBypass, GPR_Bypass, GPR_Bypass]>,
107 InstrItinData<IntMFFS , [InstrStage<4,
108 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
109 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
110 IU4_4, IU4_5, IU4_6, IU4_7]>,
111 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
112 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
113 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
114 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
115 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
117 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
118 InstrItinData<IntMTFSB0 , [InstrStage<4,
119 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
120 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
121 IU4_4, IU4_5, IU4_6, IU4_7]>,
122 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
123 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
124 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
125 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
126 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
128 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
129 InstrItinData<IntMulHW , [InstrStage<4,
130 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
131 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
132 IU4_4, IU4_5, IU4_6, IU4_7]>,
133 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
134 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
135 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
136 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
137 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
139 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
140 InstrItinData<IntMulHWU , [InstrStage<4,
141 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
142 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
143 IU4_4, IU4_5, IU4_6, IU4_7]>,
144 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
145 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
146 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
147 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
148 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
150 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
151 InstrItinData<IntMulLI , [InstrStage<4,
152 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
153 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
154 IU4_4, IU4_5, IU4_6, IU4_7]>,
155 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
156 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
157 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
158 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
159 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
161 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
162 InstrItinData<IntRotate , [InstrStage<4,
163 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
164 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
165 IU4_4, IU4_5, IU4_6, IU4_7]>,
166 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
167 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
168 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
169 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
170 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
172 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
173 InstrItinData<IntRotateD , [InstrStage<4,
174 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
175 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
176 IU4_4, IU4_5, IU4_6, IU4_7]>,
177 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
178 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
179 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
180 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
181 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
183 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
184 InstrItinData<IntShift , [InstrStage<4,
185 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
186 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
187 IU4_4, IU4_5, IU4_6, IU4_7]>,
188 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
189 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
190 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
191 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
192 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
194 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
195 InstrItinData<IntTrapW , [InstrStage<4,
196 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
197 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
198 IU4_4, IU4_5, IU4_6, IU4_7]>,
199 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
200 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
201 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
202 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
203 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
205 [GPR_Bypass, GPR_Bypass]>,
206 InstrItinData<IntTrapD , [InstrStage<4,
207 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
208 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
209 IU4_4, IU4_5, IU4_6, IU4_7]>,
210 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
211 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
212 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
213 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
214 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
216 [GPR_Bypass, GPR_Bypass]>,
217 InstrItinData<BrB , [InstrStage<4,
218 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
219 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
220 IU4_4, IU4_5, IU4_6, IU4_7]>,
221 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
222 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
223 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
224 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
225 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
227 [NoBypass, GPR_Bypass]>,
228 InstrItinData<BrCR , [InstrStage<4,
229 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
230 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
231 IU4_4, IU4_5, IU4_6, IU4_7]>,
232 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
233 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
234 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
235 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
236 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
238 [CR_Bypass, CR_Bypass, CR_Bypass]>,
239 InstrItinData<BrMCR , [InstrStage<4,
240 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
241 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
242 IU4_4, IU4_5, IU4_6, IU4_7]>,
243 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
244 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
245 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
246 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
247 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
249 [CR_Bypass, CR_Bypass, CR_Bypass]>,
250 InstrItinData<BrMCRX , [InstrStage<4,
251 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
252 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
253 IU4_4, IU4_5, IU4_6, IU4_7]>,
254 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
255 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
256 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
257 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
258 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
260 [CR_Bypass, GPR_Bypass, GPR_Bypass]>,
261 InstrItinData<LdStDCBA , [InstrStage<4,
262 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
263 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
264 IU4_4, IU4_5, IU4_6, IU4_7]>,
265 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
266 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
267 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
268 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
269 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
271 [NoBypass, GPR_Bypass]>,
272 InstrItinData<LdStDCBF , [InstrStage<4,
273 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
274 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
275 IU4_4, IU4_5, IU4_6, IU4_7]>,
276 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
277 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
278 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
279 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
280 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
282 [NoBypass, GPR_Bypass]>,
283 InstrItinData<LdStDCBI , [InstrStage<4,
284 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
285 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
286 IU4_4, IU4_5, IU4_6, IU4_7]>,
287 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
288 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
289 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
290 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
291 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
293 [NoBypass, GPR_Bypass]>,
294 InstrItinData<LdStLoad , [InstrStage<4,
295 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
296 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
297 IU4_4, IU4_5, IU4_6, IU4_7]>,
298 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
299 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
300 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
301 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
302 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
304 [GPR_Bypass, GPR_Bypass]>,
305 InstrItinData<LdStLD , [InstrStage<4,
306 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
307 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
308 IU4_4, IU4_5, IU4_6, IU4_7]>,
309 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
310 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
311 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
312 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
313 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
315 [GPR_Bypass, GPR_Bypass]>,
316 InstrItinData<LdStStore , [InstrStage<4,
317 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
318 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
319 IU4_4, IU4_5, IU4_6, IU4_7]>,
320 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
321 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
322 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
323 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
324 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
326 [GPR_Bypass, GPR_Bypass]>,
327 InstrItinData<LdStICBI , [InstrStage<4,
328 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
329 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
330 IU4_4, IU4_5, IU4_6, IU4_7]>,
331 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
332 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
333 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
334 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
335 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
337 [NoBypass, GPR_Bypass]>,
338 InstrItinData<LdStUX , [InstrStage<4,
339 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
340 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
341 IU4_4, IU4_5, IU4_6, IU4_7]>,
342 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
343 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
344 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
345 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
346 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
348 [NoBypass, FPR_Bypass, FPR_Bypass]>,
349 InstrItinData<LdStLFD , [InstrStage<4,
350 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
351 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
352 IU4_4, IU4_5, IU4_6, IU4_7]>,
353 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
354 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
355 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
356 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
357 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
359 [FPR_Bypass, GPR_Bypass, GPR_Bypass]>,
360 InstrItinData<LdStLFDU , [InstrStage<4,
361 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
362 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
363 IU4_4, IU4_5, IU4_6, IU4_7]>,
364 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
365 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
366 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
367 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
368 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
370 [FPR_Bypass, GPR_Bypass, GPR_Bypass]>,
371 InstrItinData<LdStLHA , [InstrStage<4,
372 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
373 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
374 IU4_4, IU4_5, IU4_6, IU4_7]>,
375 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
376 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
377 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
378 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
379 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
381 [NoBypass, GPR_Bypass]>,
382 InstrItinData<LdStLMW , [InstrStage<4,
383 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
384 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
385 IU4_4, IU4_5, IU4_6, IU4_7]>,
386 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
387 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
388 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
389 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
390 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
392 [NoBypass, GPR_Bypass]>,
393 InstrItinData<LdStLWARX , [InstrStage<4,
394 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
395 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
396 IU4_4, IU4_5, IU4_6, IU4_7]>,
397 InstrStage<1, [IU5]>, InstrStage<13, [IU6]>,
398 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
399 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
400 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
401 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
403 [NoBypass, GPR_Bypass]>,
404 InstrItinData<LdStSTD , [InstrStage<4,
405 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
406 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
407 IU4_4, IU4_5, IU4_6, IU4_7]>,
408 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
409 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
410 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
411 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
412 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
414 [GPR_Bypass, GPR_Bypass]>,
415 InstrItinData<LdStSTDCX , [InstrStage<4,
416 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
417 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
418 IU4_4, IU4_5, IU4_6, IU4_7]>,
419 InstrStage<1, [IU5]>, InstrStage<13, [IU6]>,
420 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
421 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
422 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
423 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
425 [NoBypass, GPR_Bypass]>,
426 InstrItinData<LdStSTWCX , [InstrStage<4,
427 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
428 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
429 IU4_4, IU4_5, IU4_6, IU4_7]>,
430 InstrStage<1, [IU5]>, InstrStage<13, [IU6]>,
431 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
432 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
433 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
434 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
436 [NoBypass, GPR_Bypass]>,
437 InstrItinData<LdStSync , [InstrStage<4,
438 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
439 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
440 IU4_4, IU4_5, IU4_6, IU4_7]>,
441 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
442 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
443 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
444 InstrStage<1, [XEX3]>, InstrStage<12, [XEX4]>,
445 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>]>,
446 InstrItinData<SprISYNC , [InstrStage<4,
447 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
448 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
449 IU4_4, IU4_5, IU4_6, IU4_7]>,
450 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
451 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
452 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
453 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
454 InstrStage<1, [XEX5]>, InstrStage<14, [XEX6]>]>,
455 InstrItinData<SprMFSR , [InstrStage<4,
456 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
457 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
458 IU4_4, IU4_5, IU4_6, IU4_7]>,
459 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
460 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
461 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
462 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
463 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
465 [GPR_Bypass, NoBypass]>,
466 InstrItinData<SprMTMSR , [InstrStage<4,
467 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
468 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
469 IU4_4, IU4_5, IU4_6, IU4_7]>,
470 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
471 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
472 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
473 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
474 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
476 [NoBypass, GPR_Bypass]>,
477 InstrItinData<SprMTSR , [InstrStage<4,
478 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
479 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
480 IU4_4, IU4_5, IU4_6, IU4_7]>,
481 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
482 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
483 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
484 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
485 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
487 [NoBypass, GPR_Bypass]>,
488 InstrItinData<SprTLBSYNC , [InstrStage<4,
489 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
490 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
491 IU4_4, IU4_5, IU4_6, IU4_7]>,
492 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
493 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
494 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
495 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
496 InstrStage<1, [XEX5]>, InstrStage<14, [XEX6]>]>,
497 InstrItinData<SprMFCR , [InstrStage<4,
498 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
499 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
500 IU4_4, IU4_5, IU4_6, IU4_7]>,
501 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
502 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
503 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
504 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
505 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
507 [GPR_Bypass, CR_Bypass]>,
508 InstrItinData<SprMFMSR , [InstrStage<4,
509 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
510 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
511 IU4_4, IU4_5, IU4_6, IU4_7]>,
512 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
513 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
514 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
515 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
516 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
518 [GPR_Bypass, NoBypass]>,
519 InstrItinData<SprMFSPR , [InstrStage<4,
520 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
521 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
522 IU4_4, IU4_5, IU4_6, IU4_7]>,
523 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
524 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
525 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
526 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
527 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
529 [NoBypass, GPR_Bypass]>,
530 InstrItinData<SprMFTB , [InstrStage<4,
531 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
532 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
533 IU4_4, IU4_5, IU4_6, IU4_7]>,
534 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
535 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
536 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
537 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
538 InstrStage<1, [XEX5]>, InstrStage<14, [XEX6]>],
540 [NoBypass, GPR_Bypass]>,
541 InstrItinData<SprMTSPR , [InstrStage<4,
542 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
543 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
544 IU4_4, IU4_5, IU4_6, IU4_7]>,
545 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
546 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
547 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
548 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
549 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
551 [NoBypass, GPR_Bypass]>,
552 InstrItinData<SprMTSRIN , [InstrStage<4,
553 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
554 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
555 IU4_4, IU4_5, IU4_6, IU4_7]>,
556 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
557 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
558 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
559 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
560 InstrStage<1, [XEX5]>, InstrStage<14, [XEX6]>],
562 [NoBypass, GPR_Bypass]>,
563 InstrItinData<SprRFI , [InstrStage<4,
564 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
565 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
566 IU4_4, IU4_5, IU4_6, IU4_7]>,
567 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
568 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
569 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
570 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
571 InstrStage<1, [XEX5]>, InstrStage<14, [XEX6]>],
573 [NoBypass, GPR_Bypass]>,
574 InstrItinData<SprSC , [InstrStage<4,
575 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
576 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
577 IU4_4, IU4_5, IU4_6, IU4_7]>,
578 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
579 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
580 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
581 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
582 InstrStage<1, [XEX5]>, InstrStage<14, [XEX6]>],
584 [NoBypass, GPR_Bypass]>,
585 InstrItinData<FPGeneral , [InstrStage<4,
586 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
587 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
588 IU4_4, IU4_5, IU4_6, IU4_7]>,
589 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
590 InstrStage<1, [RF0]>, InstrStage<1, [FRF1]>,
591 InstrStage<1, [FEX1]>, InstrStage<1, [FEX2]>,
592 InstrStage<1, [FEX3]>, InstrStage<1, [FEX4]>,
593 InstrStage<1, [FEX5]>, InstrStage<1, [FEX6]>],
595 [FPR_Bypass, FPR_Bypass, FPR_Bypass]>,
596 InstrItinData<FPCompare , [InstrStage<4,
597 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
598 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
599 IU4_4, IU4_5, IU4_6, IU4_7]>,
600 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
601 InstrStage<1, [RF0]>, InstrStage<1, [FRF1]>,
602 InstrStage<1, [FEX1]>, InstrStage<1, [FEX2]>,
603 InstrStage<1, [FEX3]>, InstrStage<1, [FEX4]>,
604 InstrStage<1, [FEX5]>, InstrStage<1, [FEX6]>],
606 [CR_Bypass, FPR_Bypass, FPR_Bypass]>,
607 InstrItinData<FPDivD , [InstrStage<4,
608 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
609 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
610 IU4_4, IU4_5, IU4_6, IU4_7]>,
611 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
612 InstrStage<1, [RF0]>, InstrStage<71, [FRF1], 0>,
613 InstrStage<71, [FEX1], 0>,
614 InstrStage<71, [FEX2], 0>,
615 InstrStage<71, [FEX3], 0>,
616 InstrStage<71, [FEX4], 0>,
617 InstrStage<71, [FEX5], 0>,
618 InstrStage<71, [FEX6]>],
620 [NoBypass, FPR_Bypass, FPR_Bypass]>,
621 InstrItinData<FPDivS , [InstrStage<4,
622 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
623 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
624 IU4_4, IU4_5, IU4_6, IU4_7]>,
625 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
626 InstrStage<1, [RF0]>, InstrStage<58, [FRF1], 0>,
627 InstrStage<58, [FEX1], 0>,
628 InstrStage<58, [FEX2], 0>,
629 InstrStage<58, [FEX3], 0>,
630 InstrStage<58, [FEX4], 0>,
631 InstrStage<58, [FEX5], 0>,
632 InstrStage<58, [FEX6]>],
634 [NoBypass, FPR_Bypass, FPR_Bypass]>,
635 InstrItinData<FPSqrt , [InstrStage<4,
636 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
637 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
638 IU4_4, IU4_5, IU4_6, IU4_7]>,
639 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
640 InstrStage<1, [RF0]>, InstrStage<68, [FRF1], 0>,
641 InstrStage<68, [FEX1], 0>,
642 InstrStage<68, [FEX2], 0>,
643 InstrStage<68, [FEX3], 0>,
644 InstrStage<68, [FEX4], 0>,
645 InstrStage<68, [FEX5], 0>,
646 InstrStage<68, [FEX6]>],
647 [86, 7], // FIXME: should be [86, 7] for double
648 // and [82, 7] for single. Likewise,
649 // the FEX? cycle count should be 68
650 // for double and 64 for single.
651 [NoBypass, FPR_Bypass]>,
652 InstrItinData<FPFused , [InstrStage<4,
653 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
654 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
655 IU4_4, IU4_5, IU4_6, IU4_7]>,
656 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
657 InstrStage<1, [RF0]>, InstrStage<1, [FRF1]>,
658 InstrStage<1, [FEX1]>, InstrStage<1, [FEX2]>,
659 InstrStage<1, [FEX3]>, InstrStage<1, [FEX4]>,
660 InstrStage<1, [FEX5]>, InstrStage<1, [FEX6]>],
662 [FPR_Bypass, FPR_Bypass, FPR_Bypass, FPR_Bypass]>,
663 InstrItinData<FPRes , [InstrStage<4,
664 [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
665 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
666 IU4_4, IU4_5, IU4_6, IU4_7]>,
667 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
668 InstrStage<1, [RF0]>, InstrStage<1, [FRF1]>,
669 InstrStage<1, [FEX1]>, InstrStage<1, [FEX2]>,
670 InstrStage<1, [FEX3]>, InstrStage<1, [FEX4]>,
671 InstrStage<1, [FEX5]>, InstrStage<1, [FEX6]>],
673 [FPR_Bypass, FPR_Bypass]>