---
libavcodec/x86/dsputil_mmx.c | 3 +++
libavcodec/x86/dsputil_yasm.asm | 13 ++++++++++---
2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/libavcodec/x86/dsputil_mmx.c b/libavcodec/x86/dsputil_mmx.c
index fca09b4..46af122 100644
--- a/libavcodec/x86/dsputil_mmx.c
+++ b/libavcodec/x86/dsputil_mmx.c
@@ -2502,6 +2502,8 @@ int ff_add_hfyu_left_prediction_sse4(uint8_t *dst, const
uint8_t *src,
float ff_scalarproduct_float_sse(const float *v1, const float *v2, int order);
+void ff_vector_fmul_3dnow(float *dst, const float *src0, const float *src1,
+ int len);
void ff_vector_fmul_sse(float *dst, const float *src0, const float *src1,
int len);
void ff_vector_fmul_avx(float *dst, const float *src0, const float *src1,
@@ -2804,6 +2806,7 @@ static void dsputil_init_3dnow(DSPContext *c,
AVCodecContext *avctx,
#endif
c->vorbis_inverse_coupling = vorbis_inverse_coupling_3dnow;
+ c->vector_fmul = ff_vector_fmul_3dnow;
#if HAVE_7REGS
c->add_hfyu_median_prediction = add_hfyu_median_prediction_cmov;
diff --git a/libavcodec/x86/dsputil_yasm.asm b/libavcodec/x86/dsputil_yasm.asm
index 708ee67..078bd91 100644
--- a/libavcodec/x86/dsputil_yasm.asm
+++ b/libavcodec/x86/dsputil_yasm.asm
@@ -1139,14 +1139,17 @@ ALIGN 16
.loop
mova m0, [src0q + lenq]
mova m1, [src0q + lenq + mmsize]
- mulps m0, m0, [src1q + lenq]
- mulps m1, m1, [src1q + lenq + mmsize]
+ MULPS m0, m0, [src1q + lenq]
+ MULPS m1, m1, [src1q + lenq + mmsize]
mova [dstq + lenq], m0
mova [dstq + lenq + mmsize], m1
sub lenq, 2*mmsize
jge .loop
-%if mmsize == 32
+%if mmsize == 8
+ femms
+ RET
+%elif mmsize == 32
vzeroupper
RET
%else
@@ -1154,7 +1157,11 @@ ALIGN 16
%endif
%endmacro
+INIT_MMX 3dnow
+%define MULPS pfmul
+VECTOR_FMUL
INIT_XMM sse
+%define MULPS mulps
VECTOR_FMUL
INIT_YMM avx
VECTOR_FMUL
--
1.7.1
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel