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> >(); }
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>(); }