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/internal.h | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) (limited to 'libavutil/internal.h') diff --git a/libavutil/internal.h b/libavutil/internal.h index cf18bdb700..4bb6b05d52 100644 --- a/libavutil/internal.h +++ b/libavutil/internal.h @@ -39,6 +39,10 @@ #include "timer.h" #include "dict.h" +#if ARCH_X86 +# include "x86/emms.h" +#endif + #ifndef attribute_align_arg #if ARCH_X86_32 && AV_GCC_VERSION_AT_LEAST(4,2) # define attribute_align_arg __attribute__((force_align_arg_pointer)) @@ -154,24 +158,4 @@ # define ONLY_IF_THREADS_ENABLED(x) NULL #endif -#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 -# include "libavutil/x86/emms.h" -# define emms_c avpriv_emms_yasm -#else -# define emms_c() -#endif /* HAVE_MMX_INLINE */ - #endif /* AVUTIL_INTERNAL_H */ -- cgit v1.2.3 From 4db96649ca700db563d9da4ebe70bf9fc4c7a6ba Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Thu, 14 Feb 2013 19:07:21 +0100 Subject: avutil: Ensure that emms_c is always defined, even on non-x86 --- libavutil/internal.h | 4 ++++ libavutil/x86/emms.h | 5 ++--- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'libavutil/internal.h') diff --git a/libavutil/internal.h b/libavutil/internal.h index 4bb6b05d52..3cf55f6398 100644 --- a/libavutil/internal.h +++ b/libavutil/internal.h @@ -43,6 +43,10 @@ # include "x86/emms.h" #endif +#ifndef emms_c +# define emms_c() +#endif + #ifndef attribute_align_arg #if ARCH_X86_32 && AV_GCC_VERSION_AT_LEAST(4,2) # define attribute_align_arg __attribute__((force_align_arg_pointer)) diff --git a/libavutil/x86/emms.h b/libavutil/x86/emms.h index 56068e581f..2ed9e5d09d 100644 --- a/libavutil/x86/emms.h +++ b/libavutil/x86/emms.h @@ -25,6 +25,7 @@ void avpriv_emms_yasm(void); #if HAVE_MMX_INLINE +# define emms_c emms_c /** * Empty mmx state. * this must be called between any dsp function and float/double code. @@ -37,10 +38,8 @@ static av_always_inline void emms_c(void) #elif HAVE_MMX && HAVE_MM_EMPTY # include # define emms_c _mm_empty -#elif HAVE_MMX && HAVE_YASM +#elif HAVE_MMX_EXTERNAL # define emms_c avpriv_emms_yasm -#else -# define emms_c() #endif /* HAVE_MMX_INLINE */ #endif /* AVUTIL_X86_EMMS_H */ -- cgit v1.2.3