public override bool UpdateDivergenceStack(DivergenceStack divergenceStack, IList<BitArray> activeMasks) { divergenceStack.Peek().NextPC = ReconvergencePC; for (var i = 0; i < NextPCs.Count; i++) if (activeMasks[i].Any()) divergenceStack.Push(NextPCs[i], activeMasks[i], ReconvergencePC); return true; }
public override bool UpdateDivergenceStack(DivergenceStack divergenceStack, IList<BitArray> activeMasks) { var topOfDivergenceStack = divergenceStack.Peek(); if (NextPC == topOfDivergenceStack.ReconvergencePC) { // Reconvergence. divergenceStack.Pop(); return true; } else { // No Divergence. topOfDivergenceStack.NextPC = NextPC; return false; } }