From 8a6b5d8f025b8af365acbe6c8f7128ac0fccffe5 Mon Sep 17 00:00:00 2001
From: thorstenhater <24411438+thorstenhater@users.noreply.github.com>
Date: Mon, 23 Aug 2021 11:32:38 +0200
Subject: [PATCH] Clean-up AVX routine and global def [EOM] (#1618)

* Clean-up AVX SIMD mask setting.
* Remove redundant global constant in the memory lib.
* Fix 'unused variable' warning in `test_probe.cpp`.
---
 arbor/include/arbor/simd/avx.hpp | 10 +++++-----
 arbor/memory/range_limits.hpp    |  6 ------
 test/unit/test_probe.cpp         |  2 +-
 3 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/arbor/include/arbor/simd/avx.hpp b/arbor/include/arbor/simd/avx.hpp
index 67fb4f4a..2aeaed9f 100644
--- a/arbor/include/arbor/simd/avx.hpp
+++ b/arbor/include/arbor/simd/avx.hpp
@@ -332,11 +332,11 @@ struct avx_double4: implbase<avx_double4> {
         return _mm256_castsi256_pd(combine_m128i(bu, bl));
     }
 
-    static void mask_set_element(__m256d& u, int i, bool b) {
-        char data[256];
-        _mm256_storeu_pd((double*)data, u);
-        ((int64*)data)[i] = -(int64)b;
-        u = _mm256_loadu_pd((double*)data);
+    static void mask_set_element(__m256d& u, const int i, bool b) {
+        int64 data[4];
+        _mm256_storeu_si256((__m256i*)data, _mm256_castpd_si256(u));
+        data[i] = -(int64)b;
+        u = _mm256_castsi256_pd(_mm256_loadu_si256((__m256i*)data));
     }
 
     static void mask_copy_to(const __m256d& m, bool* y) {
diff --git a/arbor/memory/range_limits.hpp b/arbor/memory/range_limits.hpp
index c1284a8b..273e2f80 100644
--- a/arbor/memory/range_limits.hpp
+++ b/arbor/memory/range_limits.hpp
@@ -5,11 +5,5 @@ namespace memory {
 // tag for final element in a range
 struct end_type {};
 
-namespace{
-    // attach the unused attribute so that -Wall won't generate warnings when
-    // translation units that include this file don't use end
-    end_type end [[gnu::unused]];
-}
-
 } // namespace memory
 } // namespace arb
diff --git a/test/unit/test_probe.cpp b/test/unit/test_probe.cpp
index 6ea8ad80..13fc9889 100644
--- a/test/unit/test_probe.cpp
+++ b/test/unit/test_probe.cpp
@@ -1164,7 +1164,7 @@ void run_stimulus_probe_test(const context& ctx) {
                 cable_probe_stimulus_current_cell{}, {stim_until/2, 2*stim_until}).at(0);
 
         ASSERT_EQ(3u, traces[i].meta.size());
-        for (unsigned cv: {0u, 1u, 2u}) {
+        for ([[maybe_unused]] unsigned cv: {0u, 1u, 2u}) {
             ASSERT_EQ(2u, traces[i].size());
         }
     }
-- 
GitLab