diff i386/motion_est_mmx.c @ 1057:bb5de8a59da8 libavcodec

* static,const,compiler warning cleanup
author kabi
date Mon, 10 Feb 2003 09:35:32 +0000
parents caa77cd960c0
children b32afefe7d33
line wrap: on
line diff
--- a/i386/motion_est_mmx.c	Sun Feb 09 16:58:47 2003 +0000
+++ b/i386/motion_est_mmx.c	Mon Feb 10 09:35:32 2003 +0000
@@ -20,6 +20,9 @@
  */
 #include "../dsputil.h"
 
+void dsputil_init_pix_mmx(DSPContext* c, unsigned mask);
+void dsputil_set_bit_exact_pix_mmx(DSPContext* c, unsigned mask);
+
 static const __attribute__ ((aligned(8))) UINT64 round_tab[3]={
 0x0000000000000000,
 0x0001000100010001,
@@ -118,7 +121,7 @@
     asm volatile(
         ".balign 16			\n\t"
         "movq "MANGLE(bone)", %%mm5	\n\t"
-        "1:				\n\t" 
+        "1:				\n\t"
         "movq (%1, %%eax), %%mm0	\n\t"
         "movq (%2, %%eax), %%mm2	\n\t"
         "movq 1(%1, %%eax), %%mm1	\n\t"
@@ -165,7 +168,7 @@
         "punpckhbw %%mm7, %%mm3		\n\t"
         "paddw %%mm0, %%mm1		\n\t"
         "paddw %%mm2, %%mm3		\n\t"
-        "movq (%3, %%eax), %%mm4	\n\t" 
+        "movq (%3, %%eax), %%mm4	\n\t"
         "movq (%3, %%eax), %%mm2	\n\t"
         "paddw %%mm5, %%mm1		\n\t"
         "paddw %%mm5, %%mm3		\n\t"
@@ -215,8 +218,8 @@
         "punpckhbw %%mm7, %%mm4		\n\t"
         "paddw %%mm3, %%mm2		\n\t"
         "paddw %%mm4, %%mm1		\n\t"
-        "movq (%3, %%eax), %%mm3	\n\t" 
-        "movq (%3, %%eax), %%mm4	\n\t" 
+        "movq (%3, %%eax), %%mm3	\n\t"
+        "movq (%3, %%eax), %%mm4	\n\t"
         "paddw %%mm5, %%mm2		\n\t"
         "paddw %%mm5, %%mm1		\n\t"
         "psrlw $2, %%mm2		\n\t"
@@ -237,7 +240,7 @@
     );
 }
 
-static inline int sum_mmx()
+static inline int sum_mmx(void)
 {
     int ret;
     asm volatile(
@@ -253,7 +256,7 @@
     return ret&0xFFFF;
 }
 
-static inline int sum_mmx2()
+static inline int sum_mmx2(void)
 {
     int ret;
     asm volatile(
@@ -265,7 +268,7 @@
 
 
 #define PIX_SAD(suf)\
-int pix_abs8x8_ ## suf(UINT8 *blk2, UINT8 *blk1, int stride)\
+static int pix_abs8x8_ ## suf(UINT8 *blk2, UINT8 *blk1, int stride)\
 {\
     asm volatile("pxor %%mm7, %%mm7		\n\t"\
                  "pxor %%mm6, %%mm6		\n\t":);\
@@ -274,7 +277,7 @@
 \
     return sum_ ## suf();\
 }\
-int sad8x8_ ## suf(void *s, UINT8 *blk2, UINT8 *blk1, int stride)\
+static int sad8x8_ ## suf(void *s, UINT8 *blk2, UINT8 *blk1, int stride)\
 {\
     asm volatile("pxor %%mm7, %%mm7		\n\t"\
                  "pxor %%mm6, %%mm6		\n\t":);\
@@ -284,7 +287,7 @@
     return sum_ ## suf();\
 }\
 \
-int pix_abs8x8_x2_ ## suf(UINT8 *blk2, UINT8 *blk1, int stride)\
+static int pix_abs8x8_x2_ ## suf(UINT8 *blk2, UINT8 *blk1, int stride)\
 {\
     asm volatile("pxor %%mm7, %%mm7		\n\t"\
                  "pxor %%mm6, %%mm6		\n\t"\
@@ -297,7 +300,7 @@
     return sum_ ## suf();\
 }\
 \
-int pix_abs8x8_y2_ ## suf(UINT8 *blk2, UINT8 *blk1, int stride)\
+static int pix_abs8x8_y2_ ## suf(UINT8 *blk2, UINT8 *blk1, int stride)\
 {\
     asm volatile("pxor %%mm7, %%mm7		\n\t"\
                  "pxor %%mm6, %%mm6		\n\t"\
@@ -310,7 +313,7 @@
     return sum_ ## suf();\
 }\
 \
-int pix_abs8x8_xy2_ ## suf(UINT8 *blk2, UINT8 *blk1, int stride)\
+static int pix_abs8x8_xy2_ ## suf(UINT8 *blk2, UINT8 *blk1, int stride)\
 {\
     asm volatile("pxor %%mm7, %%mm7		\n\t"\
                  "pxor %%mm6, %%mm6		\n\t"\
@@ -323,7 +326,7 @@
     return sum_ ## suf();\
 }\
 \
-int pix_abs16x16_ ## suf(UINT8 *blk2, UINT8 *blk1, int stride)\
+static int pix_abs16x16_ ## suf(UINT8 *blk2, UINT8 *blk1, int stride)\
 {\
     asm volatile("pxor %%mm7, %%mm7		\n\t"\
                  "pxor %%mm6, %%mm6		\n\t":);\
@@ -333,7 +336,7 @@
 \
     return sum_ ## suf();\
 }\
-int sad16x16_ ## suf(void *s, UINT8 *blk2, UINT8 *blk1, int stride)\
+static int sad16x16_ ## suf(void *s, UINT8 *blk2, UINT8 *blk1, int stride)\
 {\
     asm volatile("pxor %%mm7, %%mm7		\n\t"\
                  "pxor %%mm6, %%mm6		\n\t":);\
@@ -343,7 +346,7 @@
 \
     return sum_ ## suf();\
 }\
-int pix_abs16x16_x2_ ## suf(UINT8 *blk2, UINT8 *blk1, int stride)\
+static int pix_abs16x16_x2_ ## suf(UINT8 *blk2, UINT8 *blk1, int stride)\
 {\
     asm volatile("pxor %%mm7, %%mm7		\n\t"\
                  "pxor %%mm6, %%mm6		\n\t"\
@@ -356,7 +359,7 @@
 \
     return sum_ ## suf();\
 }\
-int pix_abs16x16_y2_ ## suf(UINT8 *blk2, UINT8 *blk1, int stride)\
+static int pix_abs16x16_y2_ ## suf(UINT8 *blk2, UINT8 *blk1, int stride)\
 {\
     asm volatile("pxor %%mm7, %%mm7		\n\t"\
                  "pxor %%mm6, %%mm6		\n\t"\
@@ -369,7 +372,7 @@
 \
     return sum_ ## suf();\
 }\
-int pix_abs16x16_xy2_ ## suf(UINT8 *blk2, UINT8 *blk1, int stride)\
+static int pix_abs16x16_xy2_ ## suf(UINT8 *blk2, UINT8 *blk1, int stride)\
 {\
     asm volatile("pxor %%mm7, %%mm7		\n\t"\
                  "pxor %%mm6, %%mm6		\n\t"\
@@ -385,3 +388,45 @@
 
 PIX_SAD(mmx)
 PIX_SAD(mmx2)
+
+void dsputil_init_pix_mmx(DSPContext* c, unsigned mask)
+{
+    if (mm_flags & MM_MMX) {
+        c->pix_abs16x16     = pix_abs16x16_mmx;
+        c->pix_abs16x16_x2  = pix_abs16x16_x2_mmx;
+        c->pix_abs16x16_y2  = pix_abs16x16_y2_mmx;
+        c->pix_abs16x16_xy2 = pix_abs16x16_xy2_mmx;
+        c->pix_abs8x8     = pix_abs8x8_mmx;
+        c->pix_abs8x8_x2  = pix_abs8x8_x2_mmx;
+        c->pix_abs8x8_y2  = pix_abs8x8_y2_mmx;
+        c->pix_abs8x8_xy2 = pix_abs8x8_xy2_mmx;
+
+	c->sad[0]= sad16x16_mmx;
+        c->sad[1]= sad8x8_mmx;
+    }
+    if (mm_flags & MM_MMXEXT) {
+	c->pix_abs16x16     = pix_abs16x16_mmx2;
+	c->pix_abs16x16_x2  = pix_abs16x16_x2_mmx2;
+	c->pix_abs16x16_y2  = pix_abs16x16_y2_mmx2;
+	c->pix_abs16x16_xy2 = pix_abs16x16_xy2_mmx2;
+	c->pix_abs8x8     = pix_abs8x8_mmx2;
+	c->pix_abs8x8_x2  = pix_abs8x8_x2_mmx2;
+	c->pix_abs8x8_y2  = pix_abs8x8_y2_mmx2;
+	c->pix_abs8x8_xy2 = pix_abs8x8_xy2_mmx2;
+
+	c->sad[0]= sad16x16_mmx2;
+	c->sad[1]= sad8x8_mmx2;
+    }
+}
+
+void dsputil_set_bit_exact_pix_mmx(DSPContext* c, unsigned mask)
+{
+    if (mm_flags & MM_MMXEXT) {
+	c->pix_abs16x16_x2  = pix_abs16x16_x2_mmx;
+	c->pix_abs16x16_y2  = pix_abs16x16_y2_mmx;
+	c->pix_abs16x16_xy2 = pix_abs16x16_xy2_mmx;
+	c->pix_abs8x8_x2  = pix_abs8x8_x2_mmx;
+	c->pix_abs8x8_y2  = pix_abs8x8_y2_mmx;
+	c->pix_abs8x8_xy2 = pix_abs8x8_xy2_mmx;
+    }
+}