From 723165f87867f1e4ae3cd1a69fd952b56b478069 Mon Sep 17 00:00:00 2001 From: Vitaly Tuzov Date: Fri, 31 May 2019 16:14:54 +0300 Subject: [PATCH] fix for AVX2 version of v_reduce_min intrinsic --- modules/core/include/opencv2/core/hal/intrin_avx.hpp | 2 +- modules/core/test/test_intrin_utils.hpp | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/core/include/opencv2/core/hal/intrin_avx.hpp b/modules/core/include/opencv2/core/hal/intrin_avx.hpp index cd7490bb0d..f765c22a10 100644 --- a/modules/core/include/opencv2/core/hal/intrin_avx.hpp +++ b/modules/core/include/opencv2/core/hal/intrin_avx.hpp @@ -1083,7 +1083,7 @@ OPENCV_HAL_IMPL_AVX_REDUCE_8(v_int32x8, int, max, _mm_max_epi32) __m128 v1 = _v256_extract_high(a.val); \ v0 = intrin(v0, v1); \ v0 = intrin(v0, _mm_permute_ps(v0, _MM_SHUFFLE(0, 0, 3, 2))); \ - v0 = intrin(v0, _mm_permute_ps(v0, _MM_SHUFFLE(0, 0, 0, 3))); \ + v0 = intrin(v0, _mm_permute_ps(v0, _MM_SHUFFLE(0, 0, 0, 1))); \ return _mm_cvtss_f32(v0); \ } diff --git a/modules/core/test/test_intrin_utils.hpp b/modules/core/test/test_intrin_utils.hpp index 3cd1145985..7438d9d1af 100644 --- a/modules/core/test/test_intrin_utils.hpp +++ b/modules/core/test/test_intrin_utils.hpp @@ -772,6 +772,9 @@ template struct TheTest EXPECT_EQ((LaneType)1, v_reduce_min(a)); EXPECT_EQ((LaneType)R::nlanes, v_reduce_max(a)); EXPECT_EQ((LaneType)((1 + R::nlanes)*R::nlanes/2), v_reduce_sum(a)); + dataA[0] += R::nlanes; + R an = dataA; + EXPECT_EQ((LaneType)2, v_reduce_min(an)); return *this; }