Skip to content

Commit 9bfb4b8

Browse files
authored
[MachineScheduler] Add more debug prints w.r.t hazards and pending SUnits (llvm#134328)
While we already have some detailed debug messages on the candidate selection process -- which selects a SUnit from the Available queue, we didn't say much about why a SUnit was _not_ moved from Pending queue to Available queue in the first place, which is just as important as why we scheduled a node IMHO. Therefore, I added some debug prints for this very purpose. I decide to print these extra messages by default (instead of being guarded by command line like `-misched-detail-resource-booking`) because we have been printing some of the hazard remarks, so I thought we might as well print these new messages -- which are mostly about hazard -- by default.
1 parent b7b3758 commit 9bfb4b8

File tree

3 files changed

+174
-69
lines changed

3 files changed

+174
-69
lines changed

llvm/lib/CodeGen/MachineScheduler.cpp

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2617,21 +2617,25 @@ SchedBoundary::getNextResourceCycle(const MCSchedClassDesc *SC, unsigned PIdx,
26172617
bool SchedBoundary::checkHazard(SUnit *SU) {
26182618
if (HazardRec->isEnabled()
26192619
&& HazardRec->getHazardType(SU) != ScheduleHazardRecognizer::NoHazard) {
2620+
LLVM_DEBUG(dbgs().indent(2)
2621+
<< "hazard: SU(" << SU->NodeNum << ") reported by HazardRec\n");
26202622
return true;
26212623
}
26222624

26232625
unsigned uops = SchedModel->getNumMicroOps(SU->getInstr());
26242626
if ((CurrMOps > 0) && (CurrMOps + uops > SchedModel->getIssueWidth())) {
2625-
LLVM_DEBUG(dbgs() << " SU(" << SU->NodeNum << ") uops="
2626-
<< SchedModel->getNumMicroOps(SU->getInstr()) << '\n');
2627+
LLVM_DEBUG(dbgs().indent(2) << "hazard: SU(" << SU->NodeNum << ") uops="
2628+
<< uops << ", CurrMOps = " << CurrMOps << ", "
2629+
<< "CurrMOps + uops > issue width of "
2630+
<< SchedModel->getIssueWidth() << "\n");
26272631
return true;
26282632
}
26292633

26302634
if (CurrMOps > 0 &&
26312635
((isTop() && SchedModel->mustBeginGroup(SU->getInstr())) ||
26322636
(!isTop() && SchedModel->mustEndGroup(SU->getInstr())))) {
2633-
LLVM_DEBUG(dbgs() << " hazard: SU(" << SU->NodeNum << ") must "
2634-
<< (isTop() ? "begin" : "end") << " group\n");
2637+
LLVM_DEBUG(dbgs().indent(2) << "hazard: SU(" << SU->NodeNum << ") must "
2638+
<< (isTop() ? "begin" : "end") << " group\n");
26352639
return true;
26362640
}
26372641

@@ -2650,10 +2654,12 @@ bool SchedBoundary::checkHazard(SUnit *SU) {
26502654
#if LLVM_ENABLE_ABI_BREAKING_CHECKS
26512655
MaxObservedStall = std::max(ReleaseAtCycle, MaxObservedStall);
26522656
#endif
2653-
LLVM_DEBUG(dbgs() << " SU(" << SU->NodeNum << ") "
2654-
<< SchedModel->getResourceName(ResIdx)
2655-
<< '[' << InstanceIdx - ReservedCyclesIndex[ResIdx] << ']'
2656-
<< "=" << NRCycle << "c\n");
2657+
LLVM_DEBUG(dbgs().indent(2)
2658+
<< "hazard: SU(" << SU->NodeNum << ") "
2659+
<< SchedModel->getResourceName(ResIdx) << '['
2660+
<< InstanceIdx - ReservedCyclesIndex[ResIdx] << ']' << "="
2661+
<< NRCycle << "c, is later than "
2662+
<< "CurrCycle = " << CurrCycle << "c\n");
26572663
return true;
26582664
}
26592665
}
@@ -2728,11 +2734,25 @@ void SchedBoundary::releaseNode(SUnit *SU, unsigned ReadyCycle, bool InPQueue,
27282734
// Check for interlocks first. For the purpose of other heuristics, an
27292735
// instruction that cannot issue appears as if it's not in the ReadyQueue.
27302736
bool IsBuffered = SchedModel->getMicroOpBufferSize() != 0;
2731-
bool HazardDetected = (!IsBuffered && ReadyCycle > CurrCycle) ||
2732-
checkHazard(SU) || (Available.size() >= ReadyListLimit);
2737+
bool HazardDetected = !IsBuffered && ReadyCycle > CurrCycle;
2738+
if (HazardDetected)
2739+
LLVM_DEBUG(dbgs().indent(2) << "hazard: SU(" << SU->NodeNum
2740+
<< ") ReadyCycle = " << ReadyCycle
2741+
<< " is later than CurrCycle = " << CurrCycle
2742+
<< " on an unbuffered resource" << "\n");
2743+
else
2744+
HazardDetected = checkHazard(SU);
2745+
2746+
if (!HazardDetected && Available.size() >= ReadyListLimit) {
2747+
HazardDetected = true;
2748+
LLVM_DEBUG(dbgs().indent(2) << "hazard: Available Q is full (size: "
2749+
<< Available.size() << ")\n");
2750+
}
27332751

27342752
if (!HazardDetected) {
27352753
Available.push(SU);
2754+
LLVM_DEBUG(dbgs().indent(2)
2755+
<< "Move SU(" << SU->NodeNum << ") into Available Q\n");
27362756

27372757
if (InPQueue)
27382758
Pending.remove(Pending.begin() + Idx);
@@ -3011,6 +3031,8 @@ void SchedBoundary::releasePending() {
30113031
SUnit *SU = *(Pending.begin() + I);
30123032
unsigned ReadyCycle = isTop() ? SU->TopReadyCycle : SU->BotReadyCycle;
30133033

3034+
LLVM_DEBUG(dbgs() << "Checking pending node SU(" << SU->NodeNum << ")\n");
3035+
30143036
if (ReadyCycle < MinReadyCycle)
30153037
MinReadyCycle = ReadyCycle;
30163038

llvm/test/CodeGen/AArch64/misched-detail-resource-booking-01.mir

Lines changed: 79 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,7 @@ body: |
297297
# CHECK-NEXT: Instance 0 available @0c
298298
# CHECK-NEXT: Instance 1 available @0c
299299
# CHECK-NEXT: selecting CortexA55UnitALU[0] available @0c
300+
# CHECK-NEXT: Move SU(0) into Available Q
300301
# CHECK-NEXT: Resource booking (@0c):
301302
# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
302303
# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
@@ -314,6 +315,7 @@ body: |
314315
# CHECK-NEXT: Instance 0 available @0c
315316
# CHECK-NEXT: Instance 1 available @0c
316317
# CHECK-NEXT: selecting CortexA55UnitALU[0] available @0c
318+
# CHECK-NEXT: Move SU(1) into Available Q
317319
# CHECK-NEXT: Resource booking (@0c):
318320
# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
319321
# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
@@ -331,6 +333,7 @@ body: |
331333
# CHECK-NEXT: Instance 0 available @0c
332334
# CHECK-NEXT: Instance 1 available @0c
333335
# CHECK-NEXT: selecting CortexA55UnitALU[0] available @0c
336+
# CHECK-NEXT: Move SU(2) into Available Q
334337
# CHECK-NEXT: Resource booking (@0c):
335338
# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
336339
# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
@@ -348,9 +351,13 @@ body: |
348351
# CHECK-NEXT: Instance 0 available @0c
349352
# CHECK-NEXT: Instance 1 available @0c
350353
# CHECK-NEXT: selecting CortexA55UnitFPALU[0] available @0c
354+
# CHECK-NEXT: Move SU(4) into Available Q
355+
# CHECK-NEXT: hazard: SU(12) ReadyCycle = 3 is later than CurrCycle = 0 on an unbuffered resource
356+
# CHECK-NEXT: hazard: SU(11) ReadyCycle = 3 is later than CurrCycle = 0 on an unbuffered resource
351357
# CHECK-NEXT: Critical Path(GS-RR ): 14
352358
# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
353359
# CHECK-NEXT: Cycle: 3 BotQ.A
360+
# CHECK-NEXT: Checking pending node SU(12)
354361
# CHECK-NEXT: Resource booking (@3c):
355362
# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
356363
# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
@@ -368,6 +375,8 @@ body: |
368375
# CHECK-NEXT: Instance 0 available @3c
369376
# CHECK-NEXT: Instance 1 available @3c
370377
# CHECK-NEXT: selecting CortexA55UnitALU[0] available @3c
378+
# CHECK-NEXT: Move SU(12) into Available Q
379+
# CHECK-NEXT: Checking pending node SU(11)
371380
# CHECK-NEXT: Resource booking (@3c):
372381
# CHECK-NEXT: CortexA55UnitALU(0) = 4294967295
373382
# CHECK-NEXT: CortexA55UnitALU(1) = 4294967295
@@ -385,6 +394,7 @@ body: |
385394
# CHECK-NEXT: Instance 0 available @3c
386395
# CHECK-NEXT: Instance 1 available @3c
387396
# CHECK-NEXT: selecting CortexA55UnitALU[0] available @3c
397+
# CHECK-NEXT: Move SU(11) into Available Q
388398
# CHECK-NEXT: Queue BotQ.P:
389399
# CHECK-NEXT: Queue BotQ.A: 12 11
390400
# CHECK-NEXT: Cand SU(12) FIRST
@@ -446,6 +456,7 @@ body: |
446456
# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
447457
# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
448458
# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
459+
# CHECK-NEXT: hazard: SU(10) ReadyCycle = 7 is later than CurrCycle = 3 on an unbuffered resource
449460
# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
450461
# CHECK-NEXT: Resource booking (@3c):
451462
# CHECK-NEXT: CortexA55UnitALU(0) = 3
@@ -523,8 +534,14 @@ body: |
523534
# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
524535
# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
525536
# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
537+
# CHECK-NEXT: hazard: SU(8) ReadyCycle = 7 is later than CurrCycle = 4 on an unbuffered resource
526538
# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
539+
# CHECK-NEXT: Checking pending node SU(10)
540+
# CHECK-NEXT: hazard: SU(10) ReadyCycle = 7 is later than CurrCycle = 4 on an unbuffered resource
541+
# CHECK-NEXT: Checking pending node SU(8)
542+
# CHECK-NEXT: hazard: SU(8) ReadyCycle = 7 is later than CurrCycle = 4 on an unbuffered resource
527543
# CHECK-NEXT: Cycle: 7 BotQ.A
544+
# CHECK-NEXT: Checking pending node SU(10)
528545
# CHECK-NEXT: Resource booking (@7c):
529546
# CHECK-NEXT: CortexA55UnitALU(0) = 3
530547
# CHECK-NEXT: CortexA55UnitALU(1) = 3
@@ -542,6 +559,8 @@ body: |
542559
# CHECK-NEXT: Instance 0 available @7c
543560
# CHECK-NEXT: Instance 1 available @7c
544561
# CHECK-NEXT: selecting CortexA55UnitFPALU[0] available @7c
562+
# CHECK-NEXT: Move SU(10) into Available Q
563+
# CHECK-NEXT: Checking pending node SU(8)
545564
# CHECK-NEXT: Resource booking (@7c):
546565
# CHECK-NEXT: CortexA55UnitALU(0) = 3
547566
# CHECK-NEXT: CortexA55UnitALU(1) = 3
@@ -559,6 +578,7 @@ body: |
559578
# CHECK-NEXT: Instance 0 available @7c
560579
# CHECK-NEXT: Instance 1 available @7c
561580
# CHECK-NEXT: selecting CortexA55UnitFPALU[0] available @7c
581+
# CHECK-NEXT: Move SU(8) into Available Q
562582
# CHECK-NEXT: Queue BotQ.P:
563583
# CHECK-NEXT: Queue BotQ.A: 10 8
564584
# CHECK-NEXT: Cand SU(10) FIRST
@@ -621,7 +641,13 @@ body: |
621641
# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
622642
# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
623643
# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
644+
# CHECK-NEXT: hazard: SU(9) ReadyCycle = 9 is later than CurrCycle = 8 on an unbuffered resource
645+
# CHECK-NEXT: hazard: SU(3) ReadyCycle = 11 is later than CurrCycle = 8 on an unbuffered resource
624646
# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
647+
# CHECK-NEXT: Checking pending node SU(9)
648+
# CHECK-NEXT: hazard: SU(9) ReadyCycle = 9 is later than CurrCycle = 8 on an unbuffered resource
649+
# CHECK-NEXT: Checking pending node SU(3)
650+
# CHECK-NEXT: hazard: SU(3) ReadyCycle = 11 is later than CurrCycle = 8 on an unbuffered resource
625651
# CHECK-NEXT: Resource booking (@8c):
626652
# CHECK-NEXT: CortexA55UnitALU(0) = 3
627653
# CHECK-NEXT: CortexA55UnitALU(1) = 3
@@ -699,7 +725,9 @@ body: |
699725
# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
700726
# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
701727
# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
728+
# CHECK-NEXT: hazard: SU(7) ReadyCycle = 10 is later than CurrCycle = 9 on an unbuffered resource
702729
# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
730+
# CHECK-NEXT: Checking pending node SU(9)
703731
# CHECK-NEXT: Resource booking (@9c):
704732
# CHECK-NEXT: CortexA55UnitALU(0) = 3
705733
# CHECK-NEXT: CortexA55UnitALU(1) = 3
@@ -717,6 +745,11 @@ body: |
717745
# CHECK-NEXT: Instance 0 available @9c
718746
# CHECK-NEXT: Instance 1 available @9c
719747
# CHECK-NEXT: selecting CortexA55UnitFPALU[0] available @9c
748+
# CHECK-NEXT: Move SU(9) into Available Q
749+
# CHECK-NEXT: Checking pending node SU(7)
750+
# CHECK-NEXT: hazard: SU(7) ReadyCycle = 10 is later than CurrCycle = 9 on an unbuffered resource
751+
# CHECK-NEXT: Checking pending node SU(3)
752+
# CHECK-NEXT: hazard: SU(3) ReadyCycle = 11 is later than CurrCycle = 9 on an unbuffered resource
720753
# CHECK-NEXT: Resource booking (@9c):
721754
# CHECK-NEXT: CortexA55UnitALU(0) = 3
722755
# CHECK-NEXT: CortexA55UnitALU(1) = 3
@@ -792,8 +825,10 @@ body: |
792825
# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
793826
# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
794827
# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
828+
# CHECK-NEXT: hazard: SU(5) ReadyCycle = 10 is later than CurrCycle = 9 on an unbuffered resource
795829
# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
796830
# CHECK-NEXT: Cycle: 10 BotQ.A
831+
# CHECK-NEXT: Checking pending node SU(7)
797832
# CHECK-NEXT: Resource booking (@10c):
798833
# CHECK-NEXT: CortexA55UnitALU(0) = 3
799834
# CHECK-NEXT: CortexA55UnitALU(1) = 3
@@ -811,6 +846,8 @@ body: |
811846
# CHECK-NEXT: Instance 0 available @10c
812847
# CHECK-NEXT: Instance 1 available @10c
813848
# CHECK-NEXT: selecting CortexA55UnitFPALU[0] available @10c
849+
# CHECK-NEXT: Move SU(7) into Available Q
850+
# CHECK-NEXT: Checking pending node SU(5)
814851
# CHECK-NEXT: Resource booking (@10c):
815852
# CHECK-NEXT: CortexA55UnitALU(0) = 3
816853
# CHECK-NEXT: CortexA55UnitALU(1) = 3
@@ -828,6 +865,9 @@ body: |
828865
# CHECK-NEXT: Instance 0 available @11c
829866
# CHECK-NEXT: Instance 1 available @10c
830867
# CHECK-NEXT: selecting CortexA55UnitFPALU[1] available @10c
868+
# CHECK-NEXT: Move SU(5) into Available Q
869+
# CHECK-NEXT: Checking pending node SU(3)
870+
# CHECK-NEXT: hazard: SU(3) ReadyCycle = 11 is later than CurrCycle = 10 on an unbuffered resource
831871
# CHECK-NEXT: Queue BotQ.P: 3
832872
# CHECK-NEXT: Queue BotQ.A: 7 5
833873
# CHECK-NEXT: Cand SU(7) FIRST
@@ -887,6 +927,7 @@ body: |
887927
# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
888928
# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
889929
# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
930+
# CHECK-NEXT: hazard: SU(6) ReadyCycle = 11 is later than CurrCycle = 10 on an unbuffered resource
890931
# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
891932
# CHECK-NEXT: Resource booking (@10c):
892933
# CHECK-NEXT: CortexA55UnitALU(0) = 3
@@ -966,7 +1007,9 @@ body: |
9661007
# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
9671008
# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
9681009
# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1010+
# CHECK-NEXT: hazard: SU(0) ReadyCycle = 13 is later than CurrCycle = 11 on an unbuffered resource
9691011
# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
1012+
# CHECK-NEXT: Checking pending node SU(3)
9701013
# CHECK-NEXT: Resource booking (@11c):
9711014
# CHECK-NEXT: CortexA55UnitALU(0) = 3
9721015
# CHECK-NEXT: CortexA55UnitALU(1) = 3
@@ -984,7 +1027,8 @@ body: |
9841027
# CHECK-NEXT: Instance 0 available @12c
9851028
# CHECK-NEXT: Instance 1 available @12c
9861029
# CHECK-NEXT: selecting CortexA55UnitFPALU[0] available @12c
987-
# CHECK-NEXT: SU(3) CortexA55UnitFPALU[0]=12c
1030+
# CHECK-NEXT: hazard: SU(3) CortexA55UnitFPALU[0]=12c, is later than CurrCycle = 11c
1031+
# CHECK-NEXT: Checking pending node SU(6)
9881032
# CHECK-NEXT: Resource booking (@11c):
9891033
# CHECK-NEXT: CortexA55UnitALU(0) = 3
9901034
# CHECK-NEXT: CortexA55UnitALU(1) = 3
@@ -1002,8 +1046,11 @@ body: |
10021046
# CHECK-NEXT: Instance 0 available @12c
10031047
# CHECK-NEXT: Instance 1 available @12c
10041048
# CHECK-NEXT: selecting CortexA55UnitFPALU[0] available @12c
1005-
# CHECK-NEXT: SU(6) CortexA55UnitFPALU[0]=12c
1049+
# CHECK-NEXT: hazard: SU(6) CortexA55UnitFPALU[0]=12c, is later than CurrCycle = 11c
1050+
# CHECK-NEXT: Checking pending node SU(0)
1051+
# CHECK-NEXT: hazard: SU(0) ReadyCycle = 13 is later than CurrCycle = 11 on an unbuffered resource
10061052
# CHECK-NEXT: Cycle: 12 BotQ.A
1053+
# CHECK-NEXT: Checking pending node SU(3)
10071054
# CHECK-NEXT: Resource booking (@12c):
10081055
# CHECK-NEXT: CortexA55UnitALU(0) = 3
10091056
# CHECK-NEXT: CortexA55UnitALU(1) = 3
@@ -1021,6 +1068,10 @@ body: |
10211068
# CHECK-NEXT: Instance 0 available @12c
10221069
# CHECK-NEXT: Instance 1 available @12c
10231070
# CHECK-NEXT: selecting CortexA55UnitFPALU[0] available @12c
1071+
# CHECK-NEXT: Move SU(3) into Available Q
1072+
# CHECK-NEXT: Checking pending node SU(0)
1073+
# CHECK-NEXT: hazard: SU(0) ReadyCycle = 13 is later than CurrCycle = 12 on an unbuffered resource
1074+
# CHECK-NEXT: Checking pending node SU(6)
10241075
# CHECK-NEXT: Resource booking (@12c):
10251076
# CHECK-NEXT: CortexA55UnitALU(0) = 3
10261077
# CHECK-NEXT: CortexA55UnitALU(1) = 3
@@ -1038,6 +1089,7 @@ body: |
10381089
# CHECK-NEXT: Instance 0 available @12c
10391090
# CHECK-NEXT: Instance 1 available @12c
10401091
# CHECK-NEXT: selecting CortexA55UnitFPALU[0] available @12c
1092+
# CHECK-NEXT: Move SU(6) into Available Q
10411093
# CHECK-NEXT: Queue BotQ.P: 0
10421094
# CHECK-NEXT: Queue BotQ.A: 3 6
10431095
# CHECK-NEXT: Cand SU(3) FIRST
@@ -1101,7 +1153,10 @@ body: |
11011153
# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
11021154
# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
11031155
# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1156+
# CHECK-NEXT: hazard: SU(4) ReadyCycle = 16 is later than CurrCycle = 13 on an unbuffered resource
1157+
# CHECK-NEXT: hazard: SU(1) ReadyCycle = 15 is later than CurrCycle = 13 on an unbuffered resource
11041158
# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
1159+
# CHECK-NEXT: Checking pending node SU(0)
11051160
# CHECK-NEXT: Resource booking (@13c):
11061161
# CHECK-NEXT: CortexA55UnitALU(0) = 3
11071162
# CHECK-NEXT: CortexA55UnitALU(1) = 3
@@ -1119,6 +1174,11 @@ body: |
11191174
# CHECK-NEXT: Instance 0 available @13c
11201175
# CHECK-NEXT: Instance 1 available @13c
11211176
# CHECK-NEXT: selecting CortexA55UnitALU[0] available @13c
1177+
# CHECK-NEXT: Move SU(0) into Available Q
1178+
# CHECK-NEXT: Checking pending node SU(1)
1179+
# CHECK-NEXT: hazard: SU(1) ReadyCycle = 15 is later than CurrCycle = 13 on an unbuffered resource
1180+
# CHECK-NEXT: Checking pending node SU(4)
1181+
# CHECK-NEXT: hazard: SU(4) ReadyCycle = 16 is later than CurrCycle = 13 on an unbuffered resource
11221182
# CHECK-NEXT: Resource booking (@13c):
11231183
# CHECK-NEXT: CortexA55UnitALU(0) = 3
11241184
# CHECK-NEXT: CortexA55UnitALU(1) = 3
@@ -1215,7 +1275,14 @@ body: |
12151275
# CHECK-NEXT: CortexA55UnitLd(0) = 4294967295
12161276
# CHECK-NEXT: CortexA55UnitMAC(0) = 4294967295
12171277
# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
1278+
# CHECK-NEXT: hazard: SU(2) ReadyCycle = 16 is later than CurrCycle = 14 on an unbuffered resource
12181279
# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
1280+
# CHECK-NEXT: Checking pending node SU(1)
1281+
# CHECK-NEXT: hazard: SU(1) ReadyCycle = 15 is later than CurrCycle = 14 on an unbuffered resource
1282+
# CHECK-NEXT: Checking pending node SU(4)
1283+
# CHECK-NEXT: hazard: SU(4) ReadyCycle = 16 is later than CurrCycle = 14 on an unbuffered resource
1284+
# CHECK-NEXT: Checking pending node SU(2)
1285+
# CHECK-NEXT: hazard: SU(2) ReadyCycle = 16 is later than CurrCycle = 14 on an unbuffered resource
12191286
# CHECK-NEXT: Resource booking (@14c):
12201287
# CHECK-NEXT: CortexA55UnitALU(0) = 3
12211288
# CHECK-NEXT: CortexA55UnitALU(1) = 3
@@ -1293,6 +1360,7 @@ body: |
12931360
# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
12941361
# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
12951362
# CHECK-NEXT: Cycle: 15 BotQ.A
1363+
# CHECK-NEXT: Checking pending node SU(1)
12961364
# CHECK-NEXT: Resource booking (@15c):
12971365
# CHECK-NEXT: CortexA55UnitALU(0) = 14
12981366
# CHECK-NEXT: CortexA55UnitALU(1) = 3
@@ -1310,6 +1378,11 @@ body: |
13101378
# CHECK-NEXT: Instance 0 available @15c
13111379
# CHECK-NEXT: Instance 1 available @15c
13121380
# CHECK-NEXT: selecting CortexA55UnitALU[0] available @15c
1381+
# CHECK-NEXT: Move SU(1) into Available Q
1382+
# CHECK-NEXT: Checking pending node SU(2)
1383+
# CHECK-NEXT: hazard: SU(2) ReadyCycle = 16 is later than CurrCycle = 15 on an unbuffered resource
1384+
# CHECK-NEXT: Checking pending node SU(4)
1385+
# CHECK-NEXT: hazard: SU(4) ReadyCycle = 16 is later than CurrCycle = 15 on an unbuffered resource
13131386
# CHECK-NEXT: Queue BotQ.P: 2 4
13141387
# CHECK-NEXT: Queue BotQ.A: 1
13151388
# CHECK-NEXT: Scheduling SU(1) %1:fpr128 = COPY $q1
@@ -1369,6 +1442,7 @@ body: |
13691442
# CHECK-NEXT: CortexA55UnitSt(0) = 4294967295
13701443
# CHECK-NEXT: ** ScheduleDAGMILive::schedule picking next node
13711444
# CHECK-NEXT: Cycle: 16 BotQ.A
1445+
# CHECK-NEXT: Checking pending node SU(2)
13721446
# CHECK-NEXT: Resource booking (@16c):
13731447
# CHECK-NEXT: CortexA55UnitALU(0) = 15
13741448
# CHECK-NEXT: CortexA55UnitALU(1) = 3
@@ -1386,6 +1460,8 @@ body: |
13861460
# CHECK-NEXT: Instance 0 available @16c
13871461
# CHECK-NEXT: Instance 1 available @16c
13881462
# CHECK-NEXT: selecting CortexA55UnitALU[0] available @16c
1463+
# CHECK-NEXT: Move SU(2) into Available Q
1464+
# CHECK-NEXT: Checking pending node SU(4)
13891465
# CHECK-NEXT: Resource booking (@16c):
13901466
# CHECK-NEXT: CortexA55UnitALU(0) = 15
13911467
# CHECK-NEXT: CortexA55UnitALU(1) = 3
@@ -1403,6 +1479,7 @@ body: |
14031479
# CHECK-NEXT: Instance 0 available @16c
14041480
# CHECK-NEXT: Instance 1 available @16c
14051481
# CHECK-NEXT: selecting CortexA55UnitFPALU[0] available @16c
1482+
# CHECK-NEXT: Move SU(4) into Available Q
14061483
# CHECK-NEXT: Queue BotQ.P:
14071484
# CHECK-NEXT: Queue BotQ.A: 2 4
14081485
# CHECK-NEXT: Cand SU(2) FIRST

0 commit comments

Comments
 (0)