Browse Source

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>
tags/n2.3
Christophe Gisquet Michael Niedermayer 11 years ago
parent
commit
d136fe6fd7
3 changed files with 10 additions and 4 deletions
  1. +6
    -0
      libavcodec/x86/huffyuvdsp.asm
  2. +3
    -3
      libavcodec/x86/huffyuvdsp_init.c
  3. +1
    -1
      libavcodec/x86/huffyuvdsp_mmx.c

+ 6
- 0
libavcodec/x86/huffyuvdsp.asm View File

@@ -110,8 +110,10 @@ cglobal add_hfyu_median_pred, 6,6,8, dst, top, diff, w, left, left_top
RET RET
%endmacro %endmacro


%if ARCH_X86_32
INIT_MMX mmxext INIT_MMX mmxext
HFYU_MEDIAN HFYU_MEDIAN
%endif
INIT_XMM sse2 INIT_XMM sse2
HFYU_MEDIAN HFYU_MEDIAN


@@ -219,8 +221,10 @@ cglobal add_bytes, 3,4,2, dst, src, w, size
REP_RET REP_RET
%endmacro %endmacro


%if ARCH_X86_32
INIT_MMX mmx INIT_MMX mmx
ADD_BYTES ADD_BYTES
%endif
INIT_XMM sse2 INIT_XMM sse2
ADD_BYTES ADD_BYTES


@@ -257,7 +261,9 @@ cglobal add_hfyu_left_pred_bgr32, 4,4,3, dst, src, w, left
REP_RET REP_RET
%endmacro %endmacro


%if ARCH_X86_32
INIT_MMX mmx INIT_MMX mmx
LEFT_BGR32 LEFT_BGR32
%endif
INIT_XMM sse2 INIT_XMM sse2
LEFT_BGR32 LEFT_BGR32

+ 3
- 3
libavcodec/x86/huffyuvdsp_init.c View File

@@ -51,16 +51,16 @@ av_cold void ff_huffyuvdsp_init_x86(HuffYUVDSPContext *c)
int cpu_flags = av_get_cpu_flags(); int cpu_flags = av_get_cpu_flags();


#if HAVE_7REGS && HAVE_INLINE_ASM #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; c->add_hfyu_median_pred = ff_add_hfyu_median_pred_cmov;
#endif #endif


if (EXTERNAL_MMX(cpu_flags)) {
if (ARCH_X86_32 && EXTERNAL_MMX(cpu_flags)) {
c->add_bytes = ff_add_bytes_mmx; c->add_bytes = ff_add_bytes_mmx;
c->add_hfyu_left_pred_bgr32 = ff_add_hfyu_left_pred_bgr32_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 */ /* slower than cmov version on AMD */
if (!(cpu_flags & AV_CPU_FLAG_3DNOW)) if (!(cpu_flags & AV_CPU_FLAG_3DNOW))
c->add_hfyu_median_pred = ff_add_hfyu_median_pred_mmxext; c->add_hfyu_median_pred = ff_add_hfyu_median_pred_mmxext;


+ 1
- 1
libavcodec/x86/huffyuvdsp_mmx.c View File

@@ -22,7 +22,7 @@
#include "libavutil/x86/asm.h" #include "libavutil/x86/asm.h"
#include "huffyuvdsp.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, void ff_add_hfyu_median_pred_cmov(uint8_t *dst, const uint8_t *top,
const uint8_t *diff, int w, const uint8_t *diff, int w,
int *left, int *left_top) int *left, int *left_top)


Loading…
Cancel
Save