From ab441e20ffdfa2547f1d6c1dc19994ec05eb7d2f Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Tue, 22 Jan 2013 02:22:29 +0100 Subject: avutil: Move emms code to x86-specific header --- libavutil/x86/emms.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'libavutil/x86') 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 +# 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 */ -- cgit v1.2.3