From c9d6f769960dfb9b524c4fec0d929032e3988d2e Mon Sep 17 00:00:00 2001 From: Martin Kronbichler Date: Mon, 22 Nov 2021 11:38:02 +0100 Subject: [PATCH] VectorizedArray: Simplify compare_and_apply_mask by blend instruction --- include/deal.II/base/vectorization.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/include/deal.II/base/vectorization.h b/include/deal.II/base/vectorization.h index 1b397fec46..93432f5a9e 100644 --- a/include/deal.II/base/vectorization.h +++ b/include/deal.II/base/vectorization.h @@ -5214,8 +5214,7 @@ compare_and_apply_mask(const VectorizedArray &left, _mm256_cmp_ps(left.data, right.data, static_cast(predicate)); VectorizedArray result; - result.data = _mm256_or_ps(_mm256_and_ps(mask, true_values.data), - _mm256_andnot_ps(mask, false_values.data)); + result.data = _mm256_blendv_ps(false_values.data, true_values.data, mask); return result; } @@ -5231,8 +5230,7 @@ compare_and_apply_mask(const VectorizedArray &left, _mm256_cmp_pd(left.data, right.data, static_cast(predicate)); VectorizedArray result; - result.data = _mm256_or_pd(_mm256_and_pd(mask, true_values.data), - _mm256_andnot_pd(mask, false_values.data)); + result.data = _mm256_blendv_pd(false_values.data, true_values.data, mask); return result; } -- 2.39.5