Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 6 additions & 15 deletions libvmaf/src/feature/x86/adm_avx2.c
Original file line number Diff line number Diff line change
Expand Up @@ -484,24 +484,15 @@
flt_ptr1 += src_stride; \
src_ptr2 += src_stride; \
flt_ptr2 += src_stride; \
__m256i src01 = _mm256_cvtepi32_epi64(_mm_loadu_si128((__m128i*)(src_ptr0 + j - 1))); \
__m256i src11 = _mm256_cvtepi32_epi64(_mm_loadu_si128((__m128i*)(src_ptr1 + j - 1))); \
__m256i src21 = _mm256_cvtepi32_epi64(_mm_loadu_si128((__m128i*)(src_ptr2 + j - 1))); \
__m256i src01 = _mm256_cvtepu32_epi64(_mm_loadu_si128((__m128i*)(src_ptr0 + j - 1))); \
__m256i src11 = _mm256_cvtepu32_epi64(_mm_loadu_si128((__m128i*)(src_ptr1 + j - 1))); \
__m256i src21 = _mm256_cvtepu32_epi64(_mm_loadu_si128((__m128i*)(src_ptr2 + j - 1))); \
src01 = _mm256_abs_epi32(src01); \
src11 = _mm256_abs_epi32(src11); \
src21 = _mm256_abs_epi32(src21); \
__m256i flt01 = _mm256_cvtepi32_epi64(_mm_loadu_si128((__m128i*)(flt_ptr0 + j - 1))); \
__m256i flt11 = _mm256_cvtepi32_epi64(_mm_loadu_si128((__m128i*)(flt_ptr1 + j - 1))); \
__m256i flt21 = _mm256_cvtepi32_epi64(_mm_loadu_si128((__m128i*)(flt_ptr2 + j - 1))); \
__m256i mask_src01_ltz = _mm256_cmpgt_epi64(_mm256_setzero_si256(), src01); \
__m256i mask_src11_ltz = _mm256_cmpgt_epi64(_mm256_setzero_si256(), src11); \
__m256i mask_src21_ltz = _mm256_cmpgt_epi64(_mm256_setzero_si256(), src21); \
__m256i src01_us = _mm256_and_si256(_mm256_mul_epi32(src01, _mm256_set1_epi32(-1)), mask_src01_ltz); \
__m256i src11_us = _mm256_and_si256(_mm256_mul_epi32(src11, _mm256_set1_epi32(-1)), mask_src11_ltz); \
__m256i src21_us = _mm256_and_si256(_mm256_mul_epi32(src21, _mm256_set1_epi32(-1)), mask_src21_ltz); \
src01 = _mm256_andnot_si256(mask_src01_ltz, src01); \
src11 = _mm256_andnot_si256(mask_src11_ltz, src11); \
src21 = _mm256_andnot_si256(mask_src21_ltz, src21); \
src01 = _mm256_or_si256(src01, src01_us); \
src11 = _mm256_or_si256(src11, src11_us); \
src21 = _mm256_or_si256(src21, src21_us); \
__m256i i4_one_by_15 = _mm256_set1_epi64x(I4_ONE_BY_15); \
src01 = _mm256_add_epi64(_mm256_mul_epi32(src01, i4_one_by_15), add_bef_shift_256); \
src11 = _mm256_add_epi64(_mm256_mul_epi32(src11, i4_one_by_15), add_bef_shift_256); \
Expand Down
Loading