Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Biurrun <diego@biurrun.de>2013-01-22 05:22:29 +0400
committerDiego Biurrun <diego@biurrun.de>2013-02-14 20:37:34 +0400
commitab441e20ffdfa2547f1d6c1dc19994ec05eb7d2f (patch)
treed27bc7db16b8c9ab4cdea2a006ad55093cf18480 /libavutil/x86
parent130cefc9dcedea5babc349251fbeec6f037144ac (diff)
avutil: Move emms code to x86-specific header
Diffstat (limited to 'libavutil/x86')
-rw-r--r--libavutil/x86/emms.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/libavutil/x86/emms.h b/libavutil/x86/emms.h
index 6bb8ca3195..56068e581f 100644
--- a/libavutil/x86/emms.h
+++ b/libavutil/x86/emms.h
@@ -19,6 +19,28 @@
#ifndef AVUTIL_X86_EMMS_H
#define AVUTIL_X86_EMMS_H
+#include "config.h"
+#include "libavutil/attributes.h"
+
void avpriv_emms_yasm(void);
+#if HAVE_MMX_INLINE
+/**
+ * Empty mmx state.
+ * this must be called between any dsp function and float/double code.
+ * for example sin(); dsp->idct_put(); emms_c(); cos()
+ */
+static av_always_inline void emms_c(void)
+{
+ __asm__ volatile ("emms" ::: "memory");
+}
+#elif HAVE_MMX && HAVE_MM_EMPTY
+# include <mmintrin.h>
+# define emms_c _mm_empty
+#elif HAVE_MMX && HAVE_YASM
+# define emms_c avpriv_emms_yasm
+#else
+# define emms_c()
+#endif /* HAVE_MMX_INLINE */
+
#endif /* AVUTIL_X86_EMMS_H */