From 45e9c3e7fcfb942bea6e23b88d30af21d56d9357 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Thu, 25 May 2017 07:16:57 -0700
Subject: [PATCH] Allow names, exprs, and lp.auto for array offsets

---
 loopy/kernel/array.py | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/loopy/kernel/array.py b/loopy/kernel/array.py
index a02fc58d9..40612dc83 100644
--- a/loopy/kernel/array.py
+++ b/loopy/kernel/array.py
@@ -1036,7 +1036,9 @@ class ArrayBase(ImmutableRecord):
 
                             is_written=is_written)
 
-                if self.offset:
+                import loopy as lp
+
+                if self.offset is lp.auto:
                     offset_name = full_name+"_offset"
                     yield ImplementedDataInfo(
                                 target=target,
@@ -1202,12 +1204,17 @@ def get_access_info(target, ary, index, eval_expr, vectorization_info):
         return result
 
     def apply_offset(sub):
+        import loopy as lp
+
         if ary.offset:
-            offset_name = ary.offset
-            if offset_name is lp.auto:
+            if ary.offset is lp.auto:
                 offset_name = array_name+"_offset"
-
-            return var(offset_name) + sub
+            elif isinstance(ary.offset, str):
+                offset_name = ary.offset
+                return var(offset_name) + sub
+            else:
+                # assume it's an expression
+                return ary.offset + sub
         else:
             return sub
 
-- 
GitLab