diff options
author | Christophe Gisquet <christophe.gisquet@gmail.com> | 2014-05-30 11:57:56 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-05-30 21:39:06 +0200 |
commit | d136fe6fd7be03b3edc87bb19c81a09a31b1a733 (patch) | |
tree | 22646585ab1e1976d01a886feea533cff1711aa8 | |
parent | e0d074556055e8d2ed706be100e26d7bb6864d6e (diff) | |
download | ffmpeg-d136fe6fd7be03b3edc87bb19c81a09a31b1a733.tar.gz |
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@gmx.at>
-rw-r--r-- | libavcodec/x86/huffyuvdsp.asm | 6 | ||||
-rw-r--r-- | libavcodec/x86/huffyuvdsp_init.c | 6 | ||||
-rw-r--r-- | 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 73c476495a..d13c08a7de 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 7ea36c71b9..d3d7a26a4d 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 ee6ec91287..bd7b840ecc 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) |