diff --git a/loopy/target/c/__init__.py b/loopy/target/c/__init__.py index be1a81bcd4f03875ac78d2a267d2ea5257ee5ad8..34edb17de38c377a16067fc9dcd259b8f46787ad 100644 --- a/loopy/target/c/__init__.py +++ b/loopy/target/c/__init__.py @@ -549,6 +549,17 @@ class CASTBuilder(ASTBuilderBase): return arg_decl + def get_constant_arg_decl(self, name, shape, dtype, is_written): + from loopy.target.c import POD # uses the correct complex type + from cgen import RestrictPointer, Const + + arg_decl = RestrictPointer(POD(self, dtype, name)) + + if not is_written: + arg_decl = Const(arg_decl) + + return arg_decl + def emit_assignment(self, codegen_state, insn): kernel = codegen_state.kernel ecm = codegen_state.expression_to_code_mapper diff --git a/loopy/target/cuda.py b/loopy/target/cuda.py index 36650e1d22f467d523eac7572a976133ea42d387..d31718f15ed563bba0b602e6017536b72b6deed0 100644 --- a/loopy/target/cuda.py +++ b/loopy/target/cuda.py @@ -336,7 +336,7 @@ class CUDACASTBuilder(CASTBuilder): from cgen import RestrictPointer, Const from cgen.cuda import CudaConstant - arg_decl = RestrictPointer(POD(dtype, name)) + arg_decl = RestrictPointer(POD(self, dtype, name)) if not is_written: arg_decl = Const(arg_decl)