Change #276712
| 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 | 8f05c446a1e3f16785b3768623050a23c7d7bfb1 |
Comments
avcodec/x86/vc1dsp_loopfilter: Use psignw when available
The VC1 loop filter uses something equivalent to
if (a0_sign ^ clip_sign) {
if (clip_sign) d = -d;
} else d = 0;
which can be mapped to psignw.
Old 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)
New benchmarks:
vc1dsp.vc1_h_loop_filter4_bestcase_c: 3.0
vc1dsp.vc1_h_loop_filter4_bestcase_ssse3: 32.0 ( 0.09x)
vc1dsp.vc1_h_loop_filter4_worstcase_c: 43.2
vc1dsp.vc1_h_loop_filter4_worstcase_ssse3: 31.8 ( 1.36x)
vc1dsp.vc1_h_loop_filter8_bestcase_c: 6.0
vc1dsp.vc1_h_loop_filter8_bestcase_sse2: 36.9 ( 0.16x)
vc1dsp.vc1_h_loop_filter8_bestcase_ssse3: 35.5 ( 0.17x)
vc1dsp.vc1_h_loop_filter8_bestcase_sse4: 36.2 ( 0.17x)
vc1dsp.vc1_h_loop_filter8_worstcase_c: 87.3
vc1dsp.vc1_h_loop_filter8_worstcase_sse2: 37.6 ( 2.33x)
vc1dsp.vc1_h_loop_filter8_worstcase_ssse3: 35.3 ( 2.40x)
vc1dsp.vc1_h_loop_filter8_worstcase_sse4: 36.1 ( 2.42x)
vc1dsp.vc1_h_loop_filter16_bestcase_c: 11.8
vc1dsp.vc1_h_loop_filter16_bestcase_sse2: 40.1 ( 0.29x)
vc1dsp.vc1_h_loop_filter16_bestcase_ssse3: 39.2 ( 0.30x)
vc1dsp.vc1_h_loop_filter16_bestcase_sse4: 42.9 ( 0.28x)
vc1dsp.vc1_h_loop_filter16_worstcase_c: 166.5
vc1dsp.vc1_h_loop_filter16_worstcase_sse2: 39.8 ( 4.18x)
vc1dsp.vc1_h_loop_filter16_worstcase_ssse3: 39.1 ( 4.26x)
vc1dsp.vc1_h_loop_filter16_worstcase_sse4: 42.9 ( 3.88x)
vc1dsp.vc1_v_loop_filter4_bestcase_c: 3.6
vc1dsp.vc1_v_loop_filter4_bestcase_ssse3: 15.7 ( 0.22x)
vc1dsp.vc1_v_loop_filter4_worstcase_c: 49.1
vc1dsp.vc1_v_loop_filter4_worstcase_ssse3: 15.8 ( 3.10x)
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.3 ( 0.42x)
vc1dsp.vc1_v_loop_filter8_worstcase_c: 85.7
vc1dsp.vc1_v_loop_filter8_worstcase_sse2: 16.3 ( 5.26x)
vc1dsp.vc1_v_loop_filter8_worstcase_ssse3: 15.2 ( 5.62x)
vc1dsp.vc1_v_loop_filter16_bestcase_c: 13.6
vc1dsp.vc1_v_loop_filter16_bestcase_sse2: 24.8 ( 0.55x)
vc1dsp.vc1_v_loop_filter16_bestcase_ssse3: 21.3 ( 0.64x)
vc1dsp.vc1_v_loop_filter16_worstcase_c: 170.0
vc1dsp.vc1_v_loop_filter16_worstcase_sse2: 23.9 ( 7.11x)
vc1dsp.vc1_v_loop_filter16_worstcase_ssse3: 23.3 ( 7.28x)
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavcodec/x86/vc1dsp_loopfilter.asm