From 615e19461acc387c94f73c621dceed9fa5ad9202 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Thu, 8 Oct 2015 00:11:50 -0500
Subject: [PATCH] Pass kernel (instead of target) to manglers and preamble
 generators

---
 loopy/codegen/__init__.py       | 2 +-
 loopy/kernel/__init__.py        | 4 ++--
 loopy/library/function.py       | 6 +++---
 loopy/target/opencl/__init__.py | 6 +++---
 4 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/loopy/codegen/__init__.py b/loopy/codegen/__init__.py
index 37c8a12ee..225f7e7fe 100644
--- a/loopy/codegen/__init__.py
+++ b/loopy/codegen/__init__.py
@@ -561,7 +561,7 @@ def generate_code(kernel, device=None):
     preamble_generators = (kernel.preamble_generators
             + kernel.target.preamble_generators())
     for prea_gen in preamble_generators:
-        preambles.extend(prea_gen(kernel.target, seen_dtypes, seen_functions))
+        preambles.extend(prea_gen(kernel, seen_dtypes, seen_functions))
 
     seen_preamble_tags = set()
     dedup_preambles = []
diff --git a/loopy/kernel/__init__.py b/loopy/kernel/__init__.py
index d2d178bc4..13afaa66d 100644
--- a/loopy/kernel/__init__.py
+++ b/loopy/kernel/__init__.py
@@ -302,7 +302,7 @@ class LoopKernel(RecordWithoutPickling):
         manglers = self.target.function_manglers() + self.function_manglers
 
         for mangler in manglers:
-            mangle_result = mangler(self.target, identifier, arg_dtypes)
+            mangle_result = mangler(self, identifier, arg_dtypes)
             if mangle_result is not None:
                 return mangle_result
 
@@ -316,7 +316,7 @@ class LoopKernel(RecordWithoutPickling):
         manglers = self.target.symbol_manglers() + self.symbol_manglers
 
         for mangler in manglers:
-            result = mangler(self.target, identifier)
+            result = mangler(self, identifier)
             if result is not None:
                 return result
 
diff --git a/loopy/library/function.py b/loopy/library/function.py
index e494169bb..df623a477 100644
--- a/loopy/library/function.py
+++ b/loopy/library/function.py
@@ -23,19 +23,19 @@ THE SOFTWARE.
 """
 
 
-def default_function_mangler(target, name, arg_dtypes):
+def default_function_mangler(kernel, name, arg_dtypes):
     from loopy.library.reduction import reduction_function_mangler
 
     manglers = [reduction_function_mangler]
     for mangler in manglers:
-        result = mangler(target, name, arg_dtypes)
+        result = mangler(kernel, name, arg_dtypes)
         if result is not None:
             return result
 
     return None
 
 
-def single_arg_function_mangler(target, name, arg_dtypes):
+def single_arg_function_mangler(kernel, name, arg_dtypes):
     if len(arg_dtypes) == 1:
         dtype, = arg_dtypes
         return dtype, name
diff --git a/loopy/target/opencl/__init__.py b/loopy/target/opencl/__init__.py
index eebe6f5da..fcc6819ba 100644
--- a/loopy/target/opencl/__init__.py
+++ b/loopy/target/opencl/__init__.py
@@ -105,7 +105,7 @@ def _register_vector_types(dtype_registry):
 
 # {{{ function mangler
 
-def opencl_function_mangler(target, name, arg_dtypes):
+def opencl_function_mangler(kernel, name, arg_dtypes):
     if not isinstance(name, str):
         return None
 
@@ -134,7 +134,7 @@ def opencl_function_mangler(target, name, arg_dtypes):
 
 # {{{ symbol mangler
 
-def opencl_symbol_mangler(target, name):
+def opencl_symbol_mangler(kernel, name):
     # FIXME: should be more picky about exact names
     if name.startswith("FLT_"):
         return np.dtype(np.float32), name
@@ -155,7 +155,7 @@ def opencl_symbol_mangler(target, name):
 
 # {{{ preamble generator
 
-def opencl_preamble_generator(target, seen_dtypes, seen_functions):
+def opencl_preamble_generator(kernel, seen_dtypes, seen_functions):
     has_double = False
 
     for dtype in seen_dtypes:
-- 
GitLab