Browse Source

avutil: Move emms code to x86-specific header

tags/n1.2
Diego Biurrun 13 years ago
parent
commit
ab441e20ff
2 changed files with 26 additions and 20 deletions
  1. +4
    -20
      libavutil/internal.h
  2. +22
    -0
      libavutil/x86/emms.h

+ 4
- 20
libavutil/internal.h View File

@@ -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 <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 */

+ 22
- 0
libavutil/x86/emms.h View File

@@ -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 <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 */

Loading…
Cancel
Save