diff --git a/loopy/diagnostic.py b/loopy/diagnostic.py index 512e4ac8619f33856d0a8ed929de0b574f7da014..bec0888e515d1c12d7a25711f6b483e97acb11cb 100644 --- a/loopy/diagnostic.py +++ b/loopy/diagnostic.py @@ -107,6 +107,10 @@ class UnscheduledInstructionError(LoopyError): class ReductionIsNotTriangularError(LoopyError): pass + +class UnableToConvertToAffineExpression(LoopyError): + pass + # }}} diff --git a/loopy/symbolic.py b/loopy/symbolic.py index 6e661f422951b12ecf2340e4b60563063f4b3514..7a9765fe26c702340f0eb4322cc372ddbeb06d22 100644 --- a/loopy/symbolic.py +++ b/loopy/symbolic.py @@ -63,7 +63,7 @@ from islpy import dim_type import re import numpy as np -from loopy.diagnostic import LoopyError +from loopy.diagnostic import UnableToConvertToAffineExpression # {{{ mappers with support for loopy-specific primitives @@ -1292,7 +1292,8 @@ def pwaff_from_expr(space, expr, vars_to_zero=frozenset()): try: return eval_mapper(expr) except UnknownVariableError as e: - raise LoopyError("unable to build (piecewise) affine expression " + raise UnableToConvertToAffineExpression( + "unable to build (piecewise) affine expression " "in terms of variables '%s' " "for expression '%s' " "because '%s: %s'" @@ -1311,8 +1312,6 @@ def simplify_using_aff(kernel, expr): domain = kernel.get_inames_domain(inames) - from pymbolic.mapper.evaluator import UnknownVariableError - try: with isl.SuppressedWarnings(kernel.isl_context): aff = aff_from_expr(domain.space, expr) @@ -1320,7 +1319,7 @@ def simplify_using_aff(kernel, expr): return expr except TypeError: return expr - except UnknownVariableError: + except UnableToConvertToAffineExpression: return expr # FIXME: Deal with assumptions, too.