From 73090f83502cf338db367f2a03f78b74c1d56c87 Mon Sep 17 00:00:00 2001
From: James Willis <james.s.willis@durham.ac.uk>
Date: Fri, 19 May 2017 14:56:20 +0100
Subject: [PATCH] Used new mask type in runner_dopair1_density_vec and fixed
 bug in benchmarkInteractions.c

---
 src/runner_doiact_vec.c       | 8 ++++----
 src/vector.h                  | 2 ++
 tests/benchmarkInteractions.c | 2 +-
 3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/runner_doiact_vec.c b/src/runner_doiact_vec.c
index d8fdbc8f62..882f99520b 100644
--- a/src/runner_doiact_vec.c
+++ b/src/runner_doiact_vec.c
@@ -1283,10 +1283,10 @@ void runner_dopair1_density_vec(struct runner *r, struct cell *ci,
         int doi_mask;
 
         /* Form r2 < hig2 mask. */
-        v_doi_mask.v = vec_cmp_lt(v_r2.v, v_hig2.v);
+        vec_create_mask(v_doi_mask, vec_cmp_lt(v_r2.v, v_hig2.v));
 
         /* Form integer mask. */
-        doi_mask = vec_cmp_result(v_doi_mask.v);
+        doi_mask = vec_form_int_mask(v_doi_mask);
 
         /* If there are any interactions perform them. */
         if (doi_mask)
@@ -1410,10 +1410,10 @@ void runner_dopair1_density_vec(struct runner *r, struct cell *ci,
         int doj_mask;
 
         /* Form r2 < hig2 mask. */
-        v_doj_mask.v = vec_cmp_lt(v_r2.v, v_hjg2.v);
+        vec_create_mask(v_doj_mask, vec_cmp_lt(v_r2.v, v_hjg2.v));
 
         /* Form integer mask. */
-        doj_mask = vec_cmp_result(v_doj_mask.v);
+        doj_mask = vec_form_int_mask(v_doj_mask);
 
         /* If there are any interactions perform them. */
         if (doj_mask)
diff --git a/src/vector.h b/src/vector.h
index 8a48f31a2d..0c8f178831 100644
--- a/src/vector.h
+++ b/src/vector.h
@@ -78,6 +78,7 @@
 #define vec_cmp_lte(a, b) _mm512_cmp_ps_mask(a, b, _CMP_LE_OQ)
 #define vec_cmp_gte(a, b) _mm512_cmp_ps_mask(a, b, _CMP_GE_OQ)
 #define vec_cmp_result(a) a
+#define vec_form_int_mask(a) a
 #define vec_and(a, b) _mm512_and_ps(a, b)
 #define vec_mask_and(a, b) a & b
 #define vec_init_mask(mask) mask = 0xFFFF
@@ -167,6 +168,7 @@
 #define vec_cmp_lte(a, b) _mm256_cmp_ps(a, b, _CMP_LE_OQ)
 #define vec_cmp_gte(a, b) _mm256_cmp_ps(a, b, _CMP_GE_OQ)
 #define vec_cmp_result(a) _mm256_movemask_ps(a)
+#define vec_form_int_mask(a) _mm256_movemask_ps(a.v) 
 #define vec_and(a, b) _mm256_and_ps(a, b)
 #define vec_mask_and(a, b) _mm256_and_ps(a.v, b.v)
 #define vec_init_mask(mask) mask.m = vec_setint1(0xFFFFFFFF)
diff --git a/tests/benchmarkInteractions.c b/tests/benchmarkInteractions.c
index 3ea5bfaaa5..0f6256217e 100644
--- a/tests/benchmarkInteractions.c
+++ b/tests/benchmarkInteractions.c
@@ -388,7 +388,7 @@ void test_interactions(struct part test_part, struct part *parts, size_t count,
 
     hi_inv_vec = vec_reciprocal(hi_vec);
 
-    mask_vec_t mask, mask2;
+    mask_t mask, mask2;
     vec_init_mask(mask);
     vec_init_mask(mask2);
 
-- 
GitLab