diff options
author | Ramiro Polla <ramiro.polla@gmail.com> | 2009-04-02 18:31:22 +0000 |
---|---|---|
committer | Ramiro Polla <ramiro.polla@gmail.com> | 2009-04-02 18:31:22 +0000 |
commit | 5b7c7dd3297535a584a7e8e852757dca15139713 (patch) | |
tree | c77c1e6600fcfa6ec44288b5b10f7231849e0072 /libswscale/swscale_template.c | |
parent | 3dd2f87e61d3c02493a02efca146569dc771cb86 (diff) | |
download | ffmpeg-5b7c7dd3297535a584a7e8e852757dca15139713.tar.gz |
swscale: Execute sfence and emms depending on runtime flags.
Originally committed as revision 29127 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale
Diffstat (limited to 'libswscale/swscale_template.c')
-rw-r--r-- | libswscale/swscale_template.c | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/libswscale/swscale_template.c b/libswscale/swscale_template.c index ecf5c10131..04e9d17a64 100644 --- a/libswscale/swscale_template.c +++ b/libswscale/swscale_template.c @@ -26,15 +26,6 @@ #undef PAVGB #undef PREFETCH #undef PREFETCHW -#undef EMMS -#undef SFENCE - -#if HAVE_AMD3DNOW -/* On K6 femms is faster than emms. On K7 femms is directly mapped to emms. */ -#define EMMS "femms" -#else -#define EMMS "emms" -#endif #if HAVE_AMD3DNOW #define PREFETCH "prefetch" @@ -48,12 +39,6 @@ #endif #if HAVE_MMX2 -#define SFENCE "sfence" -#else -#define SFENCE " # nop" -#endif - -#if HAVE_MMX2 #define PAVGB(a,b) "pavgb " #a ", " #b " \n\t" #elif HAVE_AMD3DNOW #define PAVGB(a,b) "pavgusb " #a ", " #b " \n\t" @@ -3209,8 +3194,10 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s fillPlane(dst[3], dstStride[3], dstW, dstY-lastDstY, lastDstY, 255); #if HAVE_MMX - __asm__ volatile(SFENCE:::"memory"); - __asm__ volatile(EMMS:::"memory"); + if (flags & SWS_CPU_CAPS_MMX2 ) __asm__ volatile("sfence":::"memory"); + /* On K6 femms is faster than emms. On K7 femms is directly mapped to emms. */ + if (flags & SWS_CPU_CAPS_3DNOW) __asm__ volatile("femms" :::"memory"); + else __asm__ volatile("emms" :::"memory"); #endif /* store changed local vars back in the context */ c->dstY= dstY; |