rv40: x86 SIMD for biweight
authorChristophe Gisquet <christophe.gisquet@gmail.com>
Wed, 11 Jan 2012 23:11:15 +0000 (00:11 +0100)
committerDiego Biurrun <diego@biurrun.de>
Mon, 30 Jan 2012 22:58:25 +0000 (23:58 +0100)
commite5c9de2ab78cf18636eac2fa8e059e58a71e512b
tree0e50bde7419002f8b9d16343a5a6947fdf2b8f45
parent91bafb52ae31d85314e77ba84dc1e10348cd114e
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>
libavcodec/x86/Makefile
libavcodec/x86/rv40dsp.asm [new file with mode: 0644]
libavcodec/x86/rv40dsp_init.c