From 1776d4ae6b45ce5273d76b4ed475aa9d5f293dd7 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Tue, 17 May 2016 00:43:25 -0500
Subject: [PATCH] Ensure all integers are non-numpy (for Boost.Python PyOpenCL)

---
 loopy/compiled.py        | 14 ++++++--------
 loopy/target/pyopencl.py |  2 ++
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/loopy/compiled.py b/loopy/compiled.py
index a30e4b133..3ef3ee27d 100644
--- a/loopy/compiled.py
+++ b/loopy/compiled.py
@@ -192,7 +192,7 @@ def generate_integer_arg_finding_from_shapes(gen, kernel, implemented_data_info)
             for arg_name, value_expr in sources:
                 gen("%s %s is not None:" % (if_stmt, arg_name))
                 with Indentation(gen):
-                    gen("%s = %s"
+                    gen("%s = int(%s)"
                             % (iarg_name, StringifyMapper()(value_expr)))
 
                 if_stmt = "elif"
@@ -226,10 +226,10 @@ def generate_integer_arg_finding_from_offsets(gen, kernel, implemented_data_info
                 gen("else:")
                 with Indentation(gen):
                     if not options.no_numpy:
-                        gen("_lpy_offset = getattr(%s, \"offset\", 0)"
+                        gen("_lpy_offset = int(getattr(%s, \"offset\", 0))"
                                 % impl_array_name)
                     else:
-                        gen("_lpy_offset = %s.offset" % impl_array_name)
+                        gen("_lpy_offset = int(%s.offset)" % impl_array_name)
 
                     base_arg = kernel.impl_arg_to_arg[impl_array_name]
 
@@ -242,7 +242,7 @@ def generate_integer_arg_finding_from_offsets(gen, kernel, implemented_data_info
                                 % impl_array_name)
                         gen("del _lpy_remdr")
                     else:
-                        gen("%s = _lpy_offset // %d)"
+                        gen("%s = _lpy_offset // %d"
                                 % (arg.name, base_arg.dtype.itemsize))
 
                     if not options.skip_arg_checks:
@@ -287,11 +287,9 @@ def generate_integer_arg_finding_from_strides(gen, kernel, implemented_data_info
                                 "not divisible by its dtype itemsize\""
                                 % (stride_impl_axis, impl_array_name))
                         gen("del _lpy_remdr")
+                        gen("%s = int(%s)" % (arg.name, arg.name))
                     else:
-                        gen("%s = divmod(%s.strides[%d], %d)"
-                                % (arg.name, impl_array_name, stride_impl_axis,
-                                    base_arg.dtype.itemsize))
-                        gen("%s = _lpy_offset // %d)"
+                        gen("%s = int(_lpy_offset // %d)"
                                 % (arg.name, base_arg.dtype.itemsize))
 
     gen("# }}}")
diff --git a/loopy/target/pyopencl.py b/loopy/target/pyopencl.py
index b5bd7b63a..7939dc764 100644
--- a/loopy/target/pyopencl.py
+++ b/loopy/target/pyopencl.py
@@ -657,4 +657,6 @@ class PyOpenCLCASTBuilder(OpenCLCASTBuilder):
     # }}}
 
 # }}}
+
+
 # vim: foldmethod=marker
-- 
GitLab