From 9f553c6b7be806ee685c150d56c7c42f5953fa48 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Tue, 30 Apr 2013 00:12:14 -0400 Subject: [PATCH] Fix type inference for arithmetic with small integers. --- loopy/codegen/expression.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/loopy/codegen/expression.py b/loopy/codegen/expression.py index 1ddb9ec30..5772bf7bc 100644 --- a/loopy/codegen/expression.py +++ b/loopy/codegen/expression.py @@ -77,6 +77,24 @@ class TypeInferenceMapper(CombineMapper): return result + def map_sum(self, expr): + dtypes = [] + small_integer_dtypes = [] + for child in expr.children: + dtype = self.rec(child) + if isinstance(child, (int, np.integer)) and abs(child) < 1024: + small_integer_dtypes.append(dtype) + else: + dtypes.append(dtype) + + from pytools import all + if all(dtype.kind == "i" for dtype in dtypes): + dtypes.extend(small_integer_dtypes) + + return self.combine(dtypes) + + map_product = map_sum + def map_quotient(self, expr): n_dtype = self.rec(expr.numerator) d_dtype = self.rec(expr.denominator) -- GitLab