Exemple #1
0
        public Warp(int executionContextCount)
        {
            _allOne = BitArrayUtility.CreateAllOne(executionContextCount);

            _divergenceStack = new DivergenceStack();
            _divergenceStack.Push(0, _allOne, -1);
        }
Exemple #2
0
        public Warp(int executionContextCount)
        {
            _allOne = BitArrayUtility.CreateAllOne(executionContextCount);

            _divergenceStack = new DivergenceStack();
            _divergenceStack.Push(0, _allOne, -1);
        }
	    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;
     }
 }
	    public abstract bool UpdateDivergenceStack(DivergenceStack divergenceStack, IList<BitArray> activeMasks);