xref: /llvm-project/llvm/test/CodeGen/AArch64/misched-detail-resource-booking-01.mir (revision 61510b51c33464a6bc15e4cf5b1ee07e2e0ec1c9)
1# RUN: llc -mtriple=aarch64-none-linux-gnu -mattr=+neon  -mcpu=cortex-a55 %s -o - 2>&1 \
2# RUN:   -misched-dump-reserved-cycles=true \
3# RUN:   -run-pass=machine-scheduler -debug-only=machine-scheduler \
4# RUN:   -misched-prera-direction=bottomup -sched-print-cycles=true \
5# RUN:   -misched-detail-resource-booking=true \
6# RUN:   -misched-dump-schedule-trace=true -misched-dump-schedule-trace-col-header-width=21 \
7# RUN: | FileCheck  %s
8
9# REQUIRES: asserts, aarch64-registered-target
10
11--- |
12  ; ModuleID = '../llvm-project/llvm/test/CodeGen/AArch64/aarch64-smull.failing.ll'
13  source_filename = "../llvm-project/llvm/test/CodeGen/AArch64/aarch64-smull.failing.ll"
14  target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
15  target triple = "aarch64-none-linux-gnu"
16
17  define <8 x i32> @umull_and_v8i32(<8 x i16> %src1, <8 x i32> %src2) #0 {
18  entry:
19    %in1 = zext <8 x i16> %src1 to <8 x i32>
20    %in2 = and <8 x i32> %src2, <i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255>
21    %out = mul nsw <8 x i32> %in1, %in2
22    ret <8 x i32> %out
23  }
24
25  attributes #0 = { "target-features"="+neon" }
26
27...
28---
29name:            umull_and_v8i32
30alignment:       4
31tracksRegLiveness: true
32registers:
33  - { id: 0, class: fpr128 }
34  - { id: 1, class: fpr128 }
35  - { id: 2, class: fpr128 }
36  - { id: 3, class: fpr128 }
37  - { id: 4, class: fpr64 }
38  - { id: 5, class: fpr64 }
39  - { id: 6, class: fpr128 }
40  - { id: 7, class: fpr128 }
41  - { id: 8, class: fpr128 }
42  - { id: 9, class: fpr64 }
43  - { id: 10, class: fpr128 }
44  - { id: 11, class: fpr64 }
45  - { id: 12, class: fpr128 }
46liveins:
47  - { reg: '$q0', virtual-reg: '%0' }
48  - { reg: '$q1', virtual-reg: '%1' }
49  - { reg: '$q2', virtual-reg: '%2' }
50frameInfo:
51  maxAlignment:    1
52  maxCallFrameSize: 0
53machineFunctionInfo: {}
54body:             |
55  bb.0.entry:
56    liveins: $q0, $q1, $q2
57
58    %2:fpr128 = COPY $q2
59    %1:fpr128 = COPY $q1
60    %0:fpr128 = COPY $q0
61    %3:fpr128 = EXTv16i8 %0, %0, 8
62    %6:fpr128 = MOVIv2d_ns 17
63    %7:fpr128 = ANDv16i8 %2, %6
64    %8:fpr128 = ANDv16i8 %1, %6
65    %9:fpr64 = XTNv4i16 %8
66    %10:fpr128 = UMULLv4i16_v4i32 %0.dsub, %9
67    %11:fpr64 = XTNv4i16 %7
68    %12:fpr128 = UMULLv4i16_v4i32 %3.dsub, %11
69    $q0 = COPY %10
70    $q1 = COPY %12
71    RET_ReallyLR implicit $q0, implicit $q1
72
73...
74
75# CHECK-LABEL: Before MISched:
76# CHECK-NEXT: # Machine code for function umull_and_v8i32: IsSSA, NoPHIs, TracksLiveness
77# CHECK-NEXT: Function Live Ins: $q0 in %0, $q1 in %1, $q2 in %2
78# CHECK-EMPTY:
79# CHECK-NEXT: bb.0.entry:
80# CHECK-NEXT:   liveins: $q0, $q1, $q2
81# CHECK-NEXT:   %2:fpr128 = COPY $q2
82# CHECK-NEXT:   %1:fpr128 = COPY $q1
83# CHECK-NEXT:   %0:fpr128 = COPY $q0
84# CHECK-NEXT:   %3:fpr128 = EXTv16i8 %0:fpr128, %0:fpr128, 8
85# CHECK-NEXT:   %6:fpr128 = MOVIv2d_ns 17
86# CHECK-NEXT:   %7:fpr128 = ANDv16i8 %2:fpr128, %6:fpr128
87# CHECK-NEXT:   %8:fpr128 = ANDv16i8 %1:fpr128, %6:fpr128
88# CHECK-NEXT:   %9:fpr64 = XTNv4i16 %8:fpr128
89# CHECK-NEXT:   %10:fpr128 = UMULLv4i16_v4i32 %0.dsub:fpr128, %9:fpr64
90# CHECK-NEXT:   %11:fpr64 = XTNv4i16 %7:fpr128
91# CHECK-NEXT:   %12:fpr128 = UMULLv4i16_v4i32 %3.dsub:fpr128, %11:fpr64
92# CHECK-NEXT:   $q0 = COPY %10:fpr128
93# CHECK-NEXT:   $q1 = COPY %12:fpr128
94# CHECK-NEXT:   RET_ReallyLR implicit $q0, implicit $q1
95# CHECK-EMPTY:
96# CHECK-NEXT: # End machine code for function umull_and_v8i32.
97# CHECK-EMPTY:
98# CHECK-NEXT: ********** MI Scheduling **********
99# CHECK-NEXT: umull_and_v8i32:%bb.0 entry
100# CHECK-NEXT:   From: %2:fpr128 = COPY $q2
101# CHECK-NEXT:     To: RET_ReallyLR implicit $q0, implicit $q1
102# CHECK-NEXT:  RegionInstrs: 13
103# CHECK-NEXT: ScheduleDAGMILive::schedule starting
104# CHECK-NEXT: GenericScheduler RegionPolicy:  ShouldTrackPressure=0 OnlyTopDown=0 OnlyBottomUp=1
105# CHECK-NEXT: Disabled scoreboard hazard recognizer
106# CHECK-NEXT: Disabled scoreboard hazard recognizer
107# CHECK-NEXT: SU(0) [TopReadyCycle = 0, BottomReadyCycle = 0]:   %2:fpr128 = COPY $q2
108# CHECK-NEXT:   # preds left       : 0
109# CHECK-NEXT:   # succs left       : 1
110# CHECK-NEXT:   # rdefs left       : 0
111# CHECK-NEXT:   Latency            : 3
112# CHECK-NEXT:   Depth              : 0
113# CHECK-NEXT:   Height             : 13
114# CHECK-NEXT:   Successors:
115# CHECK-NEXT:     SU(5): Data Latency=3 Reg=%2
116# CHECK-NEXT:   Single Issue       : false;
117# CHECK-NEXT: SU(1) [TopReadyCycle = 0, BottomReadyCycle = 0]:   %1:fpr128 = COPY $q1
118# CHECK-NEXT:   # preds left       : 0
119# CHECK-NEXT:   # succs left       : 2
120# CHECK-NEXT:   # rdefs left       : 0
121# CHECK-NEXT:   Latency            : 3
122# CHECK-NEXT:   Depth              : 0
123# CHECK-NEXT:   Height             : 13
124# CHECK-NEXT:   Successors:
125# CHECK-NEXT:     SU(6): Data Latency=3 Reg=%1
126# CHECK-NEXT:     SU(12): Anti Latency=0
127# CHECK-NEXT:   Single Issue       : false;
128# CHECK-NEXT: SU(2) [TopReadyCycle = 0, BottomReadyCycle = 0]:   %0:fpr128 = COPY $q0
129# CHECK-NEXT:   # preds left       : 0
130# CHECK-NEXT:   # succs left       : 3
131# CHECK-NEXT:   # rdefs left       : 0
132# CHECK-NEXT:   Latency            : 3
133# CHECK-NEXT:   Depth              : 0
134# CHECK-NEXT:   Height             : 14
135# CHECK-NEXT:   Successors:
136# CHECK-NEXT:     SU(8): Data Latency=3 Reg=%0
137# CHECK-NEXT:     SU(3): Data Latency=3 Reg=%0
138# CHECK-NEXT:     SU(11): Anti Latency=0
139# CHECK-NEXT:   Single Issue       : false;
140# CHECK-NEXT: SU(3) [TopReadyCycle = 0, BottomReadyCycle = 0]:   %3:fpr128 = EXTv16i8 %0:fpr128, %0:fpr128, 8
141# CHECK-NEXT:   # preds left       : 1
142# CHECK-NEXT:   # succs left       : 1
143# CHECK-NEXT:   # rdefs left       : 0
144# CHECK-NEXT:   Latency            : 4
145# CHECK-NEXT:   Depth              : 3
146# CHECK-NEXT:   Height             : 11
147# CHECK-NEXT:   Predecessors:
148# CHECK-NEXT:     SU(2): Data Latency=3 Reg=%0
149# CHECK-NEXT:   Successors:
150# CHECK-NEXT:     SU(10): Data Latency=4 Reg=%3
151# CHECK-NEXT:   Single Issue       : false;
152# CHECK-NEXT: SU(4) [TopReadyCycle = 0, BottomReadyCycle = 0]:   %6:fpr128 = MOVIv2d_ns 17
153# CHECK-NEXT:   # preds left       : 0
154# CHECK-NEXT:   # succs left       : 2
155# CHECK-NEXT:   # rdefs left       : 0
156# CHECK-NEXT:   Latency            : 4
157# CHECK-NEXT:   Depth              : 0
158# CHECK-NEXT:   Height             : 14
159# CHECK-NEXT:   Successors:
160# CHECK-NEXT:     SU(6): Data Latency=4 Reg=%6
161# CHECK-NEXT:     SU(5): Data Latency=4 Reg=%6
162# CHECK-NEXT:   Single Issue       : false;
163# CHECK-NEXT: SU(5) [TopReadyCycle = 0, BottomReadyCycle = 0]:   %7:fpr128 = ANDv16i8 %2:fpr128, %6:fpr128
164# CHECK-NEXT:   # preds left       : 2
165# CHECK-NEXT:   # succs left       : 1
166# CHECK-NEXT:   # rdefs left       : 0
167# CHECK-NEXT:   Latency            : 1
168# CHECK-NEXT:   Depth              : 4
169# CHECK-NEXT:   Height             : 10
170# CHECK-NEXT:   Predecessors:
171# CHECK-NEXT:     SU(4): Data Latency=4 Reg=%6
172# CHECK-NEXT:     SU(0): Data Latency=3 Reg=%2
173# CHECK-NEXT:   Successors:
174# CHECK-NEXT:     SU(9): Data Latency=1 Reg=%7
175# CHECK-NEXT:   Single Issue       : false;
176# CHECK-NEXT: SU(6) [TopReadyCycle = 0, BottomReadyCycle = 0]:   %8:fpr128 = ANDv16i8 %1:fpr128, %6:fpr128
177# CHECK-NEXT:   # preds left       : 2
178# CHECK-NEXT:   # succs left       : 1
179# CHECK-NEXT:   # rdefs left       : 0
180# CHECK-NEXT:   Latency            : 1
181# CHECK-NEXT:   Depth              : 4
182# CHECK-NEXT:   Height             : 10
183# CHECK-NEXT:   Predecessors:
184# CHECK-NEXT:     SU(4): Data Latency=4 Reg=%6
185# CHECK-NEXT:     SU(1): Data Latency=3 Reg=%1
186# CHECK-NEXT:   Successors:
187# CHECK-NEXT:     SU(7): Data Latency=1 Reg=%8
188# CHECK-NEXT:   Single Issue       : false;
189# CHECK-NEXT: SU(7) [TopReadyCycle = 0, BottomReadyCycle = 0]:   %9:fpr64 = XTNv4i16 %8:fpr128
190# CHECK-NEXT:   # preds left       : 1
191# CHECK-NEXT:   # succs left       : 1
192# CHECK-NEXT:   # rdefs left       : 0
193# CHECK-NEXT:   Latency            : 2
194# CHECK-NEXT:   Depth              : 5
195# CHECK-NEXT:   Height             : 9
196# CHECK-NEXT:   Predecessors:
197# CHECK-NEXT:     SU(6): Data Latency=1 Reg=%8
198# CHECK-NEXT:   Successors:
199# CHECK-NEXT:     SU(8): Data Latency=2 Reg=%9
200# CHECK-NEXT:   Single Issue       : false;
201# CHECK-NEXT: SU(8) [TopReadyCycle = 0, BottomReadyCycle = 0]:   %10:fpr128 = UMULLv4i16_v4i32 %0.dsub:fpr128, %9:fpr64
202# CHECK-NEXT:   # preds left       : 2
203# CHECK-NEXT:   # succs left       : 1
204# CHECK-NEXT:   # rdefs left       : 0
205# CHECK-NEXT:   Latency            : 4
206# CHECK-NEXT:   Depth              : 7
207# CHECK-NEXT:   Height             : 7
208# CHECK-NEXT:   Predecessors:
209# CHECK-NEXT:     SU(7): Data Latency=2 Reg=%9
210# CHECK-NEXT:     SU(2): Data Latency=3 Reg=%0
211# CHECK-NEXT:   Successors:
212# CHECK-NEXT:     SU(11): Data Latency=4 Reg=%10
213# CHECK-NEXT:   Single Issue       : false;
214# CHECK-NEXT: SU(9) [TopReadyCycle = 0, BottomReadyCycle = 0]:   %11:fpr64 = XTNv4i16 %7:fpr128
215# CHECK-NEXT:   # preds left       : 1
216# CHECK-NEXT:   # succs left       : 1
217# CHECK-NEXT:   # rdefs left       : 0
218# CHECK-NEXT:   Latency            : 2
219# CHECK-NEXT:   Depth              : 5
220# CHECK-NEXT:   Height             : 9
221# CHECK-NEXT:   Predecessors:
222# CHECK-NEXT:     SU(5): Data Latency=1 Reg=%7
223# CHECK-NEXT:   Successors:
224# CHECK-NEXT:     SU(10): Data Latency=2 Reg=%11
225# CHECK-NEXT:   Single Issue       : false;
226# CHECK-NEXT: SU(10) [TopReadyCycle = 0, BottomReadyCycle = 0]:   %12:fpr128 = UMULLv4i16_v4i32 %3.dsub:fpr128, %11:fpr64
227# CHECK-NEXT:   # preds left       : 2
228# CHECK-NEXT:   # succs left       : 1
229# CHECK-NEXT:   # rdefs left       : 0
230# CHECK-NEXT:   Latency            : 4
231# CHECK-NEXT:   Depth              : 7
232# CHECK-NEXT:   Height             : 7
233# CHECK-NEXT:   Predecessors:
234# CHECK-NEXT:     SU(9): Data Latency=2 Reg=%11
235# CHECK-NEXT:     SU(3): Data Latency=4 Reg=%3
236# CHECK-NEXT:   Successors:
237# CHECK-NEXT:     SU(12): Data Latency=4 Reg=%12
238# CHECK-NEXT:   Single Issue       : false;
239# CHECK-NEXT: SU(11) [TopReadyCycle = 0, BottomReadyCycle = 0]:   $q0 = COPY %10:fpr128
240# CHECK-NEXT:   # preds left       : 2
241# CHECK-NEXT:   # succs left       : 1
242# CHECK-NEXT:   # rdefs left       : 0
243# CHECK-NEXT:   Latency            : 3
244# CHECK-NEXT:   Depth              : 11
245# CHECK-NEXT:   Height             : 3
246# CHECK-NEXT:   Predecessors:
247# CHECK-NEXT:     SU(8): Data Latency=4 Reg=%10
248# CHECK-NEXT:     SU(2): Anti Latency=0
249# CHECK-NEXT:   Successors:
250# CHECK-NEXT:     ExitSU: Ord  Latency=3 Artificial
251# CHECK-NEXT:   Single Issue       : false;
252# CHECK-NEXT: SU(12) [TopReadyCycle = 0, BottomReadyCycle = 0]:   $q1 = COPY %12:fpr128
253# CHECK-NEXT:   # preds left       : 2
254# CHECK-NEXT:   # succs left       : 1
255# CHECK-NEXT:   # rdefs left       : 0
256# CHECK-NEXT:   Latency            : 3
257# CHECK-NEXT:   Depth              : 11
258# CHECK-NEXT:   Height             : 3
259# CHECK-NEXT:   Predecessors:
260# CHECK-NEXT:     SU(10): Data Latency=4 Reg=%12
261# CHECK-NEXT:     SU(1): Anti Latency=0
262# CHECK-NEXT:   Successors:
263# CHECK-NEXT:     ExitSU: Ord  Latency=3 Artificial
264# CHECK-NEXT:   Single Issue       : false;
265# CHECK-NEXT: ExitSU [TopReadyCycle = 0, BottomReadyCycle = 0]:   RET_ReallyLR implicit $q0, implicit $q1
266# CHECK-NEXT:   # preds left       : 2
267# CHECK-NEXT:   # succs left       : 0
268# CHECK-NEXT:   # rdefs left       : 0
269# CHECK-NEXT:   Latency            : 0
270# CHECK-NEXT:   Depth              : 14
271# CHECK-NEXT:   Height             : 0
272# CHECK-NEXT:   Predecessors:
273# CHECK-NEXT:     SU(12): Ord  Latency=3 Artificial
274# CHECK-NEXT:     SU(11): Ord  Latency=3 Artificial
275# CHECK-NEXT:   Resource booking (@0c):
276# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
277# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
278# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
279# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
280# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
281# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
282# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
283# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
284# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
285# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
286# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
287# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
288# CHECK-NEXT:   getNextResourceCycle (@0c):
289# CHECK-NEXT:     Instance 0 available @0c
290# CHECK-NEXT:     Instance 1 available @0c
291# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @0c
292# CHECK-NEXT:   Resource booking (@0c):
293# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
294# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
295# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
296# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
297# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
298# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
299# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
300# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
301# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
302# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
303# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
304# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
305# CHECK-NEXT:   getNextResourceCycle (@0c):
306# CHECK-NEXT:     Instance 0 available @0c
307# CHECK-NEXT:     Instance 1 available @0c
308# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @0c
309# CHECK-NEXT:   Resource booking (@0c):
310# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
311# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
312# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
313# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
314# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
315# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
316# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
317# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
318# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
319# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
320# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
321# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
322# CHECK-NEXT:   getNextResourceCycle (@0c):
323# CHECK-NEXT:     Instance 0 available @0c
324# CHECK-NEXT:     Instance 1 available @0c
325# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @0c
326# CHECK-NEXT:   Resource booking (@0c):
327# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
328# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
329# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
330# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
331# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
332# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
333# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
334# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
335# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
336# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
337# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
338# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
339# CHECK-NEXT:   getNextResourceCycle (@0c):
340# CHECK-NEXT:     Instance 0 available @0c
341# CHECK-NEXT:     Instance 1 available @0c
342# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @0c
343# CHECK-NEXT: Critical Path(GS-RR ): 14
344# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
345# CHECK-NEXT: Cycle: 3 BotQ.A
346# CHECK-NEXT:   Resource booking (@3c):
347# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
348# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
349# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
350# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
351# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
352# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
353# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
354# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
355# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
356# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
357# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
358# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
359# CHECK-NEXT:   getNextResourceCycle (@3c):
360# CHECK-NEXT:     Instance 0 available @3c
361# CHECK-NEXT:     Instance 1 available @3c
362# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @3c
363# CHECK-NEXT:   Resource booking (@3c):
364# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
365# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
366# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
367# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
368# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
369# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
370# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
371# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
372# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
373# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
374# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
375# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
376# CHECK-NEXT:   getNextResourceCycle (@3c):
377# CHECK-NEXT:     Instance 0 available @3c
378# CHECK-NEXT:     Instance 1 available @3c
379# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @3c
380# CHECK-NEXT: Queue BotQ.P:
381# CHECK-NEXT: Queue BotQ.A: 12 11
382# CHECK-NEXT:   Cand SU(12) ORDER
383# CHECK-NEXT: Pick Bot ORDER
384# CHECK-NEXT: Scheduling SU(12) $q1 = COPY %12:fpr128
385# CHECK-NEXT:   Ready @3c
386# CHECK-NEXT:   CortexA55UnitALU +1x1u
387# CHECK-NEXT:   Resource booking (@3c):
388# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
389# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
390# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
391# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
392# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
393# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
394# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
395# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
396# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
397# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
398# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
399# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
400# CHECK-NEXT:   getNextResourceCycle (@3c):
401# CHECK-NEXT:     Instance 0 available @3c
402# CHECK-NEXT:     Instance 1 available @3c
403# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @3c
404# CHECK-NEXT:   Resource booking (@3c):
405# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
406# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
407# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
408# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
409# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
410# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
411# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
412# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
413# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
414# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
415# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
416# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
417# CHECK-NEXT:   getNextResourceCycle (@3c):
418# CHECK-NEXT:     Instance 0 available @3c
419# CHECK-NEXT:     Instance 1 available @3c
420# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @3c
421# CHECK-NEXT:   BotQ.A TopLatency SU(12) 11c
422# CHECK-NEXT:   BotQ.A BotLatency SU(12) 3c
423# CHECK-NEXT: BotQ.A @3c
424# CHECK-NEXT:   Retired: 1
425# CHECK-NEXT:   Executed: 3c
426# CHECK-NEXT:   Critical: 0c, 1 MOps
427# CHECK-NEXT:   ExpectedLatency: 3c
428# CHECK-NEXT:   - Latency limited.
429# CHECK-NEXT: CortexA55UnitALU(0) = 3
430# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
431# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
432# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
433# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
434# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
435# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
436# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
437# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
438# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
439# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
440# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
441# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
442# CHECK-NEXT:   Resource booking (@3c):
443# CHECK-NEXT: CortexA55UnitALU(0) = 3
444# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
445# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
446# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
447# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
448# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
449# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
450# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
451# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
452# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
453# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
454# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
455# CHECK-NEXT:   getNextResourceCycle (@3c):
456# CHECK-NEXT:     Instance 0 available @4c
457# CHECK-NEXT:     Instance 1 available @3c
458# CHECK-NEXT:     selecting CortexA55UnitALU[1] available @3c
459# CHECK-NEXT: Queue BotQ.P: 10
460# CHECK-NEXT: Queue BotQ.A: 11
461# CHECK-NEXT: Scheduling SU(11) $q0 = COPY %10:fpr128
462# CHECK-NEXT:   Ready @3c
463# CHECK-NEXT:   CortexA55UnitALU +1x1u
464# CHECK-NEXT:   Resource booking (@3c):
465# CHECK-NEXT: CortexA55UnitALU(0) = 3
466# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
467# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
468# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
469# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
470# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
471# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
472# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
473# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
474# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
475# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
476# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
477# CHECK-NEXT:   getNextResourceCycle (@3c):
478# CHECK-NEXT:     Instance 0 available @4c
479# CHECK-NEXT:     Instance 1 available @3c
480# CHECK-NEXT:     selecting CortexA55UnitALU[1] available @3c
481# CHECK-NEXT:   Resource booking (@3c):
482# CHECK-NEXT: CortexA55UnitALU(0) = 3
483# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
484# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
485# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
486# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
487# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
488# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
489# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
490# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
491# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
492# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
493# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
494# CHECK-NEXT:   getNextResourceCycle (@3c):
495# CHECK-NEXT:     Instance 0 available @4c
496# CHECK-NEXT:     Instance 1 available @3c
497# CHECK-NEXT:     selecting CortexA55UnitALU[1] available @3c
498# CHECK-NEXT:   *** Max MOps 2 at cycle 3
499# CHECK-NEXT: Cycle: 4 BotQ.A
500# CHECK-NEXT: BotQ.A @4c
501# CHECK-NEXT:   Retired: 2
502# CHECK-NEXT:   Executed: 4c
503# CHECK-NEXT:   Critical: 1c, 2 MOps
504# CHECK-NEXT:   ExpectedLatency: 3c
505# CHECK-NEXT:   - Latency limited.
506# CHECK-NEXT: CortexA55UnitALU(0) = 3
507# CHECK-NEXT: CortexA55UnitALU(1) = 3
508# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
509# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
510# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
511# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
512# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
513# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
514# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
515# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
516# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
517# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
518# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
519# CHECK-NEXT: Cycle: 7 BotQ.A
520# CHECK-NEXT:   Resource booking (@7c):
521# CHECK-NEXT: CortexA55UnitALU(0) = 3
522# CHECK-NEXT: CortexA55UnitALU(1) = 3
523# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
524# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
525# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
526# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
527# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
528# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
529# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
530# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
531# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
532# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
533# CHECK-NEXT:   getNextResourceCycle (@7c):
534# CHECK-NEXT:     Instance 0 available @7c
535# CHECK-NEXT:     Instance 1 available @7c
536# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @7c
537# CHECK-NEXT:   Resource booking (@7c):
538# CHECK-NEXT: CortexA55UnitALU(0) = 3
539# CHECK-NEXT: CortexA55UnitALU(1) = 3
540# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
541# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
542# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
543# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
544# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
545# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
546# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
547# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
548# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
549# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
550# CHECK-NEXT:   getNextResourceCycle (@7c):
551# CHECK-NEXT:     Instance 0 available @7c
552# CHECK-NEXT:     Instance 1 available @7c
553# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @7c
554# CHECK-NEXT: Queue BotQ.P:
555# CHECK-NEXT: Queue BotQ.A: 10 8
556# CHECK-NEXT:   Cand SU(10) ORDER
557# CHECK-NEXT: Pick Bot ORDER
558# CHECK-NEXT: Scheduling SU(10) %12:fpr128 = UMULLv4i16_v4i32 %3.dsub:fpr128, %11:fpr64
559# CHECK-NEXT:   Ready @7c
560# CHECK-NEXT:   CortexA55UnitFPALU +2x1u
561# CHECK-NEXT:   Resource booking (@7c):
562# CHECK-NEXT: CortexA55UnitALU(0) = 3
563# CHECK-NEXT: CortexA55UnitALU(1) = 3
564# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
565# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
566# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
567# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
568# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
569# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
570# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
571# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
572# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
573# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
574# CHECK-NEXT:   getNextResourceCycle (@7c):
575# CHECK-NEXT:     Instance 0 available @7c
576# CHECK-NEXT:     Instance 1 available @7c
577# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @7c
578# CHECK-NEXT:   Resource booking (@7c):
579# CHECK-NEXT: CortexA55UnitALU(0) = 3
580# CHECK-NEXT: CortexA55UnitALU(1) = 3
581# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
582# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
583# CHECK-NEXT: CortexA55UnitFPALU(0) = 4294967295
584# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
585# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
586# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
587# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
588# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
589# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
590# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
591# CHECK-NEXT:   getNextResourceCycle (@7c):
592# CHECK-NEXT:     Instance 0 available @7c
593# CHECK-NEXT:     Instance 1 available @7c
594# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @7c
595# CHECK-NEXT:   BotQ.A BotLatency SU(10) 7c
596# CHECK-NEXT:   Bump cycle to begin group
597# CHECK-NEXT: Cycle: 8 BotQ.A
598# CHECK-NEXT: BotQ.A @8c
599# CHECK-NEXT:   Retired: 3
600# CHECK-NEXT:   Executed: 8c
601# CHECK-NEXT:   Critical: 1c, 3 MOps
602# CHECK-NEXT:   ExpectedLatency: 7c
603# CHECK-NEXT:   - Latency limited.
604# CHECK-NEXT: CortexA55UnitALU(0) = 3
605# CHECK-NEXT: CortexA55UnitALU(1) = 3
606# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
607# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
608# CHECK-NEXT: CortexA55UnitFPALU(0) = 7
609# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
610# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
611# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
612# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
613# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
614# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
615# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
616# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
617# CHECK-NEXT:   Resource booking (@8c):
618# CHECK-NEXT: CortexA55UnitALU(0) = 3
619# CHECK-NEXT: CortexA55UnitALU(1) = 3
620# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
621# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
622# CHECK-NEXT: CortexA55UnitFPALU(0) = 7
623# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
624# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
625# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
626# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
627# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
628# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
629# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
630# CHECK-NEXT:   getNextResourceCycle (@8c):
631# CHECK-NEXT:     Instance 0 available @9c
632# CHECK-NEXT:     Instance 1 available @8c
633# CHECK-NEXT:     selecting CortexA55UnitFPALU[1] available @8c
634# CHECK-NEXT: Queue BotQ.P: 9 3
635# CHECK-NEXT: Queue BotQ.A: 8
636# CHECK-NEXT: Scheduling SU(8) %10:fpr128 = UMULLv4i16_v4i32 %0.dsub:fpr128, %9:fpr64
637# CHECK-NEXT:   Ready @8c
638# CHECK-NEXT:   CortexA55UnitFPALU +2x1u
639# CHECK-NEXT:   Resource booking (@8c):
640# CHECK-NEXT: CortexA55UnitALU(0) = 3
641# CHECK-NEXT: CortexA55UnitALU(1) = 3
642# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
643# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
644# CHECK-NEXT: CortexA55UnitFPALU(0) = 7
645# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
646# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
647# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
648# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
649# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
650# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
651# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
652# CHECK-NEXT:   getNextResourceCycle (@8c):
653# CHECK-NEXT:     Instance 0 available @9c
654# CHECK-NEXT:     Instance 1 available @8c
655# CHECK-NEXT:     selecting CortexA55UnitFPALU[1] available @8c
656# CHECK-NEXT:   Resource booking (@8c):
657# CHECK-NEXT: CortexA55UnitALU(0) = 3
658# CHECK-NEXT: CortexA55UnitALU(1) = 3
659# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
660# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
661# CHECK-NEXT: CortexA55UnitFPALU(0) = 7
662# CHECK-NEXT: CortexA55UnitFPALU(1) = 4294967295
663# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
664# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
665# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
666# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
667# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
668# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
669# CHECK-NEXT:   getNextResourceCycle (@8c):
670# CHECK-NEXT:     Instance 0 available @9c
671# CHECK-NEXT:     Instance 1 available @8c
672# CHECK-NEXT:     selecting CortexA55UnitFPALU[1] available @8c
673# CHECK-NEXT:   BotQ.A TopLatency SU(8) 7c
674# CHECK-NEXT:   Bump cycle to begin group
675# CHECK-NEXT: Cycle: 9 BotQ.A
676# CHECK-NEXT: BotQ.A @9c
677# CHECK-NEXT:   Retired: 4
678# CHECK-NEXT:   Executed: 9c
679# CHECK-NEXT:   Critical: 2c, 4 MOps
680# CHECK-NEXT:   ExpectedLatency: 7c
681# CHECK-NEXT:   - Latency limited.
682# CHECK-NEXT: CortexA55UnitALU(0) = 3
683# CHECK-NEXT: CortexA55UnitALU(1) = 3
684# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
685# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
686# CHECK-NEXT: CortexA55UnitFPALU(0) = 7
687# CHECK-NEXT: CortexA55UnitFPALU(1) = 8
688# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
689# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
690# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
691# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
692# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
693# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
694# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
695# CHECK-NEXT:   Resource booking (@9c):
696# CHECK-NEXT: CortexA55UnitALU(0) = 3
697# CHECK-NEXT: CortexA55UnitALU(1) = 3
698# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
699# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
700# CHECK-NEXT: CortexA55UnitFPALU(0) = 7
701# CHECK-NEXT: CortexA55UnitFPALU(1) = 8
702# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
703# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
704# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
705# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
706# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
707# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
708# CHECK-NEXT:   getNextResourceCycle (@9c):
709# CHECK-NEXT:     Instance 0 available @9c
710# CHECK-NEXT:     Instance 1 available @9c
711# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @9c
712# CHECK-NEXT:   Resource booking (@9c):
713# CHECK-NEXT: CortexA55UnitALU(0) = 3
714# CHECK-NEXT: CortexA55UnitALU(1) = 3
715# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
716# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
717# CHECK-NEXT: CortexA55UnitFPALU(0) = 7
718# CHECK-NEXT: CortexA55UnitFPALU(1) = 8
719# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
720# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
721# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
722# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
723# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
724# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
725# CHECK-NEXT:   getNextResourceCycle (@9c):
726# CHECK-NEXT:     Instance 0 available @9c
727# CHECK-NEXT:     Instance 1 available @9c
728# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @9c
729# CHECK-NEXT: Queue BotQ.P: 7 3
730# CHECK-NEXT: Queue BotQ.A: 9
731# CHECK-NEXT: Scheduling SU(9) %11:fpr64 = XTNv4i16 %7:fpr128
732# CHECK-NEXT:   Ready @9c
733# CHECK-NEXT:   CortexA55UnitFPALU +1x1u
734# CHECK-NEXT:   Resource booking (@9c):
735# CHECK-NEXT: CortexA55UnitALU(0) = 3
736# CHECK-NEXT: CortexA55UnitALU(1) = 3
737# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
738# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
739# CHECK-NEXT: CortexA55UnitFPALU(0) = 7
740# CHECK-NEXT: CortexA55UnitFPALU(1) = 8
741# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
742# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
743# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
744# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
745# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
746# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
747# CHECK-NEXT:   getNextResourceCycle (@9c):
748# CHECK-NEXT:     Instance 0 available @9c
749# CHECK-NEXT:     Instance 1 available @9c
750# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @9c
751# CHECK-NEXT:   Resource booking (@9c):
752# CHECK-NEXT: CortexA55UnitALU(0) = 3
753# CHECK-NEXT: CortexA55UnitALU(1) = 3
754# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
755# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
756# CHECK-NEXT: CortexA55UnitFPALU(0) = 7
757# CHECK-NEXT: CortexA55UnitFPALU(1) = 8
758# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
759# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
760# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
761# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
762# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
763# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
764# CHECK-NEXT:   getNextResourceCycle (@9c):
765# CHECK-NEXT:     Instance 0 available @9c
766# CHECK-NEXT:     Instance 1 available @9c
767# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @9c
768# CHECK-NEXT:   BotQ.A BotLatency SU(9) 9c
769# CHECK-NEXT: BotQ.A @9c
770# CHECK-NEXT:   Retired: 5
771# CHECK-NEXT:   Executed: 9c
772# CHECK-NEXT:   Critical: 2c, 5 MOps
773# CHECK-NEXT:   ExpectedLatency: 9c
774# CHECK-NEXT:   - Latency limited.
775# CHECK-NEXT: CortexA55UnitALU(0) = 3
776# CHECK-NEXT: CortexA55UnitALU(1) = 3
777# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
778# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
779# CHECK-NEXT: CortexA55UnitFPALU(0) = 9
780# CHECK-NEXT: CortexA55UnitFPALU(1) = 8
781# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
782# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
783# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
784# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
785# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
786# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
787# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
788# CHECK-NEXT: Cycle: 10 BotQ.A
789# CHECK-NEXT:   Resource booking (@10c):
790# CHECK-NEXT: CortexA55UnitALU(0) = 3
791# CHECK-NEXT: CortexA55UnitALU(1) = 3
792# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
793# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
794# CHECK-NEXT: CortexA55UnitFPALU(0) = 9
795# CHECK-NEXT: CortexA55UnitFPALU(1) = 8
796# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
797# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
798# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
799# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
800# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
801# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
802# CHECK-NEXT:   getNextResourceCycle (@10c):
803# CHECK-NEXT:     Instance 0 available @10c
804# CHECK-NEXT:     Instance 1 available @10c
805# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @10c
806# CHECK-NEXT:   Resource booking (@10c):
807# CHECK-NEXT: CortexA55UnitALU(0) = 3
808# CHECK-NEXT: CortexA55UnitALU(1) = 3
809# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
810# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
811# CHECK-NEXT: CortexA55UnitFPALU(0) = 9
812# CHECK-NEXT: CortexA55UnitFPALU(1) = 8
813# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
814# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
815# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
816# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
817# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
818# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
819# CHECK-NEXT:   getNextResourceCycle (@10c):
820# CHECK-NEXT:     Instance 0 available @11c
821# CHECK-NEXT:     Instance 1 available @10c
822# CHECK-NEXT:     selecting CortexA55UnitFPALU[1] available @10c
823# CHECK-NEXT: Queue BotQ.P: 3
824# CHECK-NEXT: Queue BotQ.A: 7 5
825# CHECK-NEXT:   Cand SU(7) ORDER
826# CHECK-NEXT: Pick Bot ORDER
827# CHECK-NEXT: Scheduling SU(7) %9:fpr64 = XTNv4i16 %8:fpr128
828# CHECK-NEXT:   Ready @10c
829# CHECK-NEXT:   CortexA55UnitFPALU +1x1u
830# CHECK-NEXT:   Resource booking (@10c):
831# CHECK-NEXT: CortexA55UnitALU(0) = 3
832# CHECK-NEXT: CortexA55UnitALU(1) = 3
833# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
834# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
835# CHECK-NEXT: CortexA55UnitFPALU(0) = 9
836# CHECK-NEXT: CortexA55UnitFPALU(1) = 8
837# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
838# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
839# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
840# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
841# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
842# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
843# CHECK-NEXT:   getNextResourceCycle (@10c):
844# CHECK-NEXT:     Instance 0 available @10c
845# CHECK-NEXT:     Instance 1 available @10c
846# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @10c
847# CHECK-NEXT:   Resource booking (@10c):
848# CHECK-NEXT: CortexA55UnitALU(0) = 3
849# CHECK-NEXT: CortexA55UnitALU(1) = 3
850# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
851# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
852# CHECK-NEXT: CortexA55UnitFPALU(0) = 9
853# CHECK-NEXT: CortexA55UnitFPALU(1) = 8
854# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
855# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
856# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
857# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
858# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
859# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
860# CHECK-NEXT:   getNextResourceCycle (@10c):
861# CHECK-NEXT:     Instance 0 available @10c
862# CHECK-NEXT:     Instance 1 available @10c
863# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @10c
864# CHECK-NEXT: BotQ.A @10c
865# CHECK-NEXT:   Retired: 6
866# CHECK-NEXT:   Executed: 10c
867# CHECK-NEXT:   Critical: 3c, 6 MOps
868# CHECK-NEXT:   ExpectedLatency: 9c
869# CHECK-NEXT:   - Latency limited.
870# CHECK-NEXT: CortexA55UnitALU(0) = 3
871# CHECK-NEXT: CortexA55UnitALU(1) = 3
872# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
873# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
874# CHECK-NEXT: CortexA55UnitFPALU(0) = 10
875# CHECK-NEXT: CortexA55UnitFPALU(1) = 8
876# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
877# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
878# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
879# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
880# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
881# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
882# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
883# CHECK-NEXT:   Resource booking (@10c):
884# CHECK-NEXT: CortexA55UnitALU(0) = 3
885# CHECK-NEXT: CortexA55UnitALU(1) = 3
886# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
887# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
888# CHECK-NEXT: CortexA55UnitFPALU(0) = 10
889# CHECK-NEXT: CortexA55UnitFPALU(1) = 8
890# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
891# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
892# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
893# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
894# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
895# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
896# CHECK-NEXT:   getNextResourceCycle (@10c):
897# CHECK-NEXT:     Instance 0 available @12c
898# CHECK-NEXT:     Instance 1 available @10c
899# CHECK-NEXT:     selecting CortexA55UnitFPALU[1] available @10c
900# CHECK-NEXT: Queue BotQ.P: 3 6
901# CHECK-NEXT: Queue BotQ.A: 5
902# CHECK-NEXT: Scheduling SU(5) %7:fpr128 = ANDv16i8 %2:fpr128, %6:fpr128
903# CHECK-NEXT:   Ready @10c
904# CHECK-NEXT:   CortexA55UnitFPALU +2x1u
905# CHECK-NEXT:   *** Critical resource CortexA55UnitFPALU: 4c
906# CHECK-NEXT:   Resource booking (@10c):
907# CHECK-NEXT: CortexA55UnitALU(0) = 3
908# CHECK-NEXT: CortexA55UnitALU(1) = 3
909# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
910# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
911# CHECK-NEXT: CortexA55UnitFPALU(0) = 10
912# CHECK-NEXT: CortexA55UnitFPALU(1) = 8
913# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
914# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
915# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
916# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
917# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
918# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
919# CHECK-NEXT:   getNextResourceCycle (@10c):
920# CHECK-NEXT:     Instance 0 available @12c
921# CHECK-NEXT:     Instance 1 available @10c
922# CHECK-NEXT:     selecting CortexA55UnitFPALU[1] available @10c
923# CHECK-NEXT:   Resource booking (@10c):
924# CHECK-NEXT: CortexA55UnitALU(0) = 3
925# CHECK-NEXT: CortexA55UnitALU(1) = 3
926# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
927# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
928# CHECK-NEXT: CortexA55UnitFPALU(0) = 10
929# CHECK-NEXT: CortexA55UnitFPALU(1) = 8
930# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
931# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
932# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
933# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
934# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
935# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
936# CHECK-NEXT:   getNextResourceCycle (@10c):
937# CHECK-NEXT:     Instance 0 available @12c
938# CHECK-NEXT:     Instance 1 available @10c
939# CHECK-NEXT:     selecting CortexA55UnitFPALU[1] available @10c
940# CHECK-NEXT:   BotQ.A BotLatency SU(5) 10c
941# CHECK-NEXT:   Bump cycle to begin group
942# CHECK-NEXT: Cycle: 11 BotQ.A
943# CHECK-NEXT: BotQ.A @11c
944# CHECK-NEXT:   Retired: 7
945# CHECK-NEXT:   Executed: 11c
946# CHECK-NEXT:   Critical: 4c, 8 CortexA55UnitFPALU
947# CHECK-NEXT:   ExpectedLatency: 10c
948# CHECK-NEXT:   - Latency limited.
949# CHECK-NEXT: CortexA55UnitALU(0) = 3
950# CHECK-NEXT: CortexA55UnitALU(1) = 3
951# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
952# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
953# CHECK-NEXT: CortexA55UnitFPALU(0) = 10
954# CHECK-NEXT: CortexA55UnitFPALU(1) = 10
955# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
956# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
957# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
958# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
959# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
960# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
961# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
962# CHECK-NEXT:   Resource booking (@11c):
963# CHECK-NEXT: CortexA55UnitALU(0) = 3
964# CHECK-NEXT: CortexA55UnitALU(1) = 3
965# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
966# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
967# CHECK-NEXT: CortexA55UnitFPALU(0) = 10
968# CHECK-NEXT: CortexA55UnitFPALU(1) = 10
969# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
970# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
971# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
972# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
973# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
974# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
975# CHECK-NEXT:   getNextResourceCycle (@11c):
976# CHECK-NEXT:     Instance 0 available @12c
977# CHECK-NEXT:     Instance 1 available @12c
978# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @12c
979# CHECK-NEXT:   SU(3) CortexA55UnitFPALU[0]=12c
980# CHECK-NEXT:   Resource booking (@11c):
981# CHECK-NEXT: CortexA55UnitALU(0) = 3
982# CHECK-NEXT: CortexA55UnitALU(1) = 3
983# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
984# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
985# CHECK-NEXT: CortexA55UnitFPALU(0) = 10
986# CHECK-NEXT: CortexA55UnitFPALU(1) = 10
987# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
988# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
989# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
990# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
991# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
992# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
993# CHECK-NEXT:   getNextResourceCycle (@11c):
994# CHECK-NEXT:     Instance 0 available @12c
995# CHECK-NEXT:     Instance 1 available @12c
996# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @12c
997# CHECK-NEXT:   SU(6) CortexA55UnitFPALU[0]=12c
998# CHECK-NEXT: Cycle: 12 BotQ.A
999# CHECK-NEXT:   Resource booking (@12c):
1000# CHECK-NEXT: CortexA55UnitALU(0) = 3
1001# CHECK-NEXT: CortexA55UnitALU(1) = 3
1002# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1003# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1004# CHECK-NEXT: CortexA55UnitFPALU(0) = 10
1005# CHECK-NEXT: CortexA55UnitFPALU(1) = 10
1006# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1007# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1008# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1009# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1010# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1011# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1012# CHECK-NEXT:   getNextResourceCycle (@12c):
1013# CHECK-NEXT:     Instance 0 available @12c
1014# CHECK-NEXT:     Instance 1 available @12c
1015# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @12c
1016# CHECK-NEXT:   Resource booking (@12c):
1017# CHECK-NEXT: CortexA55UnitALU(0) = 3
1018# CHECK-NEXT: CortexA55UnitALU(1) = 3
1019# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1020# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1021# CHECK-NEXT: CortexA55UnitFPALU(0) = 10
1022# CHECK-NEXT: CortexA55UnitFPALU(1) = 10
1023# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1024# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1025# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1026# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1027# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1028# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1029# CHECK-NEXT:   getNextResourceCycle (@12c):
1030# CHECK-NEXT:     Instance 0 available @12c
1031# CHECK-NEXT:     Instance 1 available @12c
1032# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @12c
1033# CHECK-NEXT: Queue BotQ.P: 0
1034# CHECK-NEXT: Queue BotQ.A: 3 6
1035# CHECK-NEXT:   Cand SU(3) ORDER
1036# CHECK-NEXT:   Cand SU(6) ORDER
1037# CHECK-NEXT: Pick Bot ORDER
1038# CHECK-NEXT: Scheduling SU(6) %8:fpr128 = ANDv16i8 %1:fpr128, %6:fpr128
1039# CHECK-NEXT:   Ready @12c
1040# CHECK-NEXT:   CortexA55UnitFPALU +2x1u
1041# CHECK-NEXT:   Resource booking (@12c):
1042# CHECK-NEXT: CortexA55UnitALU(0) = 3
1043# CHECK-NEXT: CortexA55UnitALU(1) = 3
1044# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1045# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1046# CHECK-NEXT: CortexA55UnitFPALU(0) = 10
1047# CHECK-NEXT: CortexA55UnitFPALU(1) = 10
1048# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1049# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1050# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1051# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1052# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1053# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1054# CHECK-NEXT:   getNextResourceCycle (@12c):
1055# CHECK-NEXT:     Instance 0 available @12c
1056# CHECK-NEXT:     Instance 1 available @12c
1057# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @12c
1058# CHECK-NEXT:   Resource booking (@12c):
1059# CHECK-NEXT: CortexA55UnitALU(0) = 3
1060# CHECK-NEXT: CortexA55UnitALU(1) = 3
1061# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1062# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1063# CHECK-NEXT: CortexA55UnitFPALU(0) = 10
1064# CHECK-NEXT: CortexA55UnitFPALU(1) = 10
1065# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1066# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1067# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1068# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1069# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1070# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1071# CHECK-NEXT:   getNextResourceCycle (@12c):
1072# CHECK-NEXT:     Instance 0 available @12c
1073# CHECK-NEXT:     Instance 1 available @12c
1074# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @12c
1075# CHECK-NEXT:   BotQ.A TopLatency SU(6) 4c
1076# CHECK-NEXT:   Bump cycle to begin group
1077# CHECK-NEXT: Cycle: 13 BotQ.A
1078# CHECK-NEXT: BotQ.A @13c
1079# CHECK-NEXT:   Retired: 8
1080# CHECK-NEXT:   Executed: 13c
1081# CHECK-NEXT:   Critical: 5c, 10 CortexA55UnitFPALU
1082# CHECK-NEXT:   ExpectedLatency: 10c
1083# CHECK-NEXT:   - Latency limited.
1084# CHECK-NEXT: CortexA55UnitALU(0) = 3
1085# CHECK-NEXT: CortexA55UnitALU(1) = 3
1086# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1087# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1088# CHECK-NEXT: CortexA55UnitFPALU(0) = 12
1089# CHECK-NEXT: CortexA55UnitFPALU(1) = 10
1090# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1091# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1092# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1093# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1094# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1095# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1096# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
1097# CHECK-NEXT:   Resource booking (@13c):
1098# CHECK-NEXT: CortexA55UnitALU(0) = 3
1099# CHECK-NEXT: CortexA55UnitALU(1) = 3
1100# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1101# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1102# CHECK-NEXT: CortexA55UnitFPALU(0) = 12
1103# CHECK-NEXT: CortexA55UnitFPALU(1) = 10
1104# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1105# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1106# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1107# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1108# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1109# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1110# CHECK-NEXT:   getNextResourceCycle (@13c):
1111# CHECK-NEXT:     Instance 0 available @13c
1112# CHECK-NEXT:     Instance 1 available @13c
1113# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @13c
1114# CHECK-NEXT:   Resource booking (@13c):
1115# CHECK-NEXT: CortexA55UnitALU(0) = 3
1116# CHECK-NEXT: CortexA55UnitALU(1) = 3
1117# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1118# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1119# CHECK-NEXT: CortexA55UnitFPALU(0) = 12
1120# CHECK-NEXT: CortexA55UnitFPALU(1) = 10
1121# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1122# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1123# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1124# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1125# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1126# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1127# CHECK-NEXT:   getNextResourceCycle (@13c):
1128# CHECK-NEXT:     Instance 0 available @14c
1129# CHECK-NEXT:     Instance 1 available @13c
1130# CHECK-NEXT:     selecting CortexA55UnitFPALU[1] available @13c
1131# CHECK-NEXT:   Resource booking (@13c):
1132# CHECK-NEXT: CortexA55UnitALU(0) = 3
1133# CHECK-NEXT: CortexA55UnitALU(1) = 3
1134# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1135# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1136# CHECK-NEXT: CortexA55UnitFPALU(0) = 12
1137# CHECK-NEXT: CortexA55UnitFPALU(1) = 10
1138# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1139# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1140# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1141# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1142# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1143# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1144# CHECK-NEXT:   getNextResourceCycle (@13c):
1145# CHECK-NEXT:     Instance 0 available @13c
1146# CHECK-NEXT:     Instance 1 available @13c
1147# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @13c
1148# CHECK-NEXT: Queue BotQ.P: 1 4
1149# CHECK-NEXT: Queue BotQ.A: 3 0
1150# CHECK-NEXT:   Cand SU(3) ORDER
1151# CHECK-NEXT: Pick Bot PHYS-REG
1152# CHECK-NEXT: Scheduling SU(3) %3:fpr128 = EXTv16i8 %0:fpr128, %0:fpr128, 8
1153# CHECK-NEXT:   Ready @13c
1154# CHECK-NEXT:   CortexA55UnitFPALU +2x1u
1155# CHECK-NEXT:   Resource booking (@13c):
1156# CHECK-NEXT: CortexA55UnitALU(0) = 3
1157# CHECK-NEXT: CortexA55UnitALU(1) = 3
1158# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1159# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1160# CHECK-NEXT: CortexA55UnitFPALU(0) = 12
1161# CHECK-NEXT: CortexA55UnitFPALU(1) = 10
1162# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1163# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1164# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1165# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1166# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1167# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1168# CHECK-NEXT:   getNextResourceCycle (@13c):
1169# CHECK-NEXT:     Instance 0 available @14c
1170# CHECK-NEXT:     Instance 1 available @13c
1171# CHECK-NEXT:     selecting CortexA55UnitFPALU[1] available @13c
1172# CHECK-NEXT:   Resource booking (@13c):
1173# CHECK-NEXT: CortexA55UnitALU(0) = 3
1174# CHECK-NEXT: CortexA55UnitALU(1) = 3
1175# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1176# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1177# CHECK-NEXT: CortexA55UnitFPALU(0) = 12
1178# CHECK-NEXT: CortexA55UnitFPALU(1) = 10
1179# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1180# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1181# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1182# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1183# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1184# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1185# CHECK-NEXT:   getNextResourceCycle (@13c):
1186# CHECK-NEXT:     Instance 0 available @14c
1187# CHECK-NEXT:     Instance 1 available @13c
1188# CHECK-NEXT:     selecting CortexA55UnitFPALU[1] available @13c
1189# CHECK-NEXT:   BotQ.A BotLatency SU(3) 11c
1190# CHECK-NEXT:   Bump cycle to begin group
1191# CHECK-NEXT: Cycle: 14 BotQ.A
1192# CHECK-NEXT: BotQ.A @14c
1193# CHECK-NEXT:   Retired: 9
1194# CHECK-NEXT:   Executed: 14c
1195# CHECK-NEXT:   Critical: 6c, 12 CortexA55UnitFPALU
1196# CHECK-NEXT:   ExpectedLatency: 11c
1197# CHECK-NEXT:   - Latency limited.
1198# CHECK-NEXT: CortexA55UnitALU(0) = 3
1199# CHECK-NEXT: CortexA55UnitALU(1) = 3
1200# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1201# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1202# CHECK-NEXT: CortexA55UnitFPALU(0) = 12
1203# CHECK-NEXT: CortexA55UnitFPALU(1) = 13
1204# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1205# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1206# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1207# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1208# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1209# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1210# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
1211# CHECK-NEXT:   Resource booking (@14c):
1212# CHECK-NEXT: CortexA55UnitALU(0) = 3
1213# CHECK-NEXT: CortexA55UnitALU(1) = 3
1214# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1215# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1216# CHECK-NEXT: CortexA55UnitFPALU(0) = 12
1217# CHECK-NEXT: CortexA55UnitFPALU(1) = 13
1218# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1219# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1220# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1221# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1222# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1223# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1224# CHECK-NEXT:   getNextResourceCycle (@14c):
1225# CHECK-NEXT:     Instance 0 available @14c
1226# CHECK-NEXT:     Instance 1 available @14c
1227# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @14c
1228# CHECK-NEXT: Queue BotQ.P: 1 4 2
1229# CHECK-NEXT: Queue BotQ.A: 0
1230# CHECK-NEXT: Scheduling SU(0) %2:fpr128 = COPY $q2
1231# CHECK-NEXT:   Ready @14c
1232# CHECK-NEXT:   CortexA55UnitALU +1x1u
1233# CHECK-NEXT:   Resource booking (@14c):
1234# CHECK-NEXT: CortexA55UnitALU(0) = 3
1235# CHECK-NEXT: CortexA55UnitALU(1) = 3
1236# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1237# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1238# CHECK-NEXT: CortexA55UnitFPALU(0) = 12
1239# CHECK-NEXT: CortexA55UnitFPALU(1) = 13
1240# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1241# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1242# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1243# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1244# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1245# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1246# CHECK-NEXT:   getNextResourceCycle (@14c):
1247# CHECK-NEXT:     Instance 0 available @14c
1248# CHECK-NEXT:     Instance 1 available @14c
1249# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @14c
1250# CHECK-NEXT:   Resource booking (@14c):
1251# CHECK-NEXT: CortexA55UnitALU(0) = 3
1252# CHECK-NEXT: CortexA55UnitALU(1) = 3
1253# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1254# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1255# CHECK-NEXT: CortexA55UnitFPALU(0) = 12
1256# CHECK-NEXT: CortexA55UnitFPALU(1) = 13
1257# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1258# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1259# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1260# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1261# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1262# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1263# CHECK-NEXT:   getNextResourceCycle (@14c):
1264# CHECK-NEXT:     Instance 0 available @14c
1265# CHECK-NEXT:     Instance 1 available @14c
1266# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @14c
1267# CHECK-NEXT:   BotQ.A BotLatency SU(0) 13c
1268# CHECK-NEXT: BotQ.A @14c
1269# CHECK-NEXT:   Retired: 10
1270# CHECK-NEXT:   Executed: 14c
1271# CHECK-NEXT:   Critical: 6c, 12 CortexA55UnitFPALU
1272# CHECK-NEXT:   ExpectedLatency: 13c
1273# CHECK-NEXT:   - Latency limited.
1274# CHECK-NEXT: CortexA55UnitALU(0) = 14
1275# CHECK-NEXT: CortexA55UnitALU(1) = 3
1276# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1277# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1278# CHECK-NEXT: CortexA55UnitFPALU(0) = 12
1279# CHECK-NEXT: CortexA55UnitFPALU(1) = 13
1280# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1281# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1282# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1283# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1284# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1285# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1286# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
1287# CHECK-NEXT: Cycle: 15 BotQ.A
1288# CHECK-NEXT:   Resource booking (@15c):
1289# CHECK-NEXT: CortexA55UnitALU(0) = 14
1290# CHECK-NEXT: CortexA55UnitALU(1) = 3
1291# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1292# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1293# CHECK-NEXT: CortexA55UnitFPALU(0) = 12
1294# CHECK-NEXT: CortexA55UnitFPALU(1) = 13
1295# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1296# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1297# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1298# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1299# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1300# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1301# CHECK-NEXT:   getNextResourceCycle (@15c):
1302# CHECK-NEXT:     Instance 0 available @15c
1303# CHECK-NEXT:     Instance 1 available @15c
1304# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @15c
1305# CHECK-NEXT: Queue BotQ.P: 2 4
1306# CHECK-NEXT: Queue BotQ.A: 1
1307# CHECK-NEXT: Scheduling SU(1) %1:fpr128 = COPY $q1
1308# CHECK-NEXT:   Ready @15c
1309# CHECK-NEXT:   CortexA55UnitALU +1x1u
1310# CHECK-NEXT:   Resource booking (@15c):
1311# CHECK-NEXT: CortexA55UnitALU(0) = 14
1312# CHECK-NEXT: CortexA55UnitALU(1) = 3
1313# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1314# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1315# CHECK-NEXT: CortexA55UnitFPALU(0) = 12
1316# CHECK-NEXT: CortexA55UnitFPALU(1) = 13
1317# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1318# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1319# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1320# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1321# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1322# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1323# CHECK-NEXT:   getNextResourceCycle (@15c):
1324# CHECK-NEXT:     Instance 0 available @15c
1325# CHECK-NEXT:     Instance 1 available @15c
1326# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @15c
1327# CHECK-NEXT:   Resource booking (@15c):
1328# CHECK-NEXT: CortexA55UnitALU(0) = 14
1329# CHECK-NEXT: CortexA55UnitALU(1) = 3
1330# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1331# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1332# CHECK-NEXT: CortexA55UnitFPALU(0) = 12
1333# CHECK-NEXT: CortexA55UnitFPALU(1) = 13
1334# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1335# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1336# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1337# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1338# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1339# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1340# CHECK-NEXT:   getNextResourceCycle (@15c):
1341# CHECK-NEXT:     Instance 0 available @15c
1342# CHECK-NEXT:     Instance 1 available @15c
1343# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @15c
1344# CHECK-NEXT: BotQ.A @15c
1345# CHECK-NEXT:   Retired: 11
1346# CHECK-NEXT:   Executed: 15c
1347# CHECK-NEXT:   Critical: 6c, 12 CortexA55UnitFPALU
1348# CHECK-NEXT:   ExpectedLatency: 13c
1349# CHECK-NEXT:   - Latency limited.
1350# CHECK-NEXT: CortexA55UnitALU(0) = 15
1351# CHECK-NEXT: CortexA55UnitALU(1) = 3
1352# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1353# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1354# CHECK-NEXT: CortexA55UnitFPALU(0) = 12
1355# CHECK-NEXT: CortexA55UnitFPALU(1) = 13
1356# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1357# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1358# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1359# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1360# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1361# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1362# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
1363# CHECK-NEXT: Cycle: 16 BotQ.A
1364# CHECK-NEXT:   Resource booking (@16c):
1365# CHECK-NEXT: CortexA55UnitALU(0) = 15
1366# CHECK-NEXT: CortexA55UnitALU(1) = 3
1367# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1368# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1369# CHECK-NEXT: CortexA55UnitFPALU(0) = 12
1370# CHECK-NEXT: CortexA55UnitFPALU(1) = 13
1371# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1372# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1373# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1374# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1375# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1376# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1377# CHECK-NEXT:   getNextResourceCycle (@16c):
1378# CHECK-NEXT:     Instance 0 available @16c
1379# CHECK-NEXT:     Instance 1 available @16c
1380# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @16c
1381# CHECK-NEXT:   Resource booking (@16c):
1382# CHECK-NEXT: CortexA55UnitALU(0) = 15
1383# CHECK-NEXT: CortexA55UnitALU(1) = 3
1384# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1385# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1386# CHECK-NEXT: CortexA55UnitFPALU(0) = 12
1387# CHECK-NEXT: CortexA55UnitFPALU(1) = 13
1388# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1389# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1390# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1391# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1392# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1393# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1394# CHECK-NEXT:   getNextResourceCycle (@16c):
1395# CHECK-NEXT:     Instance 0 available @16c
1396# CHECK-NEXT:     Instance 1 available @16c
1397# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @16c
1398# CHECK-NEXT: Queue BotQ.P:
1399# CHECK-NEXT: Queue BotQ.A: 2 4
1400# CHECK-NEXT:   Cand SU(2) ORDER
1401# CHECK-NEXT:   Cand SU(4) PHYS-REG
1402# CHECK-NEXT: Pick Bot PHYS-REG
1403# CHECK-NEXT: Scheduling SU(4) %6:fpr128 = MOVIv2d_ns 17
1404# CHECK-NEXT:   Ready @16c
1405# CHECK-NEXT:   CortexA55UnitFPALU +2x1u
1406# CHECK-NEXT:   Resource booking (@16c):
1407# CHECK-NEXT: CortexA55UnitALU(0) = 15
1408# CHECK-NEXT: CortexA55UnitALU(1) = 3
1409# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1410# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1411# CHECK-NEXT: CortexA55UnitFPALU(0) = 12
1412# CHECK-NEXT: CortexA55UnitFPALU(1) = 13
1413# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1414# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1415# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1416# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1417# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1418# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1419# CHECK-NEXT:   getNextResourceCycle (@16c):
1420# CHECK-NEXT:     Instance 0 available @16c
1421# CHECK-NEXT:     Instance 1 available @16c
1422# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @16c
1423# CHECK-NEXT:   Resource booking (@16c):
1424# CHECK-NEXT: CortexA55UnitALU(0) = 15
1425# CHECK-NEXT: CortexA55UnitALU(1) = 3
1426# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1427# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1428# CHECK-NEXT: CortexA55UnitFPALU(0) = 12
1429# CHECK-NEXT: CortexA55UnitFPALU(1) = 13
1430# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1431# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1432# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1433# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1434# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1435# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1436# CHECK-NEXT:   getNextResourceCycle (@16c):
1437# CHECK-NEXT:     Instance 0 available @16c
1438# CHECK-NEXT:     Instance 1 available @16c
1439# CHECK-NEXT:     selecting CortexA55UnitFPALU[0] available @16c
1440# CHECK-NEXT:   BotQ.A BotLatency SU(4) 14c
1441# CHECK-NEXT:   Bump cycle to begin group
1442# CHECK-NEXT: Cycle: 17 BotQ.A
1443# CHECK-NEXT: BotQ.A @17c
1444# CHECK-NEXT:   Retired: 12
1445# CHECK-NEXT:   Executed: 17c
1446# CHECK-NEXT:   Critical: 7c, 14 CortexA55UnitFPALU
1447# CHECK-NEXT:   ExpectedLatency: 14c
1448# CHECK-NEXT:   - Latency limited.
1449# CHECK-NEXT: CortexA55UnitALU(0) = 15
1450# CHECK-NEXT: CortexA55UnitALU(1) = 3
1451# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1452# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1453# CHECK-NEXT: CortexA55UnitFPALU(0) = 16
1454# CHECK-NEXT: CortexA55UnitFPALU(1) = 13
1455# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1456# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1457# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1458# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1459# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1460# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1461# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
1462# CHECK-NEXT:   Resource booking (@17c):
1463# CHECK-NEXT: CortexA55UnitALU(0) = 15
1464# CHECK-NEXT: CortexA55UnitALU(1) = 3
1465# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1466# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1467# CHECK-NEXT: CortexA55UnitFPALU(0) = 16
1468# CHECK-NEXT: CortexA55UnitFPALU(1) = 13
1469# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1470# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1471# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1472# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1473# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1474# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1475# CHECK-NEXT:   getNextResourceCycle (@17c):
1476# CHECK-NEXT:     Instance 0 available @17c
1477# CHECK-NEXT:     Instance 1 available @17c
1478# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @17c
1479# CHECK-NEXT: Queue BotQ.P:
1480# CHECK-NEXT: Queue BotQ.A: 2
1481# CHECK-NEXT: Scheduling SU(2) %0:fpr128 = COPY $q0
1482# CHECK-NEXT:   Ready @17c
1483# CHECK-NEXT:   CortexA55UnitALU +1x1u
1484# CHECK-NEXT:   Resource booking (@17c):
1485# CHECK-NEXT: CortexA55UnitALU(0) = 15
1486# CHECK-NEXT: CortexA55UnitALU(1) = 3
1487# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1488# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1489# CHECK-NEXT: CortexA55UnitFPALU(0) = 16
1490# CHECK-NEXT: CortexA55UnitFPALU(1) = 13
1491# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1492# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1493# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1494# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1495# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1496# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1497# CHECK-NEXT:   getNextResourceCycle (@17c):
1498# CHECK-NEXT:     Instance 0 available @17c
1499# CHECK-NEXT:     Instance 1 available @17c
1500# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @17c
1501# CHECK-NEXT:   Resource booking (@17c):
1502# CHECK-NEXT: CortexA55UnitALU(0) = 15
1503# CHECK-NEXT: CortexA55UnitALU(1) = 3
1504# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1505# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1506# CHECK-NEXT: CortexA55UnitFPALU(0) = 16
1507# CHECK-NEXT: CortexA55UnitFPALU(1) = 13
1508# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1509# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1510# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1511# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1512# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1513# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1514# CHECK-NEXT:   getNextResourceCycle (@17c):
1515# CHECK-NEXT:     Instance 0 available @17c
1516# CHECK-NEXT:     Instance 1 available @17c
1517# CHECK-NEXT:     selecting CortexA55UnitALU[0] available @17c
1518# CHECK-NEXT: BotQ.A @17c
1519# CHECK-NEXT:   Retired: 13
1520# CHECK-NEXT:   Executed: 17c
1521# CHECK-NEXT:   Critical: 7c, 14 CortexA55UnitFPALU
1522# CHECK-NEXT:   ExpectedLatency: 14c
1523# CHECK-NEXT:   - Latency limited.
1524# CHECK-NEXT: CortexA55UnitALU(0) = 17
1525# CHECK-NEXT: CortexA55UnitALU(1) = 3
1526# CHECK-NEXT: CortexA55UnitB(0) = 4294967295
1527# CHECK-NEXT: CortexA55UnitDiv(0) = 4294967295
1528# CHECK-NEXT: CortexA55UnitFPALU(0) = 16
1529# CHECK-NEXT: CortexA55UnitFPALU(1) = 13
1530# CHECK-NEXT: CortexA55UnitFPDIV(0) = 4294967295
1531# CHECK-NEXT: CortexA55UnitFPMAC(0) = 4294967295
1532# CHECK-NEXT: CortexA55UnitFPMAC(1) = 4294967295
1533# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
1534# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
1535# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1536# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
1537# CHECK-NEXT: *** Final schedule for %bb.0 ***
1538# CHECK-NEXT:  * Schedule table (BottomUp):
1539# CHECK-NEXT:   i: issue
1540# CHECK-NEXT:   x: resource booked
1541# CHECK-NEXT: Cycle              | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9  | 8  | 7  | 6  | 5  | 4  | 3  |
1542# CHECK-NEXT: SU(2)              | i  |    |    |    |    |    |    |    |    |    |    |    |    |    |    |
1543# CHECK-NEXT:   CortexA55UnitALU | x  |    |    |    |    |    |    |    |    |    |    |    |    |    |    |
1544# CHECK-NEXT: SU(4)              |    | i  |    |    |    |    |    |    |    |    |    |    |    |    |    |
1545# CHECK-NEXT: CortexA55UnitFPALU |    | x  | x  |    |    |    |    |    |    |    |    |    |    |    |    |
1546# CHECK-NEXT: SU(1)              |    |    | i  |    |    |    |    |    |    |    |    |    |    |    |    |
1547# CHECK-NEXT:   CortexA55UnitALU |    |    | x  |    |    |    |    |    |    |    |    |    |    |    |    |
1548# CHECK-NEXT: SU(0)              |    |    |    | i  |    |    |    |    |    |    |    |    |    |    |    |
1549# CHECK-NEXT:   CortexA55UnitALU |    |    |    | x  |    |    |    |    |    |    |    |    |    |    |    |
1550# CHECK-NEXT: SU(3)              |    |    |    |    | i  |    |    |    |    |    |    |    |    |    |    |
1551# CHECK-NEXT: CortexA55UnitFPALU |    |    |    |    | x  | x  |    |    |    |    |    |    |    |    |    |
1552# CHECK-NEXT: SU(6)              |    |    |    |    |    | i  |    |    |    |    |    |    |    |    |    |
1553# CHECK-NEXT: CortexA55UnitFPALU |    |    |    |    |    | x  | x  |    |    |    |    |    |    |    |    |
1554# CHECK-NEXT: SU(5)              |    |    |    |    |    |    |    | i  |    |    |    |    |    |    |    |
1555# CHECK-NEXT: CortexA55UnitFPALU |    |    |    |    |    |    |    | x  | x  |    |    |    |    |    |    |
1556# CHECK-NEXT: SU(7)              |    |    |    |    |    |    |    | i  |    |    |    |    |    |    |    |
1557# CHECK-NEXT: CortexA55UnitFPALU |    |    |    |    |    |    |    | x  |    |    |    |    |    |    |    |
1558# CHECK-NEXT: SU(9)              |    |    |    |    |    |    |    |    | i  |    |    |    |    |    |    |
1559# CHECK-NEXT: CortexA55UnitFPALU |    |    |    |    |    |    |    |    | x  |    |    |    |    |    |    |
1560# CHECK-NEXT: SU(8)              |    |    |    |    |    |    |    |    |    | i  |    |    |    |    |    |
1561# CHECK-NEXT: CortexA55UnitFPALU |    |    |    |    |    |    |    |    |    | x  | x  |    |    |    |    |
1562# CHECK-NEXT: SU(10)             |    |    |    |    |    |    |    |    |    |    | i  |    |    |    |    |
1563# CHECK-NEXT: CortexA55UnitFPALU |    |    |    |    |    |    |    |    |    |    | x  | x  |    |    |    |
1564# CHECK-NEXT: SU(11)             |    |    |    |    |    |    |    |    |    |    |    |    |    |    | i  |
1565# CHECK-NEXT:   CortexA55UnitALU |    |    |    |    |    |    |    |    |    |    |    |    |    |    | x  |
1566# CHECK-NEXT: SU(12)             |    |    |    |    |    |    |    |    |    |    |    |    |    |    | i  |
1567# CHECK-NEXT:   CortexA55UnitALU |    |    |    |    |    |    |    |    |    |    |    |    |    |    | x  |
1568# CHECK-NEXT: SU(2) [TopReadyCycle = 0, BottomReadyCycle = 17]:   %0:fpr128 = COPY $q0
1569# CHECK-NEXT: SU(4) [TopReadyCycle = 0, BottomReadyCycle = 16]:   %6:fpr128 = MOVIv2d_ns 17
1570# CHECK-NEXT: SU(1) [TopReadyCycle = 0, BottomReadyCycle = 15]:   %1:fpr128 = COPY $q1
1571# CHECK-NEXT: SU(0) [TopReadyCycle = 0, BottomReadyCycle = 14]:   %2:fpr128 = COPY $q2
1572# CHECK-NEXT: SU(3) [TopReadyCycle = 0, BottomReadyCycle = 13]:   %3:fpr128 = EXTv16i8 %0:fpr128, %0:fpr128, 8
1573# CHECK-NEXT: SU(6) [TopReadyCycle = 0, BottomReadyCycle = 12]:   %8:fpr128 = ANDv16i8 %1:fpr128, %6:fpr128
1574# CHECK-NEXT: SU(5) [TopReadyCycle = 0, BottomReadyCycle = 10]:   %7:fpr128 = ANDv16i8 %2:fpr128, %6:fpr128
1575# CHECK-NEXT: SU(7) [TopReadyCycle = 0, BottomReadyCycle = 10]:   %9:fpr64 = XTNv4i16 %8:fpr128
1576# CHECK-NEXT: SU(9) [TopReadyCycle = 0, BottomReadyCycle = 9]:   %11:fpr64 = XTNv4i16 %7:fpr128
1577# CHECK-NEXT: SU(8) [TopReadyCycle = 0, BottomReadyCycle = 8]:   %10:fpr128 = UMULLv4i16_v4i32 %0.dsub:fpr128, %9:fpr64
1578# CHECK-NEXT: SU(10) [TopReadyCycle = 0, BottomReadyCycle = 7]:   %12:fpr128 = UMULLv4i16_v4i32 %3.dsub:fpr128, %11:fpr64
1579# CHECK-NEXT: SU(11) [TopReadyCycle = 0, BottomReadyCycle = 3]:   $q0 = COPY %10:fpr128
1580# CHECK-NEXT: SU(12) [TopReadyCycle = 0, BottomReadyCycle = 3]:   $q1 = COPY %12:fpr128
1581# CHECK-EMPTY:
1582# CHECK-NEXT: ********** INTERVALS **********
1583# CHECK-NEXT: B0 [0B,48r:0)[192r,224r:1) 0@0B-phi 1@192r
1584# CHECK-NEXT: B1 [0B,88r:0)[208r,224r:1) 0@0B-phi 1@208r
1585# CHECK-NEXT: B2 [0B,96r:0) 0@0B-phi
1586# CHECK-NEXT: B0_HI [0B,48r:0)[192r,224r:1) 0@0B-phi 1@192r
1587# CHECK-NEXT: H0_HI [0B,48r:0)[192r,224r:1) 0@0B-phi 1@192r
1588# CHECK-NEXT: S0_HI [0B,48r:0)[192r,224r:1) 0@0B-phi 1@192r
1589# CHECK-NEXT: B1_HI [0B,88r:0)[208r,224r:1) 0@0B-phi 1@208r
1590# CHECK-NEXT: H1_HI [0B,88r:0)[208r,224r:1) 0@0B-phi 1@208r
1591# CHECK-NEXT: S1_HI [0B,88r:0)[208r,224r:1) 0@0B-phi 1@208r
1592# CHECK-NEXT: B2_HI [0B,96r:0) 0@0B-phi
1593# CHECK-NEXT: H2_HI [0B,96r:0) 0@0B-phi
1594# CHECK-NEXT: S2_HI [0B,96r:0) 0@0B-phi
1595# CHECK-NEXT: D0_HI [0B,48r:0)[192r,224r:1) 0@0B-phi 1@192r
1596# CHECK-NEXT: D1_HI [0B,88r:0)[208r,224r:1) 0@0B-phi 1@208r
1597# CHECK-NEXT: D2_HI [0B,96r:0) 0@0B-phi
1598# CHECK-NEXT: %0 [48r,168r:0) 0@48r  weight:0.000000e+00
1599# CHECK-NEXT: %1 [88r,120r:0) 0@88r  weight:0.000000e+00
1600# CHECK-NEXT: %2 [96r,128r:0) 0@96r  weight:0.000000e+00
1601# CHECK-NEXT: %3 [104r,176r:0) 0@104r  weight:0.000000e+00
1602# CHECK-NEXT: %6 [80r,128r:0) 0@80r  weight:0.000000e+00
1603# CHECK-NEXT: %7 [128r,160r:0) 0@128r  weight:0.000000e+00
1604# CHECK-NEXT: %8 [120r,136r:0) 0@120r  weight:0.000000e+00
1605# CHECK-NEXT: %9 [136r,168r:0) 0@136r  weight:0.000000e+00
1606# CHECK-NEXT: %10 [168r,192r:0) 0@168r  weight:0.000000e+00
1607# CHECK-NEXT: %11 [160r,176r:0) 0@160r  weight:0.000000e+00
1608# CHECK-NEXT: %12 [176r,208r:0) 0@176r  weight:0.000000e+00
1609# CHECK-NEXT: RegMasks:
1610# CHECK-NEXT: ********** MACHINEINSTRS **********
1611# CHECK-NEXT: # Machine code for function umull_and_v8i32: IsSSA, NoPHIs, TracksLiveness
1612# CHECK-NEXT: Function Live Ins: $q0 in %0, $q1 in %1, $q2 in %2
1613# CHECK-EMPTY:
1614# CHECK-NEXT: 0B	bb.0.entry:
1615# CHECK-NEXT: 	  liveins: $q0, $q1, $q2
1616# CHECK-NEXT: 48B	  %0:fpr128 = COPY $q0
1617# CHECK-NEXT: 80B	  %6:fpr128 = MOVIv2d_ns 17
1618# CHECK-NEXT: 88B	  %1:fpr128 = COPY $q1
1619# CHECK-NEXT: 96B	  %2:fpr128 = COPY $q2
1620# CHECK-NEXT: 104B	  %3:fpr128 = EXTv16i8 %0:fpr128, %0:fpr128, 8
1621# CHECK-NEXT: 120B	  %8:fpr128 = ANDv16i8 %1:fpr128, %6:fpr128
1622# CHECK-NEXT: 128B	  %7:fpr128 = ANDv16i8 %2:fpr128, %6:fpr128
1623# CHECK-NEXT: 136B	  %9:fpr64 = XTNv4i16 %8:fpr128
1624# CHECK-NEXT: 160B	  %11:fpr64 = XTNv4i16 %7:fpr128
1625# CHECK-NEXT: 168B	  %10:fpr128 = UMULLv4i16_v4i32 %0.dsub:fpr128, %9:fpr64
1626# CHECK-NEXT: 176B	  %12:fpr128 = UMULLv4i16_v4i32 %3.dsub:fpr128, %11:fpr64
1627# CHECK-NEXT: 192B	  $q0 = COPY %10:fpr128
1628# CHECK-NEXT: 208B	  $q1 = COPY %12:fpr128
1629# CHECK-NEXT: 224B	  RET_ReallyLR implicit $q0, implicit $q1
1630# CHECK-EMPTY:
1631# CHECK-NEXT: # End machine code for function umull_and_v8i32.
1632