From ca6b294c925b7430a8f2d95699acb4040503d84c Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Fri, 24 Aug 2012 01:13:24 -0400 Subject: [PATCH] Reenable If() and comparisons. --- loopy/codegen/expression.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/loopy/codegen/expression.py b/loopy/codegen/expression.py index a0f430545..0ea6e169e 100644 --- a/loopy/codegen/expression.py +++ b/loopy/codegen/expression.py @@ -360,6 +360,24 @@ class LoopyCCodeMapper(RecursiveMapper): map_max = map_min + def map_if(self, expr, enclosing_prec, type_context): + from pymbolic.mapper.stringifier import PREC_NONE + return "(%s ? %s : %s)" % ( + self.rec(expr.condition, PREC_NONE, "i"), + self.rec(expr.then, PREC_NONE, type_context), + self.rec(expr.else_, PREC_NONE, type_context), + ) + + def map_comparison(self, expr, enclosing_prec, type_context): + from pymbolic.mapper.stringifier import PREC_COMPARISON + + return self.parenthesize_if_needed( + "%s %s %s" % ( + self.rec(expr.left, PREC_COMPARISON, None), + expr.operator, + self.rec(expr.right, PREC_COMPARISON, None)), + enclosing_prec, PREC_COMPARISON) + def map_constant(self, expr, enclosing_prec, type_context): if isinstance(expr, complex): cast_type = "cdouble_t" @@ -375,6 +393,9 @@ class LoopyCCodeMapper(RecursiveMapper): elif type_context == "i": return str(int(expr)) else: + if isinstance(expr, int): + return str(int(expr)) + raise RuntimeError("don't know how to generated code " "for constant '%s'" % expr) -- GitLab