avutil: Move emms code to x86-specific header

This commit is contained in:
Diego Biurrun 2013-01-22 02:22:29 +01:00
parent 130cefc9dc
commit ab441e20ff
2 changed files with 26 additions and 20 deletions

View File

@ -39,6 +39,10 @@
#include "timer.h" #include "timer.h"
#include "dict.h" #include "dict.h"
#if ARCH_X86
# include "x86/emms.h"
#endif
#ifndef attribute_align_arg #ifndef attribute_align_arg
#if ARCH_X86_32 && AV_GCC_VERSION_AT_LEAST(4,2) #if ARCH_X86_32 && AV_GCC_VERSION_AT_LEAST(4,2)
# define attribute_align_arg __attribute__((force_align_arg_pointer)) # define attribute_align_arg __attribute__((force_align_arg_pointer))
@ -154,24 +158,4 @@
# define ONLY_IF_THREADS_ENABLED(x) NULL # define ONLY_IF_THREADS_ENABLED(x) NULL
#endif #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 <mmintrin.h>
# 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 */ #endif /* AVUTIL_INTERNAL_H */

View File

@ -19,6 +19,28 @@
#ifndef AVUTIL_X86_EMMS_H #ifndef AVUTIL_X86_EMMS_H
#define AVUTIL_X86_EMMS_H #define AVUTIL_X86_EMMS_H
#include "config.h"
#include "libavutil/attributes.h"
void avpriv_emms_yasm(void); 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 */ #endif /* AVUTIL_X86_EMMS_H */