From 4703770d3b9ddf7ffc3d1c50f675b6011f4fa8d0 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Mon, 3 Sep 2012 01:24:18 -0400 Subject: [PATCH] Use assumptions when determining non-negativity in expr codegen. --- loopy/codegen/expression.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/loopy/codegen/expression.py b/loopy/codegen/expression.py index 7305498c5..ee35ba467 100644 --- a/loopy/codegen/expression.py +++ b/loopy/codegen/expression.py @@ -6,6 +6,7 @@ from pymbolic.mapper import RecursiveMapper from pymbolic.mapper.stringifier import (PREC_NONE, PREC_CALL, PREC_PRODUCT, PREC_POWER) from pymbolic.mapper import CombineMapper +import islpy as isl # {{{ type inference @@ -320,6 +321,12 @@ class LoopyCCodeMapper(RecursiveMapper): iname_deps = get_dependencies(expr) & self.kernel.all_inames() domain = self.kernel.get_inames_domain(iname_deps) + assumption_non_param = isl.BasicSet.from_params(self.kernel.assumptions) + assumptions = isl.align_spaces( + assumption_non_param, + domain, obj_bigger_ok=True) + domain = domain & assumptions + from loopy.isl_helpers import is_nonnegative num_nonneg = is_nonnegative(expr.numerator, domain) den_nonneg = is_nonnegative(expr.denominator, domain) -- GitLab