diff --git a/libavcodec/aarch64/h264dsp_neon.S b/libavcodec/aarch64/h264dsp_neon.S index 723b692019..c09db164b6 100644 --- a/libavcodec/aarch64/h264dsp_neon.S +++ b/libavcodec/aarch64/h264dsp_neon.S @@ -810,9 +810,9 @@ function ff_weight_h264_pixels_\w\()_neon, export=1 dup v18.8h, w6 cmp w4, #0 b.lt 10f - weight_\w add + weight_\w sqadd 10: neg w4, w4 - weight_\w sub + weight_\w sqsub endfunc .endm diff --git a/libavcodec/arm/h264dsp_neon.S b/libavcodec/arm/h264dsp_neon.S index 5fed6848d8..975b61c8c0 100644 --- a/libavcodec/arm/h264dsp_neon.S +++ b/libavcodec/arm/h264dsp_neon.S @@ -549,9 +549,9 @@ function ff_weight_h264_pixels_\w\()_neon, export=1 vdup.16 q9, lr cmp r12, #0 blt 10f - weight_\w vadd.s16 + weight_\w vqadd.s16 10: rsb r12, r12, #0 - weight_\w vsub.s16 + weight_\w vqsub.s16 endfunc .endm diff --git a/tests/checkasm/h264dsp.c b/tests/checkasm/h264dsp.c index 30478f2956..a38ee32d9c 100644 --- a/tests/checkasm/h264dsp.c +++ b/tests/checkasm/h264dsp.c @@ -500,10 +500,6 @@ static void check_loop_filter_intra(void) } } -// neon fails at edge cases -#define H264_CHECK_WEIGHT (!ARCH_ARM && !ARCH_AARCH64) - -#if H264_CHECK_WEIGHT static void check_weight(void) { LOCAL_ALIGNED_16(uint8_t, dst, [32 * 32 * 2]); @@ -547,7 +543,6 @@ static void check_weight(void) } } } -#endif // only arch that can pass test #define H264_CHECK_BIWEIGHT ARCH_X86 @@ -634,10 +629,8 @@ void checkasm_check_h264dsp(void) check_loop_filter_intra(); report("loop_filter_intra"); -#if H264_CHECK_WEIGHT check_weight(); report("weight"); -#endif #if H264_CHECK_BIWEIGHT check_biweight();