mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-23 20:45:06 +00:00
MachineScheduler: better book-keeping for asserts.
Fixes another test case under PR20057. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212088 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
faa4e49b33
commit
5c7ec29ebc
@ -1690,7 +1690,7 @@ bool SchedBoundary::checkHazard(SUnit *SU) {
|
||||
unsigned NRCycle = getNextResourceCycle(PI->ProcResourceIdx, PI->Cycles);
|
||||
if (NRCycle > CurrCycle) {
|
||||
#ifndef NDEBUG
|
||||
MaxObservedStall = std::max(NRCycle - CurrCycle, MaxObservedStall);
|
||||
MaxObservedStall = std::max(PI->Cycles, MaxObservedStall);
|
||||
#endif
|
||||
DEBUG(dbgs() << " SU(" << SU->NodeNum << ") "
|
||||
<< SchedModel->getResourceName(PI->ProcResourceIdx)
|
||||
@ -1954,10 +1954,12 @@ void SchedBoundary::bumpNode(SUnit *SU) {
|
||||
PE = SchedModel->getWriteProcResEnd(SC); PI != PE; ++PI) {
|
||||
unsigned PIdx = PI->ProcResourceIdx;
|
||||
if (SchedModel->getProcResource(PIdx)->BufferSize == 0) {
|
||||
ReservedCycles[PIdx] = isTop() ? NextCycle + PI->Cycles : NextCycle;
|
||||
#ifndef NDEBUG
|
||||
MaxObservedStall = std::max(PI->Cycles, MaxObservedStall);
|
||||
#endif
|
||||
if (isTop()) {
|
||||
ReservedCycles[PIdx] =
|
||||
std::max(getNextResourceCycle(PIdx, 0), NextCycle + PI->Cycles);
|
||||
}
|
||||
else
|
||||
ReservedCycles[PIdx] = NextCycle;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -172,3 +172,32 @@ entry:
|
||||
}
|
||||
|
||||
declare void @llvm.trap()
|
||||
|
||||
; Regression test for PR20057: "permanent hazard"'
|
||||
; Resource contention on LDST.
|
||||
; CHECK: ********** MI Scheduling **********
|
||||
; CHECK: testLdStConflict
|
||||
; CHECK: *** Final schedule for BB#1 ***
|
||||
; CHECK: LD4Fourv2d
|
||||
; CHECK: STRQui
|
||||
; CHECK: ********** INTERVALS **********
|
||||
define void @testLdStConflict() {
|
||||
entry:
|
||||
br label %loop
|
||||
|
||||
loop:
|
||||
%0 = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4.v2i64.p0i8(i8* null)
|
||||
%ptr = bitcast i8* undef to <2 x i64>*
|
||||
store <2 x i64> zeroinitializer, <2 x i64>* %ptr, align 4
|
||||
%ptr1 = bitcast i8* undef to <2 x i64>*
|
||||
store <2 x i64> zeroinitializer, <2 x i64>* %ptr1, align 4
|
||||
%ptr2 = bitcast i8* undef to <2 x i64>*
|
||||
store <2 x i64> zeroinitializer, <2 x i64>* %ptr2, align 4
|
||||
%ptr3 = bitcast i8* undef to <2 x i64>*
|
||||
store <2 x i64> zeroinitializer, <2 x i64>* %ptr3, align 4
|
||||
%ptr4 = bitcast i8* undef to <2 x i64>*
|
||||
store <2 x i64> zeroinitializer, <2 x i64>* %ptr4, align 4
|
||||
br label %loop
|
||||
}
|
||||
|
||||
declare { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4.v2i64.p0i8(i8*)
|
||||
|
Loading…
Reference in New Issue
Block a user