Lines Matching defs:PWAC
52 /// Determine if @p PWAC is too complex to continue.
53 static bool isTooComplex(PWACtx PWAC) {
55 isl_pw_aff_foreach_piece(PWAC.first.get(), addNumBasicSets, &NumBasicSets);
90 void SCEVAffinator::interpretAsUnsigned(PWACtx &PWAC, unsigned Width) {
91 auto *NonNegDom = isl_pw_aff_nonneg_set(PWAC.first.copy());
93 isl_pw_aff_intersect_domain(PWAC.first.copy(), isl_set_copy(NonNegDom));
95 PWAC.first = isl::manage(isl_pw_aff_union_add(
96 NonNegPWA, isl_pw_aff_add(PWAC.first.release(), ExpPWA)));
100 PWACtx &PWAC, RecordedAssumptionsTy *RecordedAssumptions) {
103 auto *NegPWA = isl_pw_aff_neg(PWAC.first.copy());
105 PWAC.second =
106 isl::manage(isl_set_union(PWAC.second.release(), isl_set_copy(NegDom)));
132 PWACtx SCEVAffinator::checkForWrapping(const SCEV *Expr, PWACtx PWAC) const {
141 return PWAC;
143 isl::pw_aff PWAMod = addModuloSemantic(PWAC.first, Expr->getType());
145 isl::set NotEqualSet = PWAC.first.ne_set(PWAMod);
146 PWAC.second = PWAC.second.unite(NotEqualSet).coalesce();
157 return PWAC;
200 PWACtx PWAC = CachedExpressions[Key];
201 if (!PWAC.first.is_null())
202 return PWAC;
223 PWAC = getPWACtxFromPWA(isl::manage(isl_pw_aff_alloc(Domain, Affine)));
225 PWAC = SCEVVisitor<SCEVAffinator, PWACtx>::visit(Expr);
227 PWAC.first = addModuloSemantic(PWAC.first, Expr->getType());
229 PWAC = checkForWrapping(Expr, PWAC);
233 PWAC = combine(PWAC, visitConstant(Factor), isl_pw_aff_mul);
235 PWAC.first = addModuloSemantic(PWAC.first, Expr->getType());
238 // For compile time reasons we need to simplify the PWAC before we cache and
240 PWAC.first = PWAC.first.coalesce();
242 PWAC = checkForWrapping(Key.first, PWAC);
244 CachedExpressions[Key] = PWAC;
245 return PWAC;