# HG changeset patch # User pacman # Date 1140152506 0 # Node ID ee8d71a1b7ba8202771c5bffa1199359f3f64a0f # Parent 479b64764d9eac236e385798a88ba7c862f007ab 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}* diff -r 479b64764d9e -r ee8d71a1b7ba postproc/yuv2rgb_altivec.c --- 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