diff imgresample.c @ 8316:589f9a71df95 libavcodec

Get rid of mmx_t.
author aurel
date Sun, 14 Dec 2008 00:46:27 +0000
parents 2eaafc02cd3d
children 7768bdfd4f7b
line wrap: on
line diff
--- a/imgresample.c	Sat Dec 13 18:16:06 2008 +0000
+++ b/imgresample.c	Sun Dec 14 00:46:27 2008 +0000
@@ -183,7 +183,7 @@
     int src_pos, phase;
     const uint8_t *s;
     int16_t *filter;
-    mmx_t tmp;
+    uint64_t tmp;
 
     src_pos = src_start;
     pxor_r2r(mm7, mm7);
@@ -200,13 +200,13 @@
         packuswb_r2r(mm7, mm3);
         packuswb_r2r(mm7, mm2);
         movq_r2m(mm0, tmp);
-        dst[0] = tmp.ub[0];
+        dst[0] = tmp & 0xFF;
         movq_r2m(mm1, tmp);
-        dst[1] = tmp.ub[0];
+        dst[1] = tmp & 0xFF;
         movq_r2m(mm2, tmp);
-        dst[2] = tmp.ub[0];
+        dst[2] = tmp & 0xFF;
         movq_r2m(mm3, tmp);
-        dst[3] = tmp.ub[0];
+        dst[3] = tmp & 0xFF;
         dst += 4;
         dst_width -= 4;
     }
@@ -214,7 +214,7 @@
         FILTER4(mm0);
         packuswb_r2r(mm7, mm0);
         movq_r2m(mm0, tmp);
-        dst[0] = tmp.ub[0];
+        dst[0] = tmp & 0xFF;
         dst++;
         dst_width--;
     }
@@ -224,17 +224,14 @@
 static void v_resample4_mmx(uint8_t *dst, int dst_width, const uint8_t *src,
                             int wrap, int16_t *filter)
 {
-    int sum, i, v;
+    int sum, i;
     const uint8_t *s;
-    mmx_t tmp;
-    mmx_t coefs[4];
+    uint64_t tmp;
+    uint64_t coefs[4];
 
     for(i=0;i<4;i++) {
-        v = filter[i];
-        coefs[i].uw[0] = v;
-        coefs[i].uw[1] = v;
-        coefs[i].uw[2] = v;
-        coefs[i].uw[3] = v;
+        tmp = filter[i];
+        coefs[i] = (tmp<<48) + (tmp<<32) + (tmp<<16) + tmp;
     }
 
     pxor_r2r(mm7, mm7);
@@ -262,7 +259,7 @@
         packuswb_r2r(mm7, mm0);
         movq_r2m(mm0, tmp);
 
-        *(uint32_t *)dst = tmp.ud[0];
+        *(uint32_t *)dst = tmp & 0xFFFFFFFF;
         dst += 4;
         s += 4;
         dst_width -= 4;