]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/x86/dsputil_mmx_rnd_template.c
Implement an sse version of scalarproduct_float().
[ffmpeg] / libavcodec / x86 / dsputil_mmx_rnd_template.c
index 45ed59088ea48b56848e339dab7d4099d392d60e..2fc1756f60646163b29150bc4ffcb4e19514bbd5 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * DSP utils mmx functions are compiled twice for rnd/no_rnd
- * Copyright (c) 2000, 2001 Fabrice Bellard.
+ * Copyright (c) 2000, 2001 Fabrice Bellard
  * Copyright (c) 2003-2004 Michael Niedermayer <michaelni@gmx.at>
  *
  * MMX optimization by Nick Kurshev <nickols_k@mail.ru>
@@ -98,7 +98,7 @@ static void av_unused DEF(put, pixels8_l2)(uint8_t *dst, uint8_t *src1, uint8_t
         "add    %5, %3                  \n\t"
         "subl   $4, %0                  \n\t"
         "jnz    1b                      \n\t"
-#ifdef PIC //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cannot be used
+#if !HAVE_EBX_AVAILABLE //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cannot be used
         :"+m"(h), "+a"(src1), "+c"(src2), "+d"(dst)
 #else
         :"+b"(h), "+a"(src1), "+c"(src2), "+d"(dst)
@@ -193,7 +193,7 @@ static void av_unused DEF(put, pixels16_l2)(uint8_t *dst, uint8_t *src1, uint8_t
         "add    $32, %2                 \n\t"
         "subl   $2, %0                  \n\t"
         "jnz    1b                      \n\t"
-#ifdef PIC //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cannot be used
+#if !HAVE_EBX_AVAILABLE  //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cannot be used
         :"+m"(h), "+a"(src1), "+c"(src2), "+d"(dst)
 #else
         :"+b"(h), "+a"(src1), "+c"(src2), "+d"(dst)
@@ -306,7 +306,7 @@ static void av_unused DEF(avg, pixels4)(uint8_t *block, const uint8_t *pixels, i
         __asm__ volatile(
              "movd  %0, %%mm0           \n\t"
              "movd  %1, %%mm1           \n\t"
-             PAVGB(%%mm0, %%mm1, %%mm2, %%mm6)
+             OP_AVG(%%mm0, %%mm1, %%mm2, %%mm6)
              "movd  %%mm2, %0           \n\t"
              :"+m"(*block)
              :"m"(*pixels)
@@ -326,7 +326,7 @@ static void DEF(avg, pixels8)(uint8_t *block, const uint8_t *pixels, int line_si
         __asm__ volatile(
              "movq  %0, %%mm0           \n\t"
              "movq  %1, %%mm1           \n\t"
-             PAVGB(%%mm0, %%mm1, %%mm2, %%mm6)
+             OP_AVG(%%mm0, %%mm1, %%mm2, %%mm6)
              "movq  %%mm2, %0           \n\t"
              :"+m"(*block)
              :"m"(*pixels)
@@ -345,11 +345,11 @@ static void DEF(avg, pixels16)(uint8_t *block, const uint8_t *pixels, int line_s
         __asm__ volatile(
              "movq  %0, %%mm0           \n\t"
              "movq  %1, %%mm1           \n\t"
-             PAVGB(%%mm0, %%mm1, %%mm2, %%mm6)
+             OP_AVG(%%mm0, %%mm1, %%mm2, %%mm6)
              "movq  %%mm2, %0           \n\t"
              "movq  8%0, %%mm0          \n\t"
              "movq  8%1, %%mm1          \n\t"
-             PAVGB(%%mm0, %%mm1, %%mm2, %%mm6)
+             OP_AVG(%%mm0, %%mm1, %%mm2, %%mm6)
              "movq  %%mm2, 8%0          \n\t"
              :"+m"(*block)
              :"m"(*pixels)
@@ -370,7 +370,7 @@ static void DEF(avg, pixels8_x2)(uint8_t *block, const uint8_t *pixels, int line
             "movq  1%1, %%mm1           \n\t"
             "movq  %0, %%mm3            \n\t"
             PAVGB(%%mm0, %%mm1, %%mm2, %%mm6)
-            PAVGB(%%mm3, %%mm2, %%mm0, %%mm6)
+            OP_AVG(%%mm3, %%mm2, %%mm0, %%mm6)
             "movq  %%mm0, %0            \n\t"
             :"+m"(*block)
             :"m"(*pixels)
@@ -390,7 +390,7 @@ static av_unused void DEF(avg, pixels8_l2)(uint8_t *dst, uint8_t *src1, uint8_t
             "movq  %2, %%mm1            \n\t"
             "movq  %0, %%mm3            \n\t"
             PAVGB(%%mm0, %%mm1, %%mm2, %%mm6)
-            PAVGB(%%mm3, %%mm2, %%mm0, %%mm6)
+            OP_AVG(%%mm3, %%mm2, %%mm0, %%mm6)
             "movq  %%mm0, %0            \n\t"
             :"+m"(*dst)
             :"m"(*src1), "m"(*src2)
@@ -411,13 +411,13 @@ static void DEF(avg, pixels16_x2)(uint8_t *block, const uint8_t *pixels, int lin
             "movq  1%1, %%mm1           \n\t"
             "movq  %0, %%mm3            \n\t"
             PAVGB(%%mm0, %%mm1, %%mm2, %%mm6)
-            PAVGB(%%mm3, %%mm2, %%mm0, %%mm6)
+            OP_AVG(%%mm3, %%mm2, %%mm0, %%mm6)
             "movq  %%mm0, %0            \n\t"
             "movq  8%1, %%mm0           \n\t"
             "movq  9%1, %%mm1           \n\t"
             "movq  8%0, %%mm3           \n\t"
             PAVGB(%%mm0, %%mm1, %%mm2, %%mm6)
-            PAVGB(%%mm3, %%mm2, %%mm0, %%mm6)
+            OP_AVG(%%mm3, %%mm2, %%mm0, %%mm6)
             "movq  %%mm0, 8%0           \n\t"
             :"+m"(*block)
             :"m"(*pixels)
@@ -437,13 +437,13 @@ static av_unused void DEF(avg, pixels16_l2)(uint8_t *dst, uint8_t *src1, uint8_t
             "movq  %2, %%mm1            \n\t"
             "movq  %0, %%mm3            \n\t"
             PAVGB(%%mm0, %%mm1, %%mm2, %%mm6)
-            PAVGB(%%mm3, %%mm2, %%mm0, %%mm6)
+            OP_AVG(%%mm3, %%mm2, %%mm0, %%mm6)
             "movq  %%mm0, %0            \n\t"
             "movq  8%1, %%mm0           \n\t"
             "movq  8%2, %%mm1           \n\t"
             "movq  8%0, %%mm3           \n\t"
             PAVGB(%%mm0, %%mm1, %%mm2, %%mm6)
-            PAVGB(%%mm3, %%mm2, %%mm0, %%mm6)
+            OP_AVG(%%mm3, %%mm2, %%mm0, %%mm6)
             "movq  %%mm0, 8%0           \n\t"
             :"+m"(*dst)
             :"m"(*src1), "m"(*src2)
@@ -466,9 +466,9 @@ static void DEF(avg, pixels8_y2)(uint8_t *block, const uint8_t *pixels, int line
         "movq   (%1, %%"REG_a"), %%mm2  \n\t"
         PAVGBP(%%mm1, %%mm0, %%mm4,   %%mm2, %%mm1, %%mm5)
         "movq   (%2), %%mm3             \n\t"
-        PAVGB(%%mm3, %%mm4, %%mm0, %%mm6)
+        OP_AVG(%%mm3, %%mm4, %%mm0, %%mm6)
         "movq   (%2, %3), %%mm3         \n\t"
-        PAVGB(%%mm3, %%mm5, %%mm1, %%mm6)
+        OP_AVG(%%mm3, %%mm5, %%mm1, %%mm6)
         "movq   %%mm0, (%2)             \n\t"
         "movq   %%mm1, (%2, %3)         \n\t"
         "add    %%"REG_a", %1           \n\t"
@@ -478,9 +478,9 @@ static void DEF(avg, pixels8_y2)(uint8_t *block, const uint8_t *pixels, int line
         "movq   (%1, %%"REG_a"), %%mm0  \n\t"
         PAVGBP(%%mm1, %%mm2, %%mm4,   %%mm0, %%mm1, %%mm5)
         "movq   (%2), %%mm3             \n\t"
-        PAVGB(%%mm3, %%mm4, %%mm2, %%mm6)
+        OP_AVG(%%mm3, %%mm4, %%mm2, %%mm6)
         "movq   (%2, %3), %%mm3         \n\t"
-        PAVGB(%%mm3, %%mm5, %%mm1, %%mm6)
+        OP_AVG(%%mm3, %%mm5, %%mm1, %%mm6)
         "movq   %%mm2, (%2)             \n\t"
         "movq   %%mm1, (%2, %3)         \n\t"
         "add    %%"REG_a", %1           \n\t"
@@ -533,7 +533,7 @@ static void DEF(avg, pixels8_xy2)(uint8_t *block, const uint8_t *pixels, int lin
         "packuswb  %%mm5, %%mm4         \n\t"
                 "pcmpeqd %%mm2, %%mm2   \n\t"
                 "paddb %%mm2, %%mm2     \n\t"
-                PAVGB(%%mm3, %%mm4, %%mm5, %%mm2)
+                OP_AVG(%%mm3, %%mm4, %%mm5, %%mm2)
                 "movq   %%mm5, (%2, %%"REG_a")  \n\t"
         "add    %3, %%"REG_a"                \n\t"
 
@@ -557,7 +557,7 @@ static void DEF(avg, pixels8_xy2)(uint8_t *block, const uint8_t *pixels, int lin
         "packuswb  %%mm1, %%mm0         \n\t"
                 "pcmpeqd %%mm2, %%mm2   \n\t"
                 "paddb %%mm2, %%mm2     \n\t"
-                PAVGB(%%mm3, %%mm0, %%mm1, %%mm2)
+                OP_AVG(%%mm3, %%mm0, %%mm1, %%mm2)
                 "movq   %%mm1, (%2, %%"REG_a")  \n\t"
         "add    %3, %%"REG_a"           \n\t"