1
mirror of https://git.videolan.org/git/ffmpeg.git synced 2024-08-22 01:05:05 +02:00
ffmpeg/libavcodec/x86
Christophe Gisquet e5c9de2ab7 rv40: x86 SIMD for biweight
Provide MMX, SSE2 and SSSE3 versions, with a fast-path when the weights are
multiples of 512 (which is often the case when the values round up nicely).

*_TIMER report for the 16x16 and 8x8 cases:
C:
9015 decicycles in 16, 524257 runs, 31 skips
2656 decicycles in 8, 524271 runs, 17 skips
MMX:
4156 decicycles in 16, 262090 runs, 54 skips
1206 decicycles in 8, 262131 runs, 13 skips
MMX on fast-path:
2760 decicycles in 16, 524222 runs, 66 skips
995 decicycles in 8, 524252 runs, 36 skips
SSE2:
2163 decicycles in 16, 262131 runs, 13 skips
832 decicycles in 8, 262137 runs, 7 skips
SSE2 with fast path:
1783 decicycles in 16, 524276 runs, 12 skips
711 decicycles in 8, 524283 runs, 5 skips
SSSE3:
2117 decicycles in 16, 262136 runs, 8 skips
814 decicycles in 8, 262143 runs, 1 skips
SSSE3 with fast path:
1315 decicycles in 16, 524285 runs, 3 skips
578 decicycles in 8, 524286 runs, 2 skips

This means around a 4% speedup for some sequences.

Signed-off-by: Diego Biurrun <diego@biurrun.de>
2012-01-30 23:58:25 +01:00
..
ac3dsp_mmx.c x86: Move some variable declarations below the appropriat #ifdef. 2011-10-20 16:19:27 +02:00
ac3dsp.asm config.asm: change %ifdef directives to %if directives. 2012-01-27 10:19:57 +08:00
cabac.h x86: Require 7 registers for the cabac asm 2011-12-12 15:36:20 +02:00
cavsdsp_mmx.c
dct32_sse.asm config.asm: change %ifdef directives to %if directives. 2012-01-27 10:19:57 +08:00
deinterlace.asm Fix NASM include directive 2011-08-15 11:24:35 -07:00
dnxhd_mmx.c dnxhd: 10-bit support 2011-07-21 18:44:40 +01:00
dsputil_mmx_avg_template.c
dsputil_mmx_qns_template.c
dsputil_mmx_rnd_template.c
dsputil_mmx.c x86 dsputil: provide SSE2/SSSE3 versions of bswap_buf 2012-01-30 10:19:55 +01:00
dsputil_mmx.h
dsputil_yasm.asm x86 dsputil: provide SSE2/SSSE3 versions of bswap_buf 2012-01-30 10:19:55 +01:00
dsputilenc_mmx.c
dsputilenc_yasm.asm config.asm: change %ifdef directives to %if directives. 2012-01-27 10:19:57 +08:00
fdct_mmx.c
fft_3dn2.c fft: avoid a signed overflow 2011-09-23 17:02:58 -07:00
fft_3dn.c
fft_mmx.asm config.asm: change %ifdef directives to %if directives. 2012-01-27 10:19:57 +08:00
fft_sse.c fft: avoid a signed overflow 2011-09-23 17:02:58 -07:00
fft.c dct32: Add SSE2 ASM optimizations 2011-08-02 10:17:29 -07:00
fft.h dct32: Add SSE2 ASM optimizations 2011-08-02 10:17:29 -07:00
fmtconvert_mmx.c x86: Place mm_flags variable declaration below the appropriate #ifdef. 2012-01-30 23:58:23 +01:00
fmtconvert.asm config.asm: change %ifdef directives to %if directives. 2012-01-27 10:19:57 +08:00
h264_chromamc_10bit.asm config.asm: change %ifdef directives to %if directives. 2012-01-27 10:19:57 +08:00
h264_chromamc.asm config.asm: change %ifdef directives to %if directives. 2012-01-27 10:19:57 +08:00
h264_deblock_10bit.asm config.asm: change %ifdef directives to %if directives. 2012-01-27 10:19:57 +08:00
h264_deblock.asm config.asm: change %ifdef directives to %if directives. 2012-01-27 10:19:57 +08:00
h264_i386.h x86: Fix constraints for decode_significance*_x86 2011-12-27 09:05:14 +02:00
h264_idct_10bit.asm config.asm: change %ifdef directives to %if directives. 2012-01-27 10:19:57 +08:00
h264_idct.asm config.asm: change %ifdef directives to %if directives. 2012-01-27 10:19:57 +08:00
h264_intrapred_10bit.asm config.asm: change %ifdef directives to %if directives. 2012-01-27 10:19:57 +08:00
h264_intrapred_init.c h264: 4:2:2 intra decoding support 2011-10-21 01:00:41 -07:00
h264_intrapred.asm config.asm: change %ifdef directives to %if directives. 2012-01-27 10:19:57 +08:00
h264_qpel_10bit.asm config.asm: change %ifdef directives to %if directives. 2012-01-27 10:19:57 +08:00
h264_qpel_mmx.c x86: fix build with gcc 4.7 2011-07-26 22:17:43 +01:00
h264_weight_10bit.asm config.asm: change %ifdef directives to %if directives. 2012-01-27 10:19:57 +08:00
h264_weight.asm config.asm: change %ifdef directives to %if directives. 2012-01-27 10:19:57 +08:00
h264dsp_mmx.c H264: change weight/biweight functions to take a height argument. 2011-10-21 01:00:45 -07:00
idct_mmx_xvid.c
idct_mmx.c Remove redundant filename self-references inside files. 2011-11-08 17:52:56 +01:00
idct_sse2_xvid.c
idct_xvid.h
imdct36_sse.asm imdct36: mark SSE functions as using all 16 XMM registers. 2012-01-29 08:14:05 -08:00
lpc_mmx.c
Makefile rv40: x86 SIMD for biweight 2012-01-30 23:58:25 +01:00
mathops.h
mlpdsp.c
motion_est_mmx.c
mpegaudiodec_mmx.c mpegaudiodec: optimized iMDCT transform 2012-01-08 17:40:55 -08:00
mpegvideo_mmx_template.c
mpegvideo_mmx.c
pngdsp-init.c png: add SSE2 version for add_bytes_l2. 2012-01-29 18:52:17 -08:00
pngdsp.asm png: add support for bpp>4 to paeth x86 SIMD code. 2012-01-29 21:22:50 -08:00
proresdsp-init.c x86: Fix linking of ProRes DSP ASM with YASM disabled. 2011-10-20 16:19:13 +02:00
proresdsp.asm config.asm: change %ifdef directives to %if directives. 2012-01-27 10:19:57 +08:00
rv34dsp_init.c rv34: 1-pass inter MB reconstruction 2012-01-16 19:26:41 +01:00
rv34dsp.asm rv34: 1-pass inter MB reconstruction 2012-01-16 19:26:41 +01:00
rv40dsp_init.c rv40: x86 SIMD for biweight 2012-01-30 23:58:25 +01:00
rv40dsp.asm rv40: x86 SIMD for biweight 2012-01-30 23:58:25 +01:00
simple_idct_mmx.c
snowdsp_mmx.c
vc1dsp_mmx.c
vc1dsp_yasm.asm Fix a bunch of common typos. 2011-12-11 00:32:25 +01:00
vp3dsp.asm config.asm: change %ifdef directives to %if directives. 2012-01-27 10:19:57 +08:00
vp8dsp-init.c x86: Move some variable declarations below the appropriat #ifdef. 2011-10-20 16:19:27 +02:00
vp8dsp.asm Fix NASM include directive 2011-08-15 11:24:35 -07:00
vp56_arith.h
vp56dsp_init.c
vp56dsp.asm config.asm: change %ifdef directives to %if directives. 2012-01-27 10:19:57 +08:00