diff --git a/src/strategies/avx2/sao-avx2.c b/src/strategies/avx2/sao-avx2.c index 032092af..ef05e1c0 100644 --- a/src/strategies/avx2/sao-avx2.c +++ b/src/strategies/avx2/sao-avx2.c @@ -160,8 +160,9 @@ static int sao_edge_ddistortion_avx2(const kvz_pixel *orig_data, tmp_sum_epi32 = _mm256_hadd_epi32(tmp_sum_epi32, tmp_sum_epi32); tmp_sum_epi32 = _mm256_hadd_epi32(tmp_sum_epi32, tmp_sum_epi32); - sum += _mm256_extract_epi32(tmp_sum_epi32, 0); - sum += _mm256_extract_epi32(tmp_sum_epi32, 4); + tmp_sum_epi32 = _mm256_add_epi32(tmp_sum_epi32, _mm256_shuffle_epi32(tmp_sum_epi32, _MM_SHUFFLE(0, 1, 0, 1))); + + sum += _mm_cvtsi128_si32(_mm256_castsi256_si128(tmp_sum_epi32)); break; default: