Example #1
0
        public BarrierInvariantDescriptor(
            Expr predicate, Expr barrierInvariant, QKeyValue sourceLocationInfo, KernelDualiser dualiser, string procName, GPUVerifier verifier)
        {
            this.Predicate          = predicate;
            this.BarrierInvariant   = barrierInvariant;
            this.sourceLocationInfo = sourceLocationInfo;
            this.Dualiser           = dualiser;
            this.ProcName           = procName;
            this.accessExprs        = new List <Expr>();
            this.Verifier           = verifier;

            if (GPUVerifyVCGenCommandLineOptions.BarrierAccessChecks)
            {
                var visitor = new SubExprVisitor();
                visitor.VisitExpr(this.BarrierInvariant);
                foreach (Tuple <Expr, IdentifierExpr, Expr> pair in visitor.SubExprs)
                {
                    var cond  = pair.Item1;
                    var v     = pair.Item2;
                    var index = pair.Item3;
                    this.accessExprs.Add(
                        Expr.Imp(predicate, Expr.Imp(cond, BuildAccessedExpr(v.Name, index))));
                }
            }
        }
 public BinaryBarrierInvariantDescriptor(Expr Predicate, Expr BarrierInvariant,
                                         QKeyValue SourceLocationInfo,
                                         KernelDualiser Dualiser, string ProcName, GPUVerifier Verifier) :
     base(Predicate, BarrierInvariant, SourceLocationInfo, Dualiser, ProcName, Verifier)
 {
     InstantiationExprPairs = new List <Tuple <Expr, Expr> >();
 }
Example #3
0
 public UnaryBarrierInvariantDescriptor(
     Expr predicate, Expr barrierInvariant, QKeyValue sourceLocationInfo, KernelDualiser dualiser, string procName, GPUVerifier verifier)
     : base(predicate, barrierInvariant, sourceLocationInfo, dualiser, procName, verifier)
 {
     instantiationExprs = new List <Expr>();
 }