From ae71983b5be52c7f4a2f1bc4dbc34ec2f6ad9b5b Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Tue, 16 Aug 2016 13:14:31 -0500 Subject: [PATCH] Fix aff_to_expr to correctly interpret divs --- loopy/symbolic.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/loopy/symbolic.py b/loopy/symbolic.py index 33bd620af..8e3d5d8fb 100644 --- a/loopy/symbolic.py +++ b/loopy/symbolic.py @@ -57,6 +57,8 @@ from pymbolic.mapper.constant_folder import \ from pymbolic.parser import Parser as ParserBase +from loopy.diagnostic import LoopyError + import islpy as isl from islpy import dim_type @@ -1054,7 +1056,7 @@ class ArrayAccessFinder(CombineMapper): # {{{ (pw)aff to expr conversion -def aff_to_expr(aff): +def aff_to_expr(aff, _floor=False): from pymbolic import var denom = aff.get_denominator_val().to_python() @@ -1070,9 +1072,16 @@ def aff_to_expr(aff): for i in range(aff.dim(dim_type.div)): coeff = (aff.get_coefficient_val(dim_type.div, i)*denom).to_python() if coeff: - result += coeff*aff_to_expr(aff.get_div(i)) + result += coeff*aff_to_expr(aff.get_div(i), _floor=True) - return result // denom + if _floor: + return result // denom + else: + if denom != 1: + raise LoopyError("integer expression with true division: %s" + % aff) + else: + return result def pw_aff_to_expr(pw_aff, int_ok=False): -- GitLab