From f80ddd5bf760e685f4d912ce6e6763e6cab45910 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Mon, 9 Jul 2012 02:21:25 +0200 Subject: lavu: use intrinsics for emms on systems lacking inline asm support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Diego Biurrun Signed-off-by: Martin Storsjö --- configure | 3 +++ libavutil/internal.h | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 7507f8f387..a1506c9262 100755 --- a/configure +++ b/configure @@ -1116,6 +1116,7 @@ HAVE_LIST=" MapViewOfFile memalign mkstemp + mm_empty mmap nanosleep netinet_sctp_h @@ -2743,6 +2744,8 @@ elif enabled x86; then check_code ld intrin.h "__rdtsc()" && enable rdtsc + check_code ld mmintrin.h "_mm_empty()" && enable mm_empty + enable local_aligned_8 local_aligned_16 # check whether EBP is available on x86 diff --git a/libavutil/internal.h b/libavutil/internal.h index 41e8a9ab36..e8bcca571b 100644 --- a/libavutil/internal.h +++ b/libavutil/internal.h @@ -231,7 +231,7 @@ struct AVDictionary { # define ONLY_IF_THREADS_ENABLED(x) NULL #endif -#if HAVE_MMX +#if HAVE_MMX && HAVE_INLINE_ASM /** * Empty mmx state. * this must be called between any dsp function and float/double code. @@ -241,8 +241,11 @@ static av_always_inline void emms_c(void) { __asm__ volatile ("emms" ::: "memory"); } +#elif HAVE_MMX && HAVE_MM_EMPTY +# include +# define emms_c _mm_empty #else /* HAVE_MMX */ -#define emms_c() +# define emms_c() #endif /* HAVE_MMX */ #endif /* AVUTIL_INTERNAL_H */ -- cgit v1.2.3