summaryrefslogtreecommitdiff
path: root/libavcodec/x86/fpel_mmx.c
diff options
context:
space:
mode:
authorDiego Biurrun <diego@biurrun.de>2013-04-27 22:01:07 +0200
committerDiego Biurrun <diego@biurrun.de>2013-05-02 11:45:37 +0200
commit9c112a6158928e8d69443adeb9a37e258bf59e55 (patch)
treebe2e8e1dc10d2de6455b4ab2627f51c1cbbdbf3e /libavcodec/x86/fpel_mmx.c
parent9b3a04d30691e85b77e63f75f5f26a93c3a000cd (diff)
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.c21
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)
{