OSDN Git Service

added emms_c() macro which should can used in c code in both mmx/non mmx cases
authorFabrice Bellard <fabrice@bellard.org>
Tue, 24 Jul 2001 20:42:03 +0000 (20:42 +0000)
committerFabrice Bellard <fabrice@bellard.org>
Tue, 24 Jul 2001 20:42:03 +0000 (20:42 +0000)
Originally committed as revision 12 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/dsputil.c
libavcodec/dsputil.h
libavcodec/motion_est.c

index a1734be..b68ba8c 100644 (file)
 #include "avcodec.h"
 #include "dsputil.h"
 
-#ifdef HAVE_MMX
-int mm_flags; /* multimedia extension flags */
-#endif
-
 void (*get_pixels)(DCTELEM *block, const UINT8 *pixels, int line_size);
 void (*put_pixels_clamped)(const DCTELEM *block, UINT8 *pixels, int line_size);
 void (*add_pixels_clamped)(const DCTELEM *block, UINT8 *pixels, int line_size);
index fa8eb23..76f4475 100644 (file)
@@ -75,7 +75,13 @@ int mm_support(void);
 
 static inline void emms(void)
 {
-       asm volatile ("emms;");
+    __asm __volatile ("emms;":::"memory");
+}
+
+#define emms_c() \
+{\
+    if (mm_flags & MM_MMX)\
+        emms();\
 }
 
 #define __align8 __attribute__ ((aligned (8)))
@@ -84,6 +90,8 @@ void dsputil_init_mmx(void);
 
 #else
 
+#define emms_c()
+
 #define __align8
 
 #endif
index 0d77663..d3e31fc 100644 (file)
@@ -434,10 +434,7 @@ int estimate_motion(MpegEncContext * s,
        dmin = phods_motion_search(s, &mx, &my, range / 2, xmin, ymin, xmax, ymax);
         break;
     }
-#ifdef HAVE_MMX
-    if (mm_flags & MM_MMX)
-        emms();
-#endif
+    emms_c();
 
     /* intra / predictive decision */
     xx = mb_x * 16;