mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2026-06-16 04:32:47 +02:00
19e377b4b9
The only noticable changes in benchmarks are for the x2 horizontal no_rnd case where SSE2 and movhps are beneficial: Old benchmarks: avg_pixels_tab[1][1]_c: 42.2 ( 1.00x) avg_pixels_tab[1][1]_mmxext: 10.8 ( 3.89x) avg_pixels_tab[1][2]_c: 18.0 ( 1.00x) avg_pixels_tab[1][2]_mmxext: 6.1 ( 2.96x) put_no_rnd_pixels_tab[1][1]_c: 29.7 ( 1.00x) put_no_rnd_pixels_tab[1][1]_mmxext: 12.3 ( 2.41x) put_no_rnd_pixels_tab[1][2]_c: 20.4 ( 1.00x) put_no_rnd_pixels_tab[1][2]_mmxext: 12.2 ( 1.67x) put_pixels_tab[1][1]_c: 29.9 ( 1.00x) put_pixels_tab[1][1]_mmxext: 7.6 ( 3.92x) put_pixels_tab[1][2]_c: 16.8 ( 1.00x) put_pixels_tab[1][2]_mmxext: 6.4 ( 2.63x) New benchmarks: avg_pixels_tab[1][1]_c: 42.3 ( 1.00x) avg_pixels_tab[1][1]_sse2: 10.7 ( 3.95x) avg_pixels_tab[1][2]_c: 17.8 ( 1.00x) avg_pixels_tab[1][2]_sse2: 6.3 ( 2.83x) put_no_rnd_pixels_tab[1][1]_c: 29.6 ( 1.00x) put_no_rnd_pixels_tab[1][1]_sse2: 10.5 ( 2.81x) put_no_rnd_pixels_tab[1][2]_c: 20.4 ( 1.00x) put_no_rnd_pixels_tab[1][2]_sse2: 12.3 ( 1.67x) put_pixels_tab[1][1]_c: 30.1 ( 1.00x) put_pixels_tab[1][1]_sse2: 7.6 ( 3.93x) put_pixels_tab[1][2]_c: 16.8 ( 1.00x) put_pixels_tab[1][2]_sse2: 6.4 ( 2.64x) Switching to SSE2 unfortunately increased codesize of the relevant functions by 160B. This makes these functions ABI compatible, i.e. they no longer rely on others calling emms_c to fix the fpu state. It also implies that many mpegvideo decoders (the exceptions are MPEG-4, RV30, RV40 and the VC-1 family) now no longer use any mmx registers at all. So one can remove the emms_c from the MPEG-1/2 decoder. The same is true for VP3. Reviewed-by: James Almer <jamrial@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>