aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-01-19 13:18:10 +0100
committerMichael Niedermayer <michaelni@gmx.at>2013-01-19 13:20:25 +0100
commited8ff70d9ee02b9940803aee69462da548df663b (patch)
tree495891dd23a7f45f12682670719fe00a2c26fef0
parentb45e0c2573fa5ce8c4821605f35ac4cad946e9d3 (diff)
parent822b0728f0e3c3ba60b20bd4fd971d5c4a3fe3e9 (diff)
downloadffmpeg-ed8ff70d9ee02b9940803aee69462da548df663b.tar.gz
Merge remote-tracking branch 'qatar/master'
* qatar/master: x86: dsputil: Drop some unused macro definitions x86: Add a Yasm-based emms() replacement Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/x86/dsputil_mmx.c4
-rw-r--r--libavutil/internal.h3
-rw-r--r--libavutil/x86/Makefile1
-rw-r--r--libavutil/x86/emms.asm30
-rw-r--r--libavutil/x86/emms.h24
5 files changed, 58 insertions, 4 deletions
diff --git a/libavcodec/x86/dsputil_mmx.c b/libavcodec/x86/dsputil_mmx.c
index 73001d8677..80a6a30849 100644
--- a/libavcodec/x86/dsputil_mmx.c
+++ b/libavcodec/x86/dsputil_mmx.c
@@ -197,14 +197,12 @@ DECLARE_ALIGNED(16, const double, ff_pd_2)[2] = { 2.0, 2.0 };
#define DEF(x) x ## _3dnow
#define PAVGB "pavgusb"
-#define OP_AVG PAVGB
#define SKIP_FOR_3DNOW
#include "dsputil_avg_template.c"
#undef DEF
#undef PAVGB
-#undef OP_AVG
#undef SKIP_FOR_3DNOW
/***********************************/
@@ -214,13 +212,11 @@ DECLARE_ALIGNED(16, const double, ff_pd_2)[2] = { 2.0, 2.0 };
/* Introduced only in MMXEXT set */
#define PAVGB "pavgb"
-#define OP_AVG PAVGB
#include "dsputil_avg_template.c"
#undef DEF
#undef PAVGB
-#undef OP_AVG
#define put_no_rnd_pixels16_mmx put_pixels16_mmx
#define put_no_rnd_pixels8_mmx put_pixels8_mmx
diff --git a/libavutil/internal.h b/libavutil/internal.h
index 4400c5c439..487d0983b1 100644
--- a/libavutil/internal.h
+++ b/libavutil/internal.h
@@ -142,6 +142,9 @@ static av_always_inline void emms_c(void)
#elif HAVE_MMX && HAVE_MM_EMPTY
# include <mmintrin.h>
# define emms_c _mm_empty
+#elif HAVE_MMX && HAVE_YASM
+# include "libavutil/x86/emms.h"
+# define emms_c avpriv_emms_yasm
#else
# define emms_c()
#endif /* HAVE_MMX_INLINE */
diff --git a/libavutil/x86/Makefile b/libavutil/x86/Makefile
index 3dd696c26a..ae07470b17 100644
--- a/libavutil/x86/Makefile
+++ b/libavutil/x86/Makefile
@@ -2,4 +2,5 @@ OBJS += x86/cpu.o \
x86/float_dsp_init.o \
YASM-OBJS += x86/cpuid.o \
+ x86/emms.o \
x86/float_dsp.o \
diff --git a/libavutil/x86/emms.asm b/libavutil/x86/emms.asm
new file mode 100644
index 0000000000..0aad34af3f
--- /dev/null
+++ b/libavutil/x86/emms.asm
@@ -0,0 +1,30 @@
+;*****************************************************************************
+;* Copyright (C) 2013 Martin Storsjo
+;*
+;* This file is part of FFmpeg.
+;*
+;* FFmpeg is free software; you can redistribute it and/or
+;* modify it under the terms of the GNU Lesser General Public
+;* License as published by the Free Software Foundation; either
+;* version 2.1 of the License, or (at your option) any later version.
+;*
+;* FFmpeg is distributed in the hope that it will be useful,
+;* but WITHOUT ANY WARRANTY; without even the implied warranty of
+;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;* Lesser General Public License for more details.
+;*
+;* You should have received a copy of the GNU Lesser General Public
+;* License along with FFmpeg; if not, write to the Free Software
+;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;******************************************************************************
+
+%include "x86util.asm"
+
+SECTION .text
+
+;-----------------------------------------------------------------------------
+; void avpriv_emms_yasm(void)
+;-----------------------------------------------------------------------------
+cvisible emms_yasm, 0, 0
+ emms
+ RET
diff --git a/libavutil/x86/emms.h b/libavutil/x86/emms.h
new file mode 100644
index 0000000000..35f0dfbfc1
--- /dev/null
+++ b/libavutil/x86/emms.h
@@ -0,0 +1,24 @@
+/*
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef AVUTIL_X86_EMMS_H
+#define AVUTIL_X86_EMMS_H
+
+void avpriv_emms_yasm(void);
+
+#endif /* AVUTIL_X86_EMMS_H */