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