diff --git a/loopy/target/c/codegen/expression.py b/loopy/target/c/codegen/expression.py index 6d06d8a79d800d9b874537c3c5086ec0af5cb14a..34345477764811e082bd129b096c9e2a843520b6 100644 --- a/loopy/target/c/codegen/expression.py +++ b/loopy/target/c/codegen/expression.py @@ -176,7 +176,7 @@ class ExpressionToCExpressionMapper(IdentityMapper): lambda expr: evaluate(expr, self.codegen_state.var_subst_map), self.codegen_state.vectorization_info) - from loopy.kernel.data import ImageArg, GlobalArg, TemporaryVariable + from loopy.kernel.data import ImageArg, GlobalArg, TemporaryVariable, ConstantArg if isinstance(ary, ImageArg): extra_axes = 0 @@ -209,7 +209,7 @@ class ExpressionToCExpressionMapper(IdentityMapper): raise NotImplementedError( "non-floating-point images not supported for now") - elif isinstance(ary, (GlobalArg, TemporaryVariable)): + elif isinstance(ary, (GlobalArg, TemporaryVariable, ConstantArg)): if len(access_info.subscripts) == 0: if isinstance(ary, GlobalArg): # unsubscripted global args are pointers diff --git a/loopy/target/opencl.py b/loopy/target/opencl.py index 9c2d428b03c325d3ca8b6af398beb79406bd5170..f0436099c6127e6426b03df2c48342b6ee99c67f 100644 --- a/loopy/target/opencl.py +++ b/loopy/target/opencl.py @@ -486,11 +486,11 @@ class OpenCLCASTBuilder(CASTBuilder): return CLImage(num_target_axes, mode, name) def get_constant_arg_decl(self, name, shape, dtype, is_written): - from loopy.codegen import POD # uses the correct complex type + from loopy.target.c import POD # uses the correct complex type from cgen import RestrictPointer, Const from cgen.opencl import CLConstant - arg_decl = RestrictPointer(POD(dtype, name)) + arg_decl = RestrictPointer(POD(self, dtype, name)) if not is_written: arg_decl = Const(arg_decl)