xref: /llvm-project/llvm/test/CodeGen/AArch64/misched-detail-resource-booking-02.mir (revision da71203e6fc6b8e08c9979204506d385e9cb07b8)
1# RUN: llc -mtriple=aarch64-none-linux-gnu -mcpu=cortex-a55  \
2# RUN:  -run-pass=machine-scheduler -debug-only=machine-scheduler -o - %s \
3# RUN:  -misched-prera-direction=bottomup -sched-print-cycles=true \
4# RUN:  -misched-dump-reserved-cycles=true -misched-detail-resource-booking=true\
5# RUN:  -misched-dump-schedule-trace=true -misched-dump-schedule-trace-col-width=4 \
6# RUN:  2>&1 | FileCheck %s
7
8# REQUIRES: asserts, aarch64-registered-target
9---
10name: f
11tracksRegLiveness: true
12body:             |
13  bb.0:
14    liveins: $x0, $x1, $x2
15    $x3 = ADDXrr $x0, $x0
16    $x4 = ADDXrr $x1, $x1
17    $x5 = ADDXrr $x2, $x2
18
19# CHECK-LABEL: Before MISched:
20# CHECK-NEXT: # Machine code for function f: IsSSA, NoPHIs, TracksLiveness, NoVRegs
21# CHECK-EMPTY:
22# CHECK-NEXT: bb.0:
23# CHECK-NEXT:   liveins: $x0, $x1, $x2
24# CHECK-NEXT:   $x3 = ADDXrr $x0, $x0
25# CHECK-NEXT:   $x4 = ADDXrr $x1, $x1
26# CHECK-NEXT:   $x5 = ADDXrr $x2, $x2
27# CHECK-EMPTY:
28# CHECK-NEXT: # End machine code for function f.
29# CHECK-EMPTY:
30# CHECK-NEXT: ********** MI Scheduling **********
31# CHECK-NEXT: f:%bb.0
32# CHECK-NEXT:   From: $x3 = ADDXrr $x0, $x0
33# CHECK-NEXT:     To: End
34# CHECK-NEXT:  RegionInstrs: 3
35# CHECK-NEXT: ScheduleDAGMILive::schedule starting
36# CHECK-NEXT: GenericScheduler RegionPolicy:  ShouldTrackPressure=0 OnlyTopDown=0 OnlyBottomUp=1
37# CHECK-NEXT: Disabled scoreboard hazard recognizer
38# CHECK-NEXT: Disabled scoreboard hazard recognizer
39# CHECK-NEXT: SU(0) [TopReadyCycle = 0, BottomReadyCycle = 0]:   $x3 = ADDXrr $x0, $x0
40# CHECK-NEXT:   # preds left       : 0
41# CHECK-NEXT:   # succs left       : 0
42# CHECK-NEXT:   # rdefs left       : 0
43# CHECK-NEXT:   Latency            : 3
44# CHECK-NEXT:   Depth              : 0
45# CHECK-NEXT:   Height             : 0
46# CHECK-NEXT:   Single Issue       : false;
47# CHECK-NEXT: SU(1) [TopReadyCycle = 0, BottomReadyCycle = 0]:   $x4 = ADDXrr $x1, $x1
48# CHECK-NEXT:   # preds left       : 0
49# CHECK-NEXT:   # succs left       : 0
50# CHECK-NEXT:   # rdefs left       : 0
51# CHECK-NEXT:   Latency            : 3
52# CHECK-NEXT:   Depth              : 0
53# CHECK-NEXT:   Height             : 0
54# CHECK-NEXT:   Single Issue       : false;
55# CHECK-NEXT: SU(2) [TopReadyCycle = 0, BottomReadyCycle = 0]:   $x5 = ADDXrr $x2, $x2
56# CHECK-NEXT:   # preds left       : 0
57# CHECK-NEXT:   # succs left       : 0
58# CHECK-NEXT:   # rdefs left       : 0
59# CHECK-NEXT:   Latency            : 3
60# CHECK-NEXT:   Depth              : 0
61# CHECK-NEXT:   Height             : 0
62# CHECK-NEXT:   Single Issue       : false;
63# CHECK-NEXT:   Resource booking (@0c):
64# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
65# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
66# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
67# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
68# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
69# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
70# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
71# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
72# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
73# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
74# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
75# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
76# CHECK-NEXT:   getNextResourceCycle (@0c):
77# CHECK-NEXT:     Instance 0 available @0c
78# CHECK-NEXT:     Instance 1 available @0c
79# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @0c
80# CHECK-NEXT:   Resource booking (@0c):
81# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
82# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
83# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
84# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
85# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
86# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
87# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
88# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
89# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
90# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
91# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
92# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
93# CHECK-NEXT:   getNextResourceCycle (@0c):
94# CHECK-NEXT:     Instance 0 available @0c
95# CHECK-NEXT:     Instance 1 available @0c
96# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @0c
97# CHECK-NEXT:   Resource booking (@0c):
98# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
99# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
100# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
101# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
102# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
103# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
104# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
105# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
106# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
107# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
108# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
109# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
110# CHECK-NEXT:   getNextResourceCycle (@0c):
111# CHECK-NEXT:     Instance 0 available @0c
112# CHECK-NEXT:     Instance 1 available @0c
113# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @0c
114# CHECK-NEXT:   Resource booking (@0c):
115# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
116# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
117# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
118# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
119# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
120# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
121# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
122# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
123# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
124# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
125# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
126# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
127# CHECK-NEXT:   getNextResourceCycle (@0c):
128# CHECK-NEXT:     Instance 0 available @0c
129# CHECK-NEXT:     Instance 1 available @0c
130# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @0c
131# CHECK-NEXT:   Resource booking (@0c):
132# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
133# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
134# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
135# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
136# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
137# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
138# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
139# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
140# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
141# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
142# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
143# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
144# CHECK-NEXT:   getNextResourceCycle (@0c):
145# CHECK-NEXT:     Instance 0 available @0c
146# CHECK-NEXT:     Instance 1 available @0c
147# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @0c
148# CHECK-NEXT:   Resource booking (@0c):
149# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
150# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
151# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
152# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
153# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
154# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
155# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
156# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
157# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
158# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
159# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
160# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
161# CHECK-NEXT:   getNextResourceCycle (@0c):
162# CHECK-NEXT:     Instance 0 available @0c
163# CHECK-NEXT:     Instance 1 available @0c
164# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @0c
165# CHECK-NEXT: Critical Path(GS-RR ): 0
166# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
167# CHECK-NEXT:   Resource booking (@0c):
168# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
169# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
170# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
171# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
172# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
173# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
174# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
175# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
176# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
177# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
178# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
179# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
180# CHECK-NEXT:   getNextResourceCycle (@0c):
181# CHECK-NEXT:     Instance 0 available @0c
182# CHECK-NEXT:     Instance 1 available @0c
183# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @0c
184# CHECK-NEXT:   Resource booking (@0c):
185# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
186# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
187# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
188# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
189# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
190# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
191# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
192# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
193# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
194# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
195# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
196# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
197# CHECK-NEXT:   getNextResourceCycle (@0c):
198# CHECK-NEXT:     Instance 0 available @0c
199# CHECK-NEXT:     Instance 1 available @0c
200# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @0c
201# CHECK-NEXT:   Resource booking (@0c):
202# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
203# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
204# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
205# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
206# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
207# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
208# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
209# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
210# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
211# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
212# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
213# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
214# CHECK-NEXT:   getNextResourceCycle (@0c):
215# CHECK-NEXT:     Instance 0 available @0c
216# CHECK-NEXT:     Instance 1 available @0c
217# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @0c
218# CHECK-NEXT: Queue BotQ.P:
219# CHECK-NEXT: Queue BotQ.A: 2 1 0
220# CHECK-NEXT:   Cand SU(2) ORDER
221# CHECK-NEXT: Pick Bot ORDER
222# CHECK-NEXT: Scheduling SU(2) $x5 = ADDXrr $x2, $x2
223# CHECK-NEXT:   Ready @0c
224# CHECK-NEXT:   CortexA55UnitALU +1x1u
225# CHECK-NEXT:   Resource booking (@0c):
226# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
227# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
228# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
229# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
230# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
231# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
232# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
233# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
234# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
235# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
236# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
237# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
238# CHECK-NEXT:   getNextResourceCycle (@0c):
239# CHECK-NEXT:     Instance 0 available @0c
240# CHECK-NEXT:     Instance 1 available @0c
241# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @0c
242# CHECK-NEXT:   Resource booking (@0c):
243# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
244# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
245# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
246# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
247# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
248# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
249# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
250# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
251# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
252# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
253# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
254# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
255# CHECK-NEXT:   getNextResourceCycle (@0c):
256# CHECK-NEXT:     Instance 0 available @0c
257# CHECK-NEXT:     Instance 1 available @0c
258# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @0c
259# CHECK-NEXT: BotQ.A @0c
260# CHECK-NEXT:   Retired: 1
261# CHECK-NEXT:   Executed: 0c
262# CHECK-NEXT:   Critical: 0c, 1 MOps
263# CHECK-NEXT:   ExpectedLatency: 0c
264# CHECK-NEXT:   - Latency limited.
265# CHECK-NEXT: CortexA55UnitALU(0) = 0
266# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
267# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
268# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
269# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
270# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
271# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
272# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
273# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
274# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
275# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
276# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
277# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
278# CHECK-NEXT:   Resource booking (@0c):
279# CHECK-NEXT: CortexA55UnitALU(0) = 0
280# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
281# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
282# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
283# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
284# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
285# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
286# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
287# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
288# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
289# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
290# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
291# CHECK-NEXT:   getNextResourceCycle (@0c):
292# CHECK-NEXT:     Instance 0 available @1c
293# CHECK-NEXT:     Instance 1 available @0c
294# CHECK-NEXT:     selecting CortexA55UnitALU[1] available @0c
295# CHECK-NEXT:   Resource booking (@0c):
296# CHECK-NEXT: CortexA55UnitALU(0) = 0
297# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
298# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
299# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
300# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
301# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
302# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
303# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
304# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
305# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
306# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
307# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
308# CHECK-NEXT:   getNextResourceCycle (@0c):
309# CHECK-NEXT:     Instance 0 available @1c
310# CHECK-NEXT:     Instance 1 available @0c
311# CHECK-NEXT:     selecting CortexA55UnitALU[1] available @0c
312# CHECK-NEXT: Queue BotQ.P:
313# CHECK-NEXT: Queue BotQ.A: 0 1
314# CHECK-NEXT:   Cand SU(0) ORDER
315# CHECK-NEXT:   Cand SU(1) ORDER
316# CHECK-NEXT: Pick Bot ORDER
317# CHECK-NEXT: Scheduling SU(1) $x4 = ADDXrr $x1, $x1
318# CHECK-NEXT:   Ready @0c
319# CHECK-NEXT:   CortexA55UnitALU +1x1u
320# CHECK-NEXT:   Resource booking (@0c):
321# CHECK-NEXT: CortexA55UnitALU(0) = 0
322# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
323# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
324# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
325# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
326# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
327# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
328# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
329# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
330# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
331# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
332# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
333# CHECK-NEXT:   getNextResourceCycle (@0c):
334# CHECK-NEXT:     Instance 0 available @1c
335# CHECK-NEXT:     Instance 1 available @0c
336# CHECK-NEXT:     selecting CortexA55UnitALU[1] available @0c
337# CHECK-NEXT:   Resource booking (@0c):
338# CHECK-NEXT: CortexA55UnitALU(0) = 0
339# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
340# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
341# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
342# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
343# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
344# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
345# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
346# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
347# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
348# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
349# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
350# CHECK-NEXT:   getNextResourceCycle (@0c):
351# CHECK-NEXT:     Instance 0 available @1c
352# CHECK-NEXT:     Instance 1 available @0c
353# CHECK-NEXT:     selecting CortexA55UnitALU[1] available @0c
354# CHECK-NEXT:   *** Max MOps 2 at cycle 0
355# CHECK-NEXT: Cycle: 1 BotQ.A
356# CHECK-NEXT: BotQ.A @1c
357# CHECK-NEXT:   Retired: 2
358# CHECK-NEXT:   Executed: 1c
359# CHECK-NEXT:   Critical: 1c, 2 MOps
360# CHECK-NEXT:   ExpectedLatency: 0c
361# CHECK-NEXT:   - Latency limited.
362# CHECK-NEXT: CortexA55UnitALU(0) = 0
363# CHECK-NEXT: CortexA55UnitALU(1) = 0
364# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
365# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
366# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
367# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
368# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
369# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
370# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
371# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
372# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
373# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
374# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
375# CHECK-NEXT:   Resource booking (@1c):
376# CHECK-NEXT: CortexA55UnitALU(0) = 0
377# CHECK-NEXT: CortexA55UnitALU(1) = 0
378# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
379# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
380# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
381# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
382# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
383# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
384# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
385# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
386# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
387# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
388# CHECK-NEXT:   getNextResourceCycle (@1c):
389# CHECK-NEXT:     Instance 0 available @1c
390# CHECK-NEXT:     Instance 1 available @1c
391# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @1c
392# CHECK-NEXT: Queue BotQ.P:
393# CHECK-NEXT: Queue BotQ.A: 0
394# CHECK-NEXT: Scheduling SU(0) $x3 = ADDXrr $x0, $x0
395# CHECK-NEXT:   Ready @1c
396# CHECK-NEXT:   CortexA55UnitALU +1x1u
397# CHECK-NEXT:   Resource booking (@1c):
398# CHECK-NEXT: CortexA55UnitALU(0) = 0
399# CHECK-NEXT: CortexA55UnitALU(1) = 0
400# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
401# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
402# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
403# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
404# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
405# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
406# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
407# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
408# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
409# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
410# CHECK-NEXT:   getNextResourceCycle (@1c):
411# CHECK-NEXT:     Instance 0 available @1c
412# CHECK-NEXT:     Instance 1 available @1c
413# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @1c
414# CHECK-NEXT:   Resource booking (@1c):
415# CHECK-NEXT: CortexA55UnitALU(0) = 0
416# CHECK-NEXT: CortexA55UnitALU(1) = 0
417# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
418# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
419# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
420# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
421# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
422# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
423# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
424# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
425# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
426# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
427# CHECK-NEXT:   getNextResourceCycle (@1c):
428# CHECK-NEXT:     Instance 0 available @1c
429# CHECK-NEXT:     Instance 1 available @1c
430# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @1c
431# CHECK-NEXT: BotQ.A @1c
432# CHECK-NEXT:   Retired: 3
433# CHECK-NEXT:   Executed: 1c
434# CHECK-NEXT:   Critical: 1c, 3 MOps
435# CHECK-NEXT:   ExpectedLatency: 0c
436# CHECK-NEXT:   - Latency limited.
437# CHECK-NEXT: CortexA55UnitALU(0) = 1
438# CHECK-NEXT: CortexA55UnitALU(1) = 0
439# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
440# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
441# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
442# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
443# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
444# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
445# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
446# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
447# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
448# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
449# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
450# CHECK-NEXT: *** Final schedule for %bb.0 ***
451# CHECK-NEXT:  * Schedule table (BottomUp):
452# CHECK-NEXT:   i: issue
453# CHECK-NEXT:   x: resource booked
454# CHECK-NEXT: Cycle              | 1 | 0 |
455# CHECK-NEXT: SU(0)              | i |   |
456# CHECK-NEXT:   CortexA55UnitALU | x |   |
457# CHECK-NEXT: SU(1)              |   | i |
458# CHECK-NEXT:   CortexA55UnitALU |   | x |
459# CHECK-NEXT: SU(2)              |   | i |
460# CHECK-NEXT:   CortexA55UnitALU |   | x |
461# CHECK-NEXT: SU(0) [TopReadyCycle = 0, BottomReadyCycle = 1]:   $x3 = ADDXrr $x0, $x0
462# CHECK-NEXT: SU(1) [TopReadyCycle = 0, BottomReadyCycle = 0]:   $x4 = ADDXrr $x1, $x1
463# CHECK-NEXT: SU(2) [TopReadyCycle = 0, BottomReadyCycle = 0]:   $x5 = ADDXrr $x2, $x2
464# CHECK-EMPTY:
465# CHECK-NEXT: ********** INTERVALS **********
466# CHECK-NEXT: W0 [0B,16r:0) 0@0B-phi
467# CHECK-NEXT: W1 [0B,32r:0) 0@0B-phi
468# CHECK-NEXT: W2 [0B,48r:0) 0@0B-phi
469# CHECK-NEXT: W0_HI [0B,16r:0) 0@0B-phi
470# CHECK-NEXT: W1_HI [0B,32r:0) 0@0B-phi
471# CHECK-NEXT: W2_HI [0B,48r:0) 0@0B-phi
472# CHECK-NEXT: RegMasks:
473# CHECK-NEXT: ********** MACHINEINSTRS **********
474# CHECK-NEXT: # Machine code for function f: IsSSA, NoPHIs, TracksLiveness, NoVRegs
475# CHECK-EMPTY:
476# CHECK-NEXT: 0B	bb.0:
477# CHECK-NEXT: 	  liveins: $x0, $x1, $x2
478# CHECK-NEXT: 16B	  $x3 = ADDXrr $x0, $x0
479# CHECK-NEXT: 32B	  $x4 = ADDXrr $x1, $x1
480# CHECK-NEXT: 48B	  $x5 = ADDXrr $x2, $x2
481# CHECK-EMPTY:
482# CHECK-NEXT: # End machine code for function f.
483