@@ -3418,6 +3418,12 @@ bool Augmentation::markNonDefaultMaskDef()
3418
3418
nonDefaultMaskDefFound = true;
3419
3419
}
3420
3420
3421
+ if(kernel.getOption(vISA_enableBCR) && gra.getBankConflict(dcl) != BANK_CONFLICT_NONE)
3422
+ {
3423
+ gra.setAugmentationMask(dcl, AugmentationMasks::NonDefault);
3424
+ nonDefaultMaskDefFound = true;
3425
+ }
3426
+
3421
3427
if (!nonDefaultMaskDefFound &&
3422
3428
gra.getAugmentationMask(dcl) != prevAugMask &&
3423
3429
prevAugMask != AugmentationMasks::Undetermined)
@@ -6084,7 +6090,7 @@ bool GraphColor::assignColors(ColorHeuristic colorHeuristicGRF, bool doBankConfl
6084
6090
//
6085
6091
// for GRF register assignment, if we are performing round-robin (1st pass) then abort on spill
6086
6092
//
6087
- if ((heuristic == ROUND_ROBIN || doBankConflict) &&
6093
+ if ((heuristic == ROUND_ROBIN || ( doBankConflict && !kernel.getOption(vISA_enableBCR)) ) &&
6088
6094
(lr->getRegKind() == G4_GRF || lr->getRegKind() == G4_FLAG))
6089
6095
{
6090
6096
return false;
@@ -6659,10 +6665,13 @@ bool GraphColor::regAlloc(
6659
6665
return false;
6660
6666
}
6661
6667
6662
- if (!success && doBankConflictReduction )
6668
+ if (!kernel.getOption(vISA_enableBCR) )
6663
6669
{
6664
- resetTemporaryRegisterAssignments();
6665
- assignColors(FIRST_FIT, false, false);
6670
+ if (!success && doBankConflictReduction)
6671
+ {
6672
+ resetTemporaryRegisterAssignments();
6673
+ assignColors(FIRST_FIT, false, false);
6674
+ }
6666
6675
}
6667
6676
}
6668
6677
}
@@ -9811,7 +9820,6 @@ int GlobalRA::coloringRegAlloc()
9811
9820
failSafeRAIteration++;
9812
9821
}
9813
9822
}
9814
-
9815
9823
stopTimer(TimerID::SPILL);
9816
9824
}
9817
9825
// RA successfully allocates regs
0 commit comments