Diego Biurrun <[email protected]> writes: > From: Ronald S. Bultje <[email protected]> > > Signed-off-by: Diego Biurrun <[email protected]> > --- > configure | 3 +++ > libavutil/internal.h | 7 +++++-- > 2 files changed, 8 insertions(+), 2 deletions(-) > > diff --git a/configure b/configure > index 3c82eaa..7ef1025 100755 > --- a/configure > +++ b/configure > @@ -1118,6 +1118,7 @@ HAVE_LIST=" > MapViewOfFile > memalign > mkstemp > + mm_empty > mmap > nanosleep > netinet_sctp_h > @@ -2746,6 +2747,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 41e8a9a..e8bcca5 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 <mmintrin.h> > +# define emms_c _mm_empty > #else /* HAVE_MMX */ > -#define emms_c() > +# define emms_c() > #endif /* HAVE_MMX */
Are there actually any compilers that do _not_ have this intrinsic? Perhaps we can simply drop the inline asm entirely. -- Måns Rullgård [email protected] _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
