From 262be774033a7ebd93cd342685d6ad5622ef41ed Mon Sep 17 00:00:00 2001
From: Markus Holzer <markus.holzer@fau.de>
Date: Tue, 12 Sep 2023 12:01:24 +0200
Subject: [PATCH] Activate base pointer for NT stores

---
 pystencils/cpu/kernelcreation.py                | 2 ++
 pystencils_tests/test_vectorization.py          | 3 +--
 pystencils_tests/test_vectorization_specific.py | 3 +--
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/pystencils/cpu/kernelcreation.py b/pystencils/cpu/kernelcreation.py
index c99332ff..e58641e0 100644
--- a/pystencils/cpu/kernelcreation.py
+++ b/pystencils/cpu/kernelcreation.py
@@ -76,6 +76,8 @@ def create_kernel(assignments: NodeCollection,
     base_pointer_spec = config.base_pointer_specification
     if base_pointer_spec is None:
         base_pointer_spec = []
+        if config.cpu_vectorize_info and config.cpu_vectorize_info.get('nontemporal'):
+            base_pointer_spec = [['spatialInner0'], ['spatialInner1']] if len(loop_order) >= 2 else [['spatialInner0']]
     base_pointer_info = {field.name: parse_base_pointer_info(base_pointer_spec, loop_order,
                                                              field.spatial_dimensions, field.index_dimensions)
                          for field in fields_without_buffers}
diff --git a/pystencils_tests/test_vectorization.py b/pystencils_tests/test_vectorization.py
index 071bc240..302d8cbd 100644
--- a/pystencils_tests/test_vectorization.py
+++ b/pystencils_tests/test_vectorization.py
@@ -141,8 +141,7 @@ def test_aligned_and_nt_stores(openmp, instruction_set=instruction_set):
            'assume_inner_stride_one': True}
     update_rule = [ps.Assignment(f.center(), 0.25 * (g[-1, 0] + g[1, 0] + g[0, -1] + g[0, 1]))]
     # Without the base pointer spec, the inner store is not aligned
-    config = pystencils.config.CreateKernelConfig(target=dh.default_target, cpu_vectorize_info=opt, cpu_openmp=openmp,
-                                                  base_pointer_specification=[['spatialInner0']])
+    config = pystencils.config.CreateKernelConfig(target=dh.default_target, cpu_vectorize_info=opt, cpu_openmp=openmp)
     ast = ps.create_kernel(update_rule, config=config)
     if instruction_set in ['sse'] or instruction_set.startswith('avx'):
         assert 'stream' in ast.instruction_set
diff --git a/pystencils_tests/test_vectorization_specific.py b/pystencils_tests/test_vectorization_specific.py
index 610f671e..46e13c2d 100644
--- a/pystencils_tests/test_vectorization_specific.py
+++ b/pystencils_tests/test_vectorization_specific.py
@@ -116,8 +116,7 @@ def test_alignment_and_correct_ghost_layers(gl_field, gl_kernel, instruction_set
     opt = {'instruction_set': instruction_set, 'assume_aligned': True,
            'nontemporal': True, 'assume_inner_stride_one': True}
     config = pystencils.config.CreateKernelConfig(target=dh.default_target,
-                                                  cpu_vectorize_info=opt, ghost_layers=gl_kernel,
-                                                  base_pointer_specification=[['spatialInner0']])
+                                                  cpu_vectorize_info=opt, ghost_layers=gl_kernel)
     ast = ps.create_kernel(update_rule, config=config)
     kernel = ast.compile()
     if gl_kernel != gl_field:
-- 
GitLab