From a590eabead0a0c405a7293d8689b9992de5a689b Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=B8ren=20Sandmann=20Pedersen?= Date: Fri, 7 Aug 2009 11:53:50 -0400 Subject: [PATCH] Misc formatting fixes for pixman-vmx.c --- pixman/pixman-vmx.c | 452 ++++++++++++++++++++++++++-------------------------- 1 file changed, 227 insertions(+), 225 deletions(-) diff --git a/pixman/pixman-vmx.c b/pixman/pixman-vmx.c index c09bac6..b52803d 100644 --- a/pixman/pixman-vmx.c +++ b/pixman/pixman-vmx.c @@ -45,24 +45,24 @@ static force_inline vector unsigned int pix_multiply (vector unsigned int p, vector unsigned int a) { vector unsigned short hi, lo, mod; - + /* unpack to short */ hi = (vector unsigned short) vec_mergeh ((vector unsigned char)AVV (0), (vector unsigned char)p); - + mod = (vector unsigned short) vec_mergeh ((vector unsigned char)AVV (0), (vector unsigned char)a); - + hi = vec_mladd (hi, mod, (vector unsigned short) AVV (0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080)); - + hi = vec_adds (hi, vec_sr (hi, vec_splat_u16 (8))); - + hi = vec_sr (hi, vec_splat_u16 (8)); - + /* unpack to short */ lo = (vector unsigned short) vec_mergel ((vector unsigned char)AVV (0), @@ -70,15 +70,15 @@ pix_multiply (vector unsigned int p, vector unsigned int a) mod = (vector unsigned short) vec_mergel ((vector unsigned char)AVV (0), (vector unsigned char)a); - + lo = vec_mladd (lo, mod, (vector unsigned short) AVV (0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080)); - + lo = vec_adds (lo, vec_sr (lo, vec_splat_u16 (8))); - + lo = vec_sr (lo, vec_splat_u16 (8)); - + return (vector unsigned int)vec_packsu (hi, lo); } @@ -191,31 +191,31 @@ vmx_combine_over_u_no_mask (uint32_t * dest, vector unsigned int vdest, vsrc; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, store_mask; - + COMPUTE_SHIFT_MASKS (dest, src); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - + LOAD_VECTORS (dest, src); - + vdest = over (vsrc, splat_alpha (vsrc), vdest); - + STORE_VECTOR (dest); - + src += 4; dest += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t s = src[i]; uint32_t d = dest[i]; uint32_t ia = ALPHA_8 (~s); - + UN8x4_MUL_UN8_ADD_UN8x4 (d, ia, s); - + dest[i] = d; } } @@ -230,35 +230,34 @@ vmx_combine_over_u_mask (uint32_t * dest, vector unsigned int vdest, vsrc, vmask; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, mask_mask, store_mask; - + COMPUTE_SHIFT_MASKC (dest, src, mask); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORSM (dest, src, mask); - + vdest = over (vsrc, splat_alpha (vsrc), vdest); - + STORE_VECTOR (dest); - + src += 4; dest += 4; mask += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t m = ALPHA_8 (mask[i]); uint32_t s = src[i]; uint32_t d = dest[i]; uint32_t ia; - + UN8x4_MUL_UN8 (s, m); - + ia = ALPHA_8 (~s); - + UN8x4_MUL_UN8_ADD_UN8x4 (d, ia, s); dest[i] = d; } @@ -287,29 +286,29 @@ vmx_combine_over_reverse_u_no_mask (uint32_t * dest, vector unsigned int vdest, vsrc; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, store_mask; - + COMPUTE_SHIFT_MASKS (dest, src); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - + LOAD_VECTORS (dest, src); - + vdest = over (vdest, splat_alpha (vdest), vsrc); - + STORE_VECTOR (dest); - + src += 4; dest += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t s = src[i]; uint32_t d = dest[i]; uint32_t ia = ALPHA_8 (~dest[i]); - + UN8x4_MUL_UN8_ADD_UN8x4 (s, ia, d); dest[i] = s; } @@ -325,33 +324,33 @@ vmx_combine_over_reverse_u_mask (uint32_t * dest, vector unsigned int vdest, vsrc, vmask; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, mask_mask, store_mask; - + COMPUTE_SHIFT_MASKC (dest, src, mask); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - + LOAD_VECTORSM (dest, src, mask); - + vdest = over (vdest, splat_alpha (vdest), vsrc); - + STORE_VECTOR (dest); - + src += 4; dest += 4; mask += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t m = ALPHA_8 (mask[i]); uint32_t s = src[i]; uint32_t d = dest[i]; uint32_t ia = ALPHA_8 (~dest[i]); - + UN8x4_MUL_UN8 (s, m); - + UN8x4_MUL_UN8_ADD_UN8x4 (s, ia, d); dest[i] = s; } @@ -380,28 +379,27 @@ vmx_combine_in_u_no_mask (uint32_t * dest, vector unsigned int vdest, vsrc; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, store_mask; - + COMPUTE_SHIFT_MASKS (dest, src); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORS (dest, src); - + vdest = pix_multiply (vsrc, splat_alpha (vdest)); - + STORE_VECTOR (dest); - + src += 4; dest += 4; } - + for (i = width % 4; --i >= 0;) { - uint32_t s = src[i]; uint32_t a = ALPHA_8 (dest[i]); + UN8x4_MUL_UN8 (s, a); dest[i] = s; } @@ -417,33 +415,32 @@ vmx_combine_in_u_mask (uint32_t * dest, vector unsigned int vdest, vsrc, vmask; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, mask_mask, store_mask; - + COMPUTE_SHIFT_MASKC (dest, src, mask); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORSM (dest, src, mask); - + vdest = pix_multiply (vsrc, splat_alpha (vdest)); - + STORE_VECTOR (dest); - + src += 4; dest += 4; mask += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t m = ALPHA_8 (mask[i]); uint32_t s = src[i]; uint32_t a = ALPHA_8 (dest[i]); - + UN8x4_MUL_UN8 (s, m); - UN8x4_MUL_UN8 (s, a); + dest[i] = s; } } @@ -471,28 +468,29 @@ vmx_combine_in_reverse_u_no_mask (uint32_t * dest, vector unsigned int vdest, vsrc; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, store_mask; - + COMPUTE_SHIFT_MASKS (dest, src); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORS (dest, src); - + vdest = pix_multiply (vdest, splat_alpha (vsrc)); - + STORE_VECTOR (dest); - + src += 4; dest += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t d = dest[i]; uint32_t a = ALPHA_8 (src[i]); + UN8x4_MUL_UN8 (d, a); + dest[i] = d; } } @@ -507,34 +505,33 @@ vmx_combine_in_reverse_u_mask (uint32_t * dest, vector unsigned int vdest, vsrc, vmask; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, mask_mask, store_mask; - + COMPUTE_SHIFT_MASKC (dest, src, mask); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORSM (dest, src, mask); - + vdest = pix_multiply (vdest, splat_alpha (vsrc)); - + STORE_VECTOR (dest); - + src += 4; dest += 4; mask += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t m = ALPHA_8 (mask[i]); uint32_t d = dest[i]; uint32_t a = src[i]; - + UN8x4_MUL_UN8 (a, m); - a = ALPHA_8 (a); UN8x4_MUL_UN8 (d, a); + dest[i] = d; } } @@ -562,28 +559,29 @@ vmx_combine_out_u_no_mask (uint32_t * dest, vector unsigned int vdest, vsrc; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, store_mask; - + COMPUTE_SHIFT_MASKS (dest, src); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORS (dest, src); - + vdest = pix_multiply (vsrc, splat_alpha (negate (vdest))); - + STORE_VECTOR (dest); - + src += 4; dest += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t s = src[i]; uint32_t a = ALPHA_8 (~dest[i]); + UN8x4_MUL_UN8 (s, a); + dest[i] = s; } } @@ -598,33 +596,32 @@ vmx_combine_out_u_mask (uint32_t * dest, vector unsigned int vdest, vsrc, vmask; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, mask_mask, store_mask; - + COMPUTE_SHIFT_MASKC (dest, src, mask); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORSM (dest, src, mask); - + vdest = pix_multiply (vsrc, splat_alpha (negate (vdest))); - + STORE_VECTOR (dest); - + src += 4; dest += 4; mask += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t m = ALPHA_8 (mask[i]); uint32_t s = src[i]; uint32_t a = ALPHA_8 (~dest[i]); - + UN8x4_MUL_UN8 (s, m); - UN8x4_MUL_UN8 (s, a); + dest[i] = s; } } @@ -652,28 +649,30 @@ vmx_combine_out_reverse_u_no_mask (uint32_t * dest, vector unsigned int vdest, vsrc; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, store_mask; - + COMPUTE_SHIFT_MASKS (dest, src); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - + LOAD_VECTORS (dest, src); - + vdest = pix_multiply (vdest, splat_alpha (negate (vsrc))); - + STORE_VECTOR (dest); - + src += 4; dest += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t d = dest[i]; uint32_t a = ALPHA_8 (~src[i]); + UN8x4_MUL_UN8 (d, a); + dest[i] = d; } } @@ -688,34 +687,33 @@ vmx_combine_out_reverse_u_mask (uint32_t * dest, vector unsigned int vdest, vsrc, vmask; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, mask_mask, store_mask; - + COMPUTE_SHIFT_MASKC (dest, src, mask); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORSM (dest, src, mask); - + vdest = pix_multiply (vdest, splat_alpha (negate (vsrc))); - + STORE_VECTOR (dest); - + src += 4; dest += 4; mask += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t m = ALPHA_8 (mask[i]); uint32_t d = dest[i]; uint32_t a = src[i]; - + UN8x4_MUL_UN8 (a, m); - a = ALPHA_8 (~a); UN8x4_MUL_UN8 (d, a); + dest[i] = d; } } @@ -743,32 +741,32 @@ vmx_combine_atop_u_no_mask (uint32_t * dest, vector unsigned int vdest, vsrc; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, store_mask; - + COMPUTE_SHIFT_MASKS (dest, src); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORS (dest, src); - + vdest = pix_add_mul (vsrc, splat_alpha (vdest), vdest, splat_alpha (negate (vsrc))); - + STORE_VECTOR (dest); - + src += 4; dest += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t s = src[i]; uint32_t d = dest[i]; uint32_t dest_a = ALPHA_8 (d); uint32_t src_ia = ALPHA_8 (~s); - + UN8x4_MUL_UN8_ADD_UN8x4_MUL_UN8 (s, dest_a, d, src_ia); + dest[i] = s; } } @@ -783,25 +781,24 @@ vmx_combine_atop_u_mask (uint32_t * dest, vector unsigned int vdest, vsrc, vmask; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, mask_mask, store_mask; - + COMPUTE_SHIFT_MASKC (dest, src, mask); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORSM (dest, src, mask); - + vdest = pix_add_mul (vsrc, splat_alpha (vdest), vdest, splat_alpha (negate (vsrc))); - + STORE_VECTOR (dest); - + src += 4; dest += 4; mask += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t m = ALPHA_8 (mask[i]); @@ -809,12 +806,13 @@ vmx_combine_atop_u_mask (uint32_t * dest, uint32_t d = dest[i]; uint32_t dest_a = ALPHA_8 (d); uint32_t src_ia; - + UN8x4_MUL_UN8 (s, m); - + src_ia = ALPHA_8 (~s); - + UN8x4_MUL_UN8_ADD_UN8x4_MUL_UN8 (s, dest_a, d, src_ia); + dest[i] = s; } } @@ -842,32 +840,32 @@ vmx_combine_atop_reverse_u_no_mask (uint32_t * dest, vector unsigned int vdest, vsrc; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, store_mask; - + COMPUTE_SHIFT_MASKS (dest, src); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORS (dest, src); - + vdest = pix_add_mul (vdest, splat_alpha (vsrc), vsrc, splat_alpha (negate (vdest))); - + STORE_VECTOR (dest); - + src += 4; dest += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t s = src[i]; uint32_t d = dest[i]; uint32_t src_a = ALPHA_8 (s); uint32_t dest_ia = ALPHA_8 (~d); - + UN8x4_MUL_UN8_ADD_UN8x4_MUL_UN8 (s, dest_ia, d, src_a); + dest[i] = s; } } @@ -882,25 +880,24 @@ vmx_combine_atop_reverse_u_mask (uint32_t * dest, vector unsigned int vdest, vsrc, vmask; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, mask_mask, store_mask; - + COMPUTE_SHIFT_MASKC (dest, src, mask); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORSM (dest, src, mask); - + vdest = pix_add_mul (vdest, splat_alpha (vsrc), vsrc, splat_alpha (negate (vdest))); - + STORE_VECTOR (dest); - + src += 4; dest += 4; mask += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t m = ALPHA_8 (mask[i]); @@ -908,12 +905,13 @@ vmx_combine_atop_reverse_u_mask (uint32_t * dest, uint32_t d = dest[i]; uint32_t src_a; uint32_t dest_ia = ALPHA_8 (~d); - + UN8x4_MUL_UN8 (s, m); - + src_a = ALPHA_8 (s); - + UN8x4_MUL_UN8_ADD_UN8x4_MUL_UN8 (s, dest_ia, d, src_a); + dest[i] = s; } } @@ -941,32 +939,32 @@ vmx_combine_xor_u_no_mask (uint32_t * dest, vector unsigned int vdest, vsrc; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, store_mask; - + COMPUTE_SHIFT_MASKS (dest, src); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORS (dest, src); - + vdest = pix_add_mul (vsrc, splat_alpha (negate (vdest)), vdest, splat_alpha (negate (vsrc))); - + STORE_VECTOR (dest); - + src += 4; dest += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t s = src[i]; uint32_t d = dest[i]; uint32_t src_ia = ALPHA_8 (~s); uint32_t dest_ia = ALPHA_8 (~d); - + UN8x4_MUL_UN8_ADD_UN8x4_MUL_UN8 (s, dest_ia, d, src_ia); + dest[i] = s; } } @@ -981,25 +979,24 @@ vmx_combine_xor_u_mask (uint32_t * dest, vector unsigned int vdest, vsrc, vmask; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, mask_mask, store_mask; - + COMPUTE_SHIFT_MASKC (dest, src, mask); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORSM (dest, src, mask); - + vdest = pix_add_mul (vsrc, splat_alpha (negate (vdest)), vdest, splat_alpha (negate (vsrc))); - + STORE_VECTOR (dest); - + src += 4; dest += 4; mask += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t m = ALPHA_8 (mask[i]); @@ -1007,12 +1004,13 @@ vmx_combine_xor_u_mask (uint32_t * dest, uint32_t d = dest[i]; uint32_t src_ia; uint32_t dest_ia = ALPHA_8 (~d); - + UN8x4_MUL_UN8 (s, m); - + src_ia = ALPHA_8 (~s); - + UN8x4_MUL_UN8_ADD_UN8x4_MUL_UN8 (s, dest_ia, d, src_ia); + dest[i] = s; } } @@ -1040,27 +1038,28 @@ vmx_combine_add_u_no_mask (uint32_t * dest, vector unsigned int vdest, vsrc; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, store_mask; - + COMPUTE_SHIFT_MASKS (dest, src); /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORS (dest, src); - + vdest = pix_add (vsrc, vdest); - + STORE_VECTOR (dest); - + src += 4; dest += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t s = src[i]; uint32_t d = dest[i]; + UN8x4_ADD_UN8x4 (d, s); + dest[i] = d; } } @@ -1075,33 +1074,32 @@ vmx_combine_add_u_mask (uint32_t * dest, vector unsigned int vdest, vsrc, vmask; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, src_mask, mask_mask, store_mask; - + COMPUTE_SHIFT_MASKC (dest, src, mask); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORSM (dest, src, mask); - + vdest = pix_add (vsrc, vdest); - + STORE_VECTOR (dest); - + src += 4; dest += 4; mask += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t m = ALPHA_8 (mask[i]); uint32_t s = src[i]; uint32_t d = dest[i]; - + UN8x4_MUL_UN8 (s, m); - UN8x4_ADD_UN8x4 (d, s); + dest[i] = d; } } @@ -1132,28 +1130,30 @@ vmx_combine_src_ca (pixman_implementation_t *imp, vector unsigned int vdest, vsrc, vmask; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, mask_mask, src_mask, store_mask; - + COMPUTE_SHIFT_MASKC (dest, src, mask); + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORSC (dest, src, mask); - + vdest = pix_multiply (vsrc, vmask); - + STORE_VECTOR (dest); - + mask += 4; src += 4; dest += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t a = mask[i]; uint32_t s = src[i]; + UN8x4_MUL_UN8x4 (s, a); + dest[i] = s; } } @@ -1176,7 +1176,6 @@ vmx_combine_over_ca (pixman_implementation_t *imp, /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORSC (dest, src, mask); vdest = in_over (vsrc, splat_alpha (vsrc), vmask, vdest); @@ -1283,6 +1282,7 @@ vmx_combine_in_ca (pixman_implementation_t *imp, UN8x4_MUL_UN8x4 (s, a); UN8x4_MUL_UN8 (s, da); + dest[i] = s; } } @@ -1299,31 +1299,33 @@ vmx_combine_in_reverse_ca (pixman_implementation_t *imp, vector unsigned int vdest, vsrc, vmask; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, mask_mask, src_mask, store_mask; - + COMPUTE_SHIFT_MASKC (dest, src, mask); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - + LOAD_VECTORSC (dest, src, mask); - + vdest = pix_multiply (vdest, pix_multiply (vmask, splat_alpha (vsrc))); - + STORE_VECTOR (dest); - + src += 4; dest += 4; mask += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t a = mask[i]; uint32_t d = dest[i]; uint32_t sa = ALPHA_8 (src[i]); + UN8x4_MUL_UN8 (a, sa); UN8x4_MUL_UN8x4 (d, a); + dest[i] = d; } } @@ -1364,8 +1366,10 @@ vmx_combine_out_ca (pixman_implementation_t *imp, uint32_t s = src[i]; uint32_t d = dest[i]; uint32_t da = ALPHA_8 (~d); + UN8x4_MUL_UN8x4 (s, a); UN8x4_MUL_UN8 (s, da); + dest[i] = s; } } @@ -1508,6 +1512,7 @@ vmx_combine_atop_reverse_ca (pixman_implementation_t *imp, UN8x4_MUL_UN8x4 (s, a); UN8x4_MUL_UN8 (a, sa); UN8x4_MUL_UN8x4_ADD_UN8x4_MUL_UN8 (d, a, s, da); + dest[i] = d; } } @@ -1524,27 +1529,26 @@ vmx_combine_xor_ca (pixman_implementation_t *imp, vector unsigned int vdest, vsrc, vmask; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, mask_mask, src_mask, store_mask; - + COMPUTE_SHIFT_MASKC (dest, src, mask); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORSC (dest, src, mask); - + vdest = pix_add_mul (vdest, negate (pix_multiply (vmask, splat_alpha (vsrc))), pix_multiply (vsrc, vmask), negate (splat_alpha (vdest))); - + STORE_VECTOR (dest); - + src += 4; dest += 4; mask += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t a = mask[i]; @@ -1552,10 +1556,11 @@ vmx_combine_xor_ca (pixman_implementation_t *imp, uint32_t d = dest[i]; uint32_t sa = ALPHA_8 (s); uint32_t da = ALPHA_8 (~d); - + UN8x4_MUL_UN8x4 (s, a); UN8x4_MUL_UN8 (a, sa); UN8x4_MUL_UN8x4_ADD_UN8x4_MUL_UN8 (d, ~a, s, da); + dest[i] = d; } } @@ -1572,32 +1577,32 @@ vmx_combine_add_ca (pixman_implementation_t *imp, vector unsigned int vdest, vsrc, vmask; vector unsigned char tmp1, tmp2, tmp3, tmp4, edges, dest_mask, mask_mask, src_mask, store_mask; - + COMPUTE_SHIFT_MASKC (dest, src, mask); - + /* printf ("%s\n",__PRETTY_FUNCTION__); */ for (i = width / 4; i > 0; i--) { - LOAD_VECTORSC (dest, src, mask); - + vdest = pix_add (pix_multiply (vsrc, vmask), vdest); - + STORE_VECTOR (dest); - + src += 4; dest += 4; mask += 4; } - + for (i = width % 4; --i >= 0;) { uint32_t a = mask[i]; uint32_t s = src[i]; uint32_t d = dest[i]; - + UN8x4_MUL_UN8x4 (s, a); UN8x4_ADD_UN8x4 (s, d); + dest[i] = s; } } @@ -1620,14 +1625,13 @@ vmx_composite_over_n_8888 (pixman_operator_t op, uint32_t src; uint32_t *dst_line, *dst; int dst_stride; - + _pixman_image_get_solid (src_image, dst_image, src); - + if (src >> 24 == 0) return; - + PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint32_t, dst_stride, dst_line, 1); - while (height--) { dst = dst_line; @@ -1654,14 +1658,14 @@ vmx_composite_over_n_0565 (pixman_operator_t op, uint16_t *dst_line, *dst; uint16_t w; int dst_stride; - + _pixman_image_get_solid (src_image, dst_image, src); - + if (src >> 24 == 0) return; - + PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1); - + while (height--) { dst = dst_line; @@ -1684,10 +1688,9 @@ _pixman_implementation_create_vmx (void) { pixman_implementation_t *fast = _pixman_implementation_create_fast_path (); pixman_implementation_t *imp = _pixman_implementation_create (fast); - + /* Set up function pointers */ - - /* SSE code patch for fbcompose.c */ + imp->combine_32[PIXMAN_OP_OVER] = vmx_combine_over_u; imp->combine_32[PIXMAN_OP_OVER_REVERSE] = vmx_combine_over_reverse_u; imp->combine_32[PIXMAN_OP_IN] = vmx_combine_in_u; @@ -1697,9 +1700,9 @@ _pixman_implementation_create_vmx (void) imp->combine_32[PIXMAN_OP_ATOP] = vmx_combine_atop_u; imp->combine_32[PIXMAN_OP_ATOP_REVERSE] = vmx_combine_atop_reverse_u; imp->combine_32[PIXMAN_OP_XOR] = vmx_combine_xor_u; - + imp->combine_32[PIXMAN_OP_ADD] = vmx_combine_add_u; - + imp->combine_32_ca[PIXMAN_OP_SRC] = vmx_combine_src_ca; imp->combine_32_ca[PIXMAN_OP_OVER] = vmx_combine_over_ca; imp->combine_32_ca[PIXMAN_OP_OVER_REVERSE] = vmx_combine_over_reverse_ca; @@ -1711,7 +1714,6 @@ _pixman_implementation_create_vmx (void) imp->combine_32_ca[PIXMAN_OP_ATOP_REVERSE] = vmx_combine_atop_reverse_ca; imp->combine_32_ca[PIXMAN_OP_XOR] = vmx_combine_xor_ca; imp->combine_32_ca[PIXMAN_OP_ADD] = vmx_combine_add_ca; - + return imp; } - -- 2.7.4