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<IntGeneral , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
64 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
65 IU4_4, IU4_5, IU4_6, IU4_7]>,
66 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
67 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
68 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
69 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
70 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
72 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
73 InstrItinData<IntCompare , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
74 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
75 IU4_4, IU4_5, IU4_6, IU4_7]>,
76 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
77 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
78 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
79 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
80 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
82 [CR_Bypass, GPR_Bypass, GPR_Bypass]>,
83 InstrItinData<IntDivW , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
84 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
85 IU4_4, IU4_5, IU4_6, IU4_7]>,
86 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
87 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
88 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
89 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
90 InstrStage<1, [XEX5]>, InstrStage<38, [XEX6]>],
92 [NoBypass, GPR_Bypass, GPR_Bypass]>,
93 InstrItinData<IntMFFS , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
94 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
95 IU4_4, IU4_5, IU4_6, IU4_7]>,
96 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
97 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
98 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
99 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
100 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
102 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
103 InstrItinData<IntMTFSB0 , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
104 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
105 IU4_4, IU4_5, IU4_6, IU4_7]>,
106 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
107 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
108 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
109 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
110 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
112 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
113 InstrItinData<IntMulHW , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
114 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
115 IU4_4, IU4_5, IU4_6, IU4_7]>,
116 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
117 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
118 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
119 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
120 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
122 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
123 InstrItinData<IntMulHWU , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
124 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
125 IU4_4, IU4_5, IU4_6, IU4_7]>,
126 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
127 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
128 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
129 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
130 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
132 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
133 InstrItinData<IntMulLI , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
134 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
135 IU4_4, IU4_5, IU4_6, IU4_7]>,
136 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
137 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
138 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
139 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
140 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
142 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
143 InstrItinData<IntRotate , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
144 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
145 IU4_4, IU4_5, IU4_6, IU4_7]>,
146 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
147 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
148 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
149 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
150 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
152 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
153 InstrItinData<IntShift , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
154 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
155 IU4_4, IU4_5, IU4_6, IU4_7]>,
156 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
157 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
158 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
159 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
160 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
162 [GPR_Bypass, GPR_Bypass, GPR_Bypass]>,
163 InstrItinData<IntTrapW , [InstrStage<4, [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]>,
173 InstrItinData<BrB , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
174 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
175 IU4_4, IU4_5, IU4_6, IU4_7]>,
176 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
177 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
178 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
179 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
180 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
182 [NoBypass, GPR_Bypass]>,
183 InstrItinData<BrCR , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
184 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
185 IU4_4, IU4_5, IU4_6, IU4_7]>,
186 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
187 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
188 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
189 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
190 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
192 [CR_Bypass, CR_Bypass, CR_Bypass]>,
193 InstrItinData<BrMCR , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
194 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
195 IU4_4, IU4_5, IU4_6, IU4_7]>,
196 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
197 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
198 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
199 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
200 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
202 [CR_Bypass, CR_Bypass, CR_Bypass]>,
203 InstrItinData<BrMCRX , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
204 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
205 IU4_4, IU4_5, IU4_6, IU4_7]>,
206 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
207 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
208 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
209 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
210 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
212 [CR_Bypass, GPR_Bypass, GPR_Bypass]>,
213 InstrItinData<LdStDCBA , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
214 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
215 IU4_4, IU4_5, IU4_6, IU4_7]>,
216 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
217 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
218 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
219 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
220 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
222 [NoBypass, GPR_Bypass]>,
223 InstrItinData<LdStDCBF , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
224 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
225 IU4_4, IU4_5, IU4_6, IU4_7]>,
226 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
227 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
228 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
229 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
230 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
232 [NoBypass, GPR_Bypass]>,
233 InstrItinData<LdStDCBI , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
234 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
235 IU4_4, IU4_5, IU4_6, IU4_7]>,
236 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
237 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
238 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
239 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
240 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
242 [NoBypass, GPR_Bypass]>,
243 InstrItinData<LdStLoad , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
244 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
245 IU4_4, IU4_5, IU4_6, IU4_7]>,
246 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
247 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
248 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
249 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
250 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
252 [GPR_Bypass, GPR_Bypass]>,
253 InstrItinData<LdStStore , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
254 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
255 IU4_4, IU4_5, IU4_6, IU4_7]>,
256 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
257 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
258 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
259 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
260 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
262 [GPR_Bypass, GPR_Bypass]>,
263 InstrItinData<LdStICBI , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
264 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
265 IU4_4, IU4_5, IU4_6, IU4_7]>,
266 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
267 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
268 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
269 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
270 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
272 [NoBypass, GPR_Bypass]>,
273 InstrItinData<LdStUX , [InstrStage<4, [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, FPR_Bypass, FPR_Bypass]>,
283 InstrItinData<LdStLFD , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
284 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
285 IU4_4, IU4_5, IU4_6, IU4_7]>,
286 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
287 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
288 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
289 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
290 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
292 [FPR_Bypass, GPR_Bypass, GPR_Bypass]>,
293 InstrItinData<LdStLFDU , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
294 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
295 IU4_4, IU4_5, IU4_6, IU4_7]>,
296 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
297 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
298 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
299 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
300 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
302 [FPR_Bypass, GPR_Bypass, GPR_Bypass]>,
303 InstrItinData<LdStLHA , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
304 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
305 IU4_4, IU4_5, IU4_6, IU4_7]>,
306 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
307 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
308 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
309 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
310 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
312 [NoBypass, GPR_Bypass]>,
313 InstrItinData<LdStLMW , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
314 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
315 IU4_4, IU4_5, IU4_6, IU4_7]>,
316 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
317 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
318 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
319 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
320 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
322 [NoBypass, GPR_Bypass]>,
323 InstrItinData<LdStLWARX , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
324 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
325 IU4_4, IU4_5, IU4_6, IU4_7]>,
326 InstrStage<1, [IU5]>, InstrStage<13, [IU6]>,
327 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
328 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
329 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
330 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
332 [NoBypass, GPR_Bypass]>,
333 InstrItinData<LdStSTD , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
334 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
335 IU4_4, IU4_5, IU4_6, IU4_7]>,
336 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
337 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
338 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
339 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
340 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
342 [GPR_Bypass, GPR_Bypass]>,
343 InstrItinData<LdStSTDCX , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
344 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
345 IU4_4, IU4_5, IU4_6, IU4_7]>,
346 InstrStage<1, [IU5]>, InstrStage<13, [IU6]>,
347 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
348 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
349 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
350 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
352 [NoBypass, GPR_Bypass]>,
353 InstrItinData<LdStSTD , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
354 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
355 IU4_4, IU4_5, IU4_6, IU4_7]>,
356 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
357 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
358 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
359 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
360 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
362 [GPR_Bypass, GPR_Bypass]>,
363 InstrItinData<LdStSTDCX , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
364 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
365 IU4_4, IU4_5, IU4_6, IU4_7]>,
366 InstrStage<1, [IU5]>, InstrStage<13, [IU6]>,
367 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
368 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
369 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
370 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
372 [NoBypass, GPR_Bypass]>,
373 InstrItinData<LdStSTWCX , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
374 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
375 IU4_4, IU4_5, IU4_6, IU4_7]>,
376 InstrStage<1, [IU5]>, InstrStage<13, [IU6]>,
377 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
378 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
379 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
380 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
382 [NoBypass, GPR_Bypass]>,
383 InstrItinData<LdStSync , [InstrStage<4, [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<12, [XEX4]>,
390 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>]>,
391 InstrItinData<SprISYNC , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
392 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
393 IU4_4, IU4_5, IU4_6, IU4_7]>,
394 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
395 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
396 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
397 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
398 InstrStage<1, [XEX5]>, InstrStage<14, [XEX6]>]>,
399 InstrItinData<SprMFSR , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
400 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
401 IU4_4, IU4_5, IU4_6, IU4_7]>,
402 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
403 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
404 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
405 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
406 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
408 [GPR_Bypass, NoBypass]>,
409 InstrItinData<SprMTMSR , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
410 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
411 IU4_4, IU4_5, IU4_6, IU4_7]>,
412 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
413 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
414 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
415 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
416 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
418 [NoBypass, GPR_Bypass]>,
419 InstrItinData<SprMTSR , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
420 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
421 IU4_4, IU4_5, IU4_6, IU4_7]>,
422 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
423 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
424 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
425 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
426 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
428 [NoBypass, GPR_Bypass]>,
429 InstrItinData<SprTLBSYNC , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
430 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
431 IU4_4, IU4_5, IU4_6, IU4_7]>,
432 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
433 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
434 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
435 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
436 InstrStage<1, [XEX5]>, InstrStage<14, [XEX6]>]>,
437 InstrItinData<SprMFCR , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
438 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
439 IU4_4, IU4_5, IU4_6, IU4_7]>,
440 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
441 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
442 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
443 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
444 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
446 [GPR_Bypass, CR_Bypass]>,
447 InstrItinData<SprMFMSR , [InstrStage<4, [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<1, [XEX6]>],
456 [GPR_Bypass, NoBypass]>,
457 InstrItinData<SprMFSPR , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
458 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
459 IU4_4, IU4_5, IU4_6, IU4_7]>,
460 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
461 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
462 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
463 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
464 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
466 [NoBypass, GPR_Bypass]>,
467 InstrItinData<SprMFTB , [InstrStage<4, [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<14, [XEX6]>],
476 [NoBypass, GPR_Bypass]>,
477 InstrItinData<SprMTSPR , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
478 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
479 IU4_4, IU4_5, IU4_6, IU4_7]>,
480 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
481 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
482 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
483 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
484 InstrStage<1, [XEX5]>, InstrStage<1, [XEX6]>],
486 [NoBypass, GPR_Bypass]>,
487 InstrItinData<SprMTSRIN , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
488 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
489 IU4_4, IU4_5, IU4_6, IU4_7]>,
490 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
491 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
492 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
493 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
494 InstrStage<1, [XEX5]>, InstrStage<14, [XEX6]>],
496 [NoBypass, GPR_Bypass]>,
497 InstrItinData<SprRFI , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
498 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
499 IU4_4, IU4_5, IU4_6, IU4_7]>,
500 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
501 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
502 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
503 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
504 InstrStage<1, [XEX5]>, InstrStage<14, [XEX6]>],
506 [NoBypass, GPR_Bypass]>,
507 InstrItinData<SprSC , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
508 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
509 IU4_4, IU4_5, IU4_6, IU4_7]>,
510 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
511 InstrStage<1, [RF0]>, InstrStage<1, [XRF1]>,
512 InstrStage<1, [XEX1]>, InstrStage<1, [XEX2]>,
513 InstrStage<1, [XEX3]>, InstrStage<1, [XEX4]>,
514 InstrStage<1, [XEX5]>, InstrStage<14, [XEX6]>],
516 [NoBypass, GPR_Bypass]>,
517 InstrItinData<FPGeneral , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
518 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
519 IU4_4, IU4_5, IU4_6, IU4_7]>,
520 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
521 InstrStage<1, [RF0]>, InstrStage<1, [FRF1]>,
522 InstrStage<1, [FEX1]>, InstrStage<1, [FEX2]>,
523 InstrStage<1, [FEX3]>, InstrStage<1, [FEX4]>,
524 InstrStage<1, [FEX5]>, InstrStage<1, [FEX6]>],
526 [FPR_Bypass, FPR_Bypass, FPR_Bypass]>,
527 InstrItinData<FPCompare , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
528 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
529 IU4_4, IU4_5, IU4_6, IU4_7]>,
530 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
531 InstrStage<1, [RF0]>, InstrStage<1, [FRF1]>,
532 InstrStage<1, [FEX1]>, InstrStage<1, [FEX2]>,
533 InstrStage<1, [FEX3]>, InstrStage<1, [FEX4]>,
534 InstrStage<1, [FEX5]>, InstrStage<1, [FEX6]>],
536 [CR_Bypass, FPR_Bypass, FPR_Bypass]>,
537 InstrItinData<FPDivD , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
538 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
539 IU4_4, IU4_5, IU4_6, IU4_7]>,
540 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
541 InstrStage<1, [RF0]>, InstrStage<71, [FRF1], 0>,
542 InstrStage<71, [FEX1], 0>, InstrStage<71, [FEX2], 0>,
543 InstrStage<71, [FEX3], 0>, InstrStage<71, [FEX4], 0>,
544 InstrStage<71, [FEX5], 0>, InstrStage<71, [FEX6]>],
546 [NoBypass, FPR_Bypass, FPR_Bypass]>,
547 InstrItinData<FPDivS , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
548 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
549 IU4_4, IU4_5, IU4_6, IU4_7]>,
550 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
551 InstrStage<1, [RF0]>, InstrStage<58, [FRF1], 0>,
552 InstrStage<58, [FEX1], 0>, InstrStage<58, [FEX2], 0>,
553 InstrStage<58, [FEX3], 0>, InstrStage<58, [FEX4], 0>,
554 InstrStage<58, [FEX5], 0>, InstrStage<58, [FEX6]>],
556 [NoBypass, FPR_Bypass, FPR_Bypass]>,
557 InstrItinData<FPSqrt , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
558 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
559 IU4_4, IU4_5, IU4_6, IU4_7]>,
560 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
561 InstrStage<1, [RF0]>, InstrStage<68, [FRF1], 0>,
562 InstrStage<68, [FEX1], 0>, InstrStage<68, [FEX2], 0>,
563 InstrStage<68, [FEX3], 0>, InstrStage<68, [FEX4], 0>,
564 InstrStage<68, [FEX5], 0>, InstrStage<68, [FEX6]>],
565 [86, 7], // FIXME: should be [86, 7] for double
566 // and [82, 7] for single. Likewise,
567 // the FEX? cycle count should be 68
568 // for double and 64 for single.
569 [NoBypass, FPR_Bypass]>,
570 InstrItinData<FPFused , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
571 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
572 IU4_4, IU4_5, IU4_6, IU4_7]>,
573 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
574 InstrStage<1, [RF0]>, InstrStage<1, [FRF1]>,
575 InstrStage<1, [FEX1]>, InstrStage<1, [FEX2]>,
576 InstrStage<1, [FEX3]>, InstrStage<1, [FEX4]>,
577 InstrStage<1, [FEX5]>, InstrStage<1, [FEX6]>],
579 [FPR_Bypass, FPR_Bypass, FPR_Bypass, FPR_Bypass]>,
580 InstrItinData<FPRes , [InstrStage<4, [IU0to3_0, IU0to3_1, IU0to3_2, IU0to3_3]>,
581 InstrStage<1, [IU4_0, IU4_1, IU4_2, IU4_3,
582 IU4_4, IU4_5, IU4_6, IU4_7]>,
583 InstrStage<1, [IU5]>, InstrStage<1, [IU6]>,
584 InstrStage<1, [RF0]>, InstrStage<1, [FRF1]>,
585 InstrStage<1, [FEX1]>, InstrStage<1, [FEX2]>,
586 InstrStage<1, [FEX3]>, InstrStage<1, [FEX4]>,
587 InstrStage<1, [FEX5]>, InstrStage<1, [FEX6]>],
589 [FPR_Bypass, FPR_Bypass]>