diff options
author | Diego Biurrun <diego@biurrun.de> | 2013-04-27 22:01:07 +0200 |
---|---|---|
committer | Diego Biurrun <diego@biurrun.de> | 2013-05-02 11:45:37 +0200 |
commit | 9c112a6158928e8d69443adeb9a37e258bf59e55 (patch) | |
tree | be2e8e1dc10d2de6455b4ab2627f51c1cbbdbf3e /libavcodec/x86/fpel_mmx.c | |
parent | 9b3a04d30691e85b77e63f75f5f26a93c3a000cd (diff) | |
download | ffmpeg-9c112a6158928e8d69443adeb9a37e258bf59e55.tar.gz |
x86: dsputil: Move avg_pixels8_mmx() out of rnd_template.c
The function is only instantiated once, so there is no point
in keeping it in a template file.
Diffstat (limited to 'libavcodec/x86/fpel_mmx.c')
-rw-r--r-- | libavcodec/x86/fpel_mmx.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/libavcodec/x86/fpel_mmx.c b/libavcodec/x86/fpel_mmx.c index bb8b788024..c42791426e 100644 --- a/libavcodec/x86/fpel_mmx.c +++ b/libavcodec/x86/fpel_mmx.c @@ -29,6 +29,27 @@ #if HAVE_MMX_INLINE +// in case more speed is needed - unroling would certainly help +void ff_avg_pixels8_mmx(uint8_t *block, const uint8_t *pixels, + ptrdiff_t line_size, int h) +{ + MOVQ_BFE(mm6); + JUMPALIGN(); + do { + __asm__ volatile( + "movq %0, %%mm0 \n\t" + "movq %1, %%mm1 \n\t" + PAVGB_MMX(%%mm0, %%mm1, %%mm2, %%mm6) + "movq %%mm2, %0 \n\t" + :"+m"(*block) + :"m"(*pixels) + :"memory"); + pixels += line_size; + block += line_size; + } + while (--h); +} + void ff_put_pixels8_mmx(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h) { |