[FFmpeg-cvslog] x86: dsputil: Move avg_pixels8_mmx() out of rnd_template.c

Diego Biurrun git at videolan.org
Fri May 3 10:48:19 CEST 2013


ffmpeg | branch: master | Diego Biurrun <diego at biurrun.de> | Sat Apr 27 22:01:07 2013 +0200| [9c112a6158928e8d69443adeb9a37e258bf59e55] | committer: Diego Biurrun

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.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9c112a6158928e8d69443adeb9a37e258bf59e55
---

 libavcodec/x86/dsputil_mmx.c  |    2 +-
 libavcodec/x86/dsputil_mmx.h  |    2 ++
 libavcodec/x86/fpel_mmx.c     |   21 +++++++++++++++++++++
 libavcodec/x86/hpeldsp_init.c |    1 +
 libavcodec/x86/rnd_template.c |   22 ----------------------
 5 files changed, 25 insertions(+), 23 deletions(-)

diff --git a/libavcodec/x86/dsputil_mmx.c b/libavcodec/x86/dsputil_mmx.c
index 097cab8..0a58107 100644
--- a/libavcodec/x86/dsputil_mmx.c
+++ b/libavcodec/x86/dsputil_mmx.c
@@ -1018,7 +1018,7 @@ void ff_put_cavs_qpel8_mc00_mmx(uint8_t *dst, uint8_t *src, ptrdiff_t stride)
 
 void ff_avg_cavs_qpel8_mc00_mmx(uint8_t *dst, uint8_t *src, ptrdiff_t stride)
 {
-    avg_pixels8_mmx(dst, src, stride, 8);
+    ff_avg_pixels8_mmx(dst, src, stride, 8);
 }
 
 void ff_put_cavs_qpel16_mc00_mmx(uint8_t *dst, uint8_t *src, ptrdiff_t stride)
diff --git a/libavcodec/x86/dsputil_mmx.h b/libavcodec/x86/dsputil_mmx.h
index df0c85a..eb23377 100644
--- a/libavcodec/x86/dsputil_mmx.h
+++ b/libavcodec/x86/dsputil_mmx.h
@@ -156,6 +156,8 @@ void ff_put_pixels_clamped_mmx(const int16_t *block, uint8_t *pixels, int line_s
 void ff_put_signed_pixels_clamped_mmx(const int16_t *block, uint8_t *pixels, int line_size);
 
 
+void ff_avg_pixels8_mmx(uint8_t *block, const uint8_t *pixels,
+                        ptrdiff_t line_size, int h);
 void ff_put_pixels8_mmx(uint8_t *block, const uint8_t *pixels,
                         ptrdiff_t line_size, int h);
 void ff_put_pixels16_mmx(uint8_t *block, const uint8_t *pixels,
diff --git a/libavcodec/x86/fpel_mmx.c b/libavcodec/x86/fpel_mmx.c
index bb8b788..c427914 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)
 {
diff --git a/libavcodec/x86/hpeldsp_init.c b/libavcodec/x86/hpeldsp_init.c
index b0a87c8..bc2a08f 100644
--- a/libavcodec/x86/hpeldsp_init.c
+++ b/libavcodec/x86/hpeldsp_init.c
@@ -74,6 +74,7 @@ void ff_avg_pixels8_xy2_mmxext(uint8_t *block, const uint8_t *pixels,
 void ff_avg_pixels8_xy2_3dnow(uint8_t *block, const uint8_t *pixels,
                               ptrdiff_t line_size, int h);
 
+#define avg_pixels8_mmx         ff_avg_pixels8_mmx
 #define put_pixels8_mmx         ff_put_pixels8_mmx
 #define put_pixels16_mmx        ff_put_pixels16_mmx
 #define put_no_rnd_pixels8_mmx  ff_put_pixels8_mmx
diff --git a/libavcodec/x86/rnd_template.c b/libavcodec/x86/rnd_template.c
index 2ff77d7..08e8593 100644
--- a/libavcodec/x86/rnd_template.c
+++ b/libavcodec/x86/rnd_template.c
@@ -92,28 +92,6 @@ static void DEF(put, pixels8_xy2)(uint8_t *block, const uint8_t *pixels, ptrdiff
 }
 
 // avg_pixels
-#ifndef NO_RND
-// in case more speed is needed - unroling would certainly help
-static void DEF(avg, pixels8)(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"
-             OP_AVG(%%mm0, %%mm1, %%mm2, %%mm6)
-             "movq  %%mm2, %0           \n\t"
-             :"+m"(*block)
-             :"m"(*pixels)
-             :"memory");
-        pixels += line_size;
-        block += line_size;
-    }
-    while (--h);
-}
-#endif /* NO_RND */
-
 static void DEF(avg, pixels16)(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
 {
     MOVQ_BFE(mm6);



More information about the ffmpeg-cvslog mailing list