Change #276711
| Category | ffmpeg |
| Changed by | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> |
| Changed at | Sat 01 Aug 2026 16:50:06 |
| Repository | https://git.ffmpeg.org/ffmpeg.git |
| Project | ffmpeg |
| Branch | master |
| Revision | 55bdc109a1911044d11c2a8d8b447a55f6bbe059 |
Comments
avcodec/x86/vc1dsp_loopfilter: Avoid unnecessary PABSW The loop filter is only active if min(a1,a2)<abs(a0) which is done via masking. Ergo the sign of min(a1,a2)-abs(a0) is known (always negative) and one does not need to use PABSW to get its absolute value. This gives a small speedup. Old benchmarks: vc1dsp.vc1_h_loop_filter4_bestcase_c: 3.1 vc1dsp.vc1_h_loop_filter4_bestcase_ssse3: 33.6 ( 0.09x) vc1dsp.vc1_h_loop_filter4_worstcase_c: 43.0 vc1dsp.vc1_h_loop_filter4_worstcase_ssse3: 33.4 ( 1.29x) vc1dsp.vc1_h_loop_filter8_bestcase_c: 6.0 vc1dsp.vc1_h_loop_filter8_bestcase_sse2: 38.4 ( 0.16x) vc1dsp.vc1_h_loop_filter8_bestcase_ssse3: 37.2 ( 0.16x) vc1dsp.vc1_h_loop_filter8_bestcase_sse4: 37.6 ( 0.16x) vc1dsp.vc1_h_loop_filter8_worstcase_c: 87.5 vc1dsp.vc1_h_loop_filter8_worstcase_sse2: 38.4 ( 2.28x) vc1dsp.vc1_h_loop_filter8_worstcase_ssse3: 37.6 ( 2.32x) vc1dsp.vc1_h_loop_filter8_worstcase_sse4: 37.6 ( 2.32x) vc1dsp.vc1_h_loop_filter16_bestcase_c: 11.7 vc1dsp.vc1_h_loop_filter16_bestcase_sse2: 42.0 ( 0.28x) vc1dsp.vc1_h_loop_filter16_bestcase_ssse3: 41.4 ( 0.28x) vc1dsp.vc1_h_loop_filter16_bestcase_sse4: 44.8 ( 0.26x) vc1dsp.vc1_h_loop_filter16_worstcase_c: 167.2 vc1dsp.vc1_h_loop_filter16_worstcase_sse2: 41.8 ( 4.00x) vc1dsp.vc1_h_loop_filter16_worstcase_ssse3: 41.7 ( 3.92x) vc1dsp.vc1_h_loop_filter16_worstcase_sse4: 45.3 ( 3.69x) vc1dsp.vc1_v_loop_filter4_bestcase_c: 3.6 vc1dsp.vc1_v_loop_filter4_bestcase_ssse3: 17.1 ( 0.21x) vc1dsp.vc1_v_loop_filter4_worstcase_c: 49.3 vc1dsp.vc1_v_loop_filter4_worstcase_ssse3: 17.0 ( 2.89x) vc1dsp.vc1_v_loop_filter8_bestcase_c: 6.3 vc1dsp.vc1_v_loop_filter8_bestcase_sse2: 17.7 ( 0.36x) vc1dsp.vc1_v_loop_filter8_bestcase_ssse3: 16.8 ( 0.38x) vc1dsp.vc1_v_loop_filter8_worstcase_c: 85.8 vc1dsp.vc1_v_loop_filter8_worstcase_sse2: 17.7 ( 4.83x) vc1dsp.vc1_v_loop_filter8_worstcase_ssse3: 16.7 ( 5.12x) vc1dsp.vc1_v_loop_filter16_bestcase_c: 12.7 vc1dsp.vc1_v_loop_filter16_bestcase_sse2: 26.4 ( 0.48x) vc1dsp.vc1_v_loop_filter16_bestcase_ssse3: 24.0 ( 0.53x) vc1dsp.vc1_v_loop_filter16_worstcase_c: 170.1 vc1dsp.vc1_v_loop_filter16_worstcase_sse2: 25.7 ( 6.63x) vc1dsp.vc1_v_loop_filter16_worstcase_ssse3: 25.2 ( 6.75x) New benchmarks: vc1dsp.vc1_h_loop_filter4_bestcase_c: 3.0 vc1dsp.vc1_h_loop_filter4_bestcase_ssse3: 32.4 ( 0.09x) vc1dsp.vc1_h_loop_filter4_worstcase_c: 42.3 vc1dsp.vc1_h_loop_filter4_worstcase_ssse3: 32.7 ( 1.29x) vc1dsp.vc1_h_loop_filter8_bestcase_c: 6.1 vc1dsp.vc1_h_loop_filter8_bestcase_sse2: 37.1 ( 0.17x) vc1dsp.vc1_h_loop_filter8_bestcase_ssse3: 36.4 ( 0.17x) vc1dsp.vc1_h_loop_filter8_bestcase_sse4: 36.6 ( 0.17x) vc1dsp.vc1_h_loop_filter8_worstcase_c: 87.2 vc1dsp.vc1_h_loop_filter8_worstcase_sse2: 36.9 ( 2.36x) vc1dsp.vc1_h_loop_filter8_worstcase_ssse3: 35.8 ( 2.35x) vc1dsp.vc1_h_loop_filter8_worstcase_sse4: 36.7 ( 2.38x) vc1dsp.vc1_h_loop_filter16_bestcase_c: 12.0 vc1dsp.vc1_h_loop_filter16_bestcase_sse2: 40.0 ( 0.30x) vc1dsp.vc1_h_loop_filter16_bestcase_ssse3: 39.8 ( 0.30x) vc1dsp.vc1_h_loop_filter16_bestcase_sse4: 44.4 ( 0.27x) vc1dsp.vc1_h_loop_filter16_worstcase_c: 166.4 vc1dsp.vc1_h_loop_filter16_worstcase_sse2: 39.9 ( 4.17x) vc1dsp.vc1_h_loop_filter16_worstcase_ssse3: 39.7 ( 4.19x) vc1dsp.vc1_h_loop_filter16_worstcase_sse4: 43.8 ( 3.80x) vc1dsp.vc1_v_loop_filter4_bestcase_c: 3.6 vc1dsp.vc1_v_loop_filter4_bestcase_ssse3: 16.3 ( 0.22x) vc1dsp.vc1_v_loop_filter4_worstcase_c: 49.3 vc1dsp.vc1_v_loop_filter4_worstcase_ssse3: 16.2 ( 3.04x) vc1dsp.vc1_v_loop_filter8_bestcase_c: 6.4 vc1dsp.vc1_v_loop_filter8_bestcase_sse2: 16.3 ( 0.39x) vc1dsp.vc1_v_loop_filter8_bestcase_ssse3: 15.8 ( 0.40x) vc1dsp.vc1_v_loop_filter8_worstcase_c: 85.7 vc1dsp.vc1_v_loop_filter8_worstcase_sse2: 16.3 ( 5.24x) vc1dsp.vc1_v_loop_filter8_worstcase_ssse3: 15.8 ( 5.42x) vc1dsp.vc1_v_loop_filter16_bestcase_c: 12.7 vc1dsp.vc1_v_loop_filter16_bestcase_sse2: 24.7 ( 0.52x) vc1dsp.vc1_v_loop_filter16_bestcase_ssse3: 22.7 ( 0.56x) vc1dsp.vc1_v_loop_filter16_worstcase_c: 169.4 vc1dsp.vc1_v_loop_filter16_worstcase_sse2: 24.1 ( 7.03x) vc1dsp.vc1_v_loop_filter16_worstcase_ssse3: 24.6 ( 6.88x) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vc1dsp_loopfilter.asm