[FFmpeg-cvslog] x86: huffyuvdsp: fewer functions for x86_64

Christophe Gisquet git at videolan.org
Fri May 30 21:48:37 CEST 2014


ffmpeg | branch: master | Christophe Gisquet <christophe.gisquet at gmail.com> | Fri May 30 11:57:56 2014 +0200| [d136fe6fd7be03b3edc87bb19c81a09a31b1a733] | committer: Michael Niedermayer

x86: huffyuvdsp: fewer functions for x86_64

When there are 2 functions that are <= SSE2, only one is needed for x86_64.

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

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

 libavcodec/x86/huffyuvdsp.asm    |    6 ++++++
 libavcodec/x86/huffyuvdsp_init.c |    6 +++---
 libavcodec/x86/huffyuvdsp_mmx.c  |    2 +-
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/libavcodec/x86/huffyuvdsp.asm b/libavcodec/x86/huffyuvdsp.asm
index 73c4764..d13c08a 100644
--- a/libavcodec/x86/huffyuvdsp.asm
+++ b/libavcodec/x86/huffyuvdsp.asm
@@ -110,8 +110,10 @@ cglobal add_hfyu_median_pred, 6,6,8, dst, top, diff, w, left, left_top
     RET
 %endmacro
 
+%if ARCH_X86_32
 INIT_MMX mmxext
 HFYU_MEDIAN
+%endif
 INIT_XMM sse2
 HFYU_MEDIAN
 
@@ -219,8 +221,10 @@ cglobal add_bytes, 3,4,2, dst, src, w, size
     REP_RET
 %endmacro
 
+%if ARCH_X86_32
 INIT_MMX mmx
 ADD_BYTES
+%endif
 INIT_XMM sse2
 ADD_BYTES
 
@@ -257,7 +261,9 @@ cglobal add_hfyu_left_pred_bgr32, 4,4,3, dst, src, w, left
     REP_RET
 %endmacro
 
+%if ARCH_X86_32
 INIT_MMX mmx
 LEFT_BGR32
+%endif
 INIT_XMM sse2
 LEFT_BGR32
diff --git a/libavcodec/x86/huffyuvdsp_init.c b/libavcodec/x86/huffyuvdsp_init.c
index 7ea36c7..d3d7a26 100644
--- a/libavcodec/x86/huffyuvdsp_init.c
+++ b/libavcodec/x86/huffyuvdsp_init.c
@@ -51,16 +51,16 @@ av_cold void ff_huffyuvdsp_init_x86(HuffYUVDSPContext *c)
     int cpu_flags = av_get_cpu_flags();
 
 #if HAVE_7REGS && HAVE_INLINE_ASM
-    if (HAVE_MMX && cpu_flags & AV_CPU_FLAG_CMOV)
+    if (ARCH_X86_32 && cpu_flags & AV_CPU_FLAG_CMOV)
         c->add_hfyu_median_pred = ff_add_hfyu_median_pred_cmov;
 #endif
 
-    if (EXTERNAL_MMX(cpu_flags)) {
+    if (ARCH_X86_32 && EXTERNAL_MMX(cpu_flags)) {
         c->add_bytes = ff_add_bytes_mmx;
         c->add_hfyu_left_pred_bgr32 = ff_add_hfyu_left_pred_bgr32_mmx;
     }
 
-    if (EXTERNAL_MMXEXT(cpu_flags)) {
+    if (ARCH_X86_32 && EXTERNAL_MMXEXT(cpu_flags)) {
         /* slower than cmov version on AMD */
         if (!(cpu_flags & AV_CPU_FLAG_3DNOW))
             c->add_hfyu_median_pred = ff_add_hfyu_median_pred_mmxext;
diff --git a/libavcodec/x86/huffyuvdsp_mmx.c b/libavcodec/x86/huffyuvdsp_mmx.c
index ee6ec91..bd7b840 100644
--- a/libavcodec/x86/huffyuvdsp_mmx.c
+++ b/libavcodec/x86/huffyuvdsp_mmx.c
@@ -22,7 +22,7 @@
 #include "libavutil/x86/asm.h"
 #include "huffyuvdsp.h"
 
-#if HAVE_INLINE_ASM && HAVE_7REGS
+#if HAVE_INLINE_ASM && HAVE_7REGS && ARCH_X86_32
 void ff_add_hfyu_median_pred_cmov(uint8_t *dst, const uint8_t *top,
                                   const uint8_t *diff, int w,
                                   int *left, int *left_top)



More information about the ffmpeg-cvslog mailing list