changeset 17638:ee8d71a1b7ba

Fix vec_clip for gcc's that don't handle (vector signed short){16} according to spec; also convert a few vec_splat's to vec_splat_{s,u}*
author pacman
date Fri, 17 Feb 2006 05:01:46 +0000
parents 479b64764d9e
children 56ec8716e25b
files postproc/yuv2rgb_altivec.c
diffstat 1 files changed, 14 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/postproc/yuv2rgb_altivec.c	Fri Feb 17 03:49:33 2006 +0000
+++ b/postproc/yuv2rgb_altivec.c	Fri Feb 17 05:01:46 2006 +0000
@@ -210,11 +210,9 @@
              (vector unsigned char)AVV(0x10,0x08,0x10,0x09,0x10,0x0A,0x10,0x0B,\
                                     0x10,0x0C,0x10,0x0D,0x10,0x0E,0x10,0x0F))
 
-#define vec_clip(x) \
-  vec_max (vec_min (x, (typeof(x))AVV(235)), (typeof(x))AVV(16))
-
-#define vec_packclp_a(x,y) \
-  (vector unsigned char)vec_pack (vec_clip (x), vec_clip (y))
+#define vec_clip_s16(x) \
+  vec_max (vec_min (x, (vector signed short)AVV(235,235,235,235,235,235,235,235)),\
+                       (vector signed short)AVV(16, 16, 16, 16, 16, 16, 16, 16 ))
 
 #define vec_packclp(x,y) \
   (vector unsigned char)vec_packs \
@@ -747,7 +745,7 @@
   buf.tmp[5] = -((inv_table[3]>>1)*(contrast>>16)*(saturation>>16));	//cgv
 
 
-  c->CSHIFT = (vector unsigned short)vec_splat((vector unsigned short)AVV(2),0);
+  c->CSHIFT = (vector unsigned short)vec_splat_u16(2);
   c->CY  = vec_splat ((vector signed short)buf.vec, 0);
   c->OY  = vec_splat ((vector signed short)buf.vec, 1);
   c->CRV  = vec_splat ((vector signed short)buf.vec, 2);
@@ -781,8 +779,8 @@
   vector unsigned char R,G,B,pels[3];
   vector unsigned char *out,*nout;
 
-  vector signed short   RND = vec_splat((vector signed short)AVV(1<<3),0);
-  vector unsigned short SCL = vec_splat((vector unsigned short)AVV(4),0);
+  vector signed short   RND = vec_splat_s16(1<<3);
+  vector unsigned short SCL = vec_splat_u16(4);
   unsigned long scratch[16] __attribute__ ((aligned (16)));
 
   vector signed short *YCoeffs, *CCoeffs;
@@ -819,10 +817,10 @@
     U  = vec_sra (U,  SCL);
     V  = vec_sra (V,  SCL);
 
-    Y0 = vec_clip (Y0);
-    Y1 = vec_clip (Y1);
-    U  = vec_clip (U);
-    V  = vec_clip (V);
+    Y0 = vec_clip_s16 (Y0);
+    Y1 = vec_clip_s16 (Y1);
+    U  = vec_clip_s16 (U);
+    V  = vec_clip_s16 (V);
 
     /* now we have
       Y0= y0 y1 y2 y3 y4 y5 y6 y7     Y1= y8 y9 y10 y11 y12 y13 y14 y15
@@ -896,10 +894,10 @@
     U  = vec_sra (U,  SCL);
     V  = vec_sra (V,  SCL);
 
-    Y0 = vec_clip (Y0);
-    Y1 = vec_clip (Y1);
-    U  = vec_clip (U);
-    V  = vec_clip (V);
+    Y0 = vec_clip_s16 (Y0);
+    Y1 = vec_clip_s16 (Y1);
+    U  = vec_clip_s16 (U);
+    V  = vec_clip_s16 (V);
 
     /* now we have
        Y0= y0 y1 y2 y3 y4 y5 y6 y7     Y1= y8 y9 y10 y11 y12 y13 y14 y15