/// <summary cref="IValueVisitor.Visit(PredicateBarrier)"/> public void Visit(PredicateBarrier barrier) { var targetRegister = AllocatePrimitive(barrier); var sourcePredicate = LoadPrimitive(barrier.Predicate); switch (barrier.Kind) { case PredicateBarrierKind.And: case PredicateBarrierKind.Or: using (var command = BeginCommand( PTXInstructions.GetPredicateBarrier(barrier.Kind))) { command.AppendArgument(targetRegister); command.AppendConstant(0); command.AppendArgument(sourcePredicate); } break; case PredicateBarrierKind.PopCount: using (var command = BeginCommand( PTXInstructions.GetPredicateBarrier(barrier.Kind))) { command.AppendArgument(targetRegister); command.AppendConstant(0); command.AppendArgument(sourcePredicate); } break; default: throw new InvalidCodeGenerationException(); } }