From fd7ebff455b8db9e78ca3e11031e43e8ef021ab2 Mon Sep 17 00:00:00 2001
From: Marcel Koch <marcel.koch@uni-muenster.de>
Date: Tue, 10 Apr 2018 13:57:08 +0200
Subject: [PATCH] remove CInstructions temporarily for lp.extract_subst

---
 .../perftool/blockstructured/vectorization.py  | 18 ++++++++++++------
 test/blockstructured/poisson/poisson_vec.mini  |  2 --
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/python/dune/perftool/blockstructured/vectorization.py b/python/dune/perftool/blockstructured/vectorization.py
index fbf5160f..0ff194a7 100644
--- a/python/dune/perftool/blockstructured/vectorization.py
+++ b/python/dune/perftool/blockstructured/vectorization.py
@@ -232,17 +232,23 @@ def add_vcl_access(knl, iname_inner):
     vector_alias = [a for a in knl.arg_dict if a.endswith('alias')]
     dim = world_dimension()
     dim_names = ["x","y","z"] + [str(i) for i in range(4,dim+1)]
+    knl_without_cinsn = knl.copy(instructions=[insn for insn in knl.instructions
+                                               if not isinstance(insn, lp.CInstruction)])
     for alias in vector_alias:
-        parameters = 'ex_o,ex_i,'+','.join(['e'+d for d in dim_names[1:dim]])+',ix,'+','.join(['i'+d for d in dim_names[1:dim]])
-        knl = lp.extract_subst(knl, alias+'_subst', '{}[{}]'.format(alias, parameters),
-                               parameters=parameters)
-        new_subst = knl.substitutions.copy()
+        parameters = 'ex_o,ex_i,' + ','.join(['e'+d for d in dim_names[1:dim]])\
+                     + ',ix,' + ','.join(['i'+d for d in dim_names[1:dim]])
+        knl_without_cinsn = lp.extract_subst(knl_without_cinsn, alias+'_subst', '{}[{}]'.format(alias, parameters),
+                                             parameters=parameters)
+        new_subst = knl_without_cinsn.substitutions.copy()
         rule = new_subst[alias+'_subst']
         rule.expression = prim.Subscript(prim.Variable(alias.replace('alias','vec')), (prim.Variable('ex_i'),))
-        knl = knl.copy(substitutions=new_subst)
+        knl_without_cinsn = knl_without_cinsn.copy(substitutions=new_subst)
 
     from loopy.match import All
-    knl = lp.expand_subst(knl, All())
+    knl_without_cinsn = lp.expand_subst(knl_without_cinsn, All())
+    knl = knl_without_cinsn.copy(instructions=knl_without_cinsn.instructions
+                                              + [insn for insn in knl.instructions
+                                                 if isinstance(insn, lp.CInstruction)])
 
     # add store and load dependencies and set right accumulation assignee
     new_insns = []
diff --git a/test/blockstructured/poisson/poisson_vec.mini b/test/blockstructured/poisson/poisson_vec.mini
index e1c81889..edaabbac 100644
--- a/test/blockstructured/poisson/poisson_vec.mini
+++ b/test/blockstructured/poisson/poisson_vec.mini
@@ -15,5 +15,3 @@ blockstructured = 1
 number_of_blocks = 16
 vectorization_blockstructured = 1
 matrix_free = 1
-opcounter = 1
-time_opcounter = 0
-- 
GitLab