diff options
author | root <root@yeeloong.(none)> | 2012-02-23 15:42:35 -0500 |
---|---|---|
committer | root <root@yeeloong.(none)> | 2012-02-24 10:05:15 -0500 |
commit | 2a25cd0d990959e6176ffc69bc9069869b95764f (patch) | |
tree | 53e1fb84dedd85f1a0726b52988df57effdaaae0 | |
parent | ce6fb5ad9eb22508c8a4b1ea92a53d0f11b04439 (diff) |
wip commit to remove load8888/store8888 from combine funcsload-store
-rw-r--r-- | pixman/pixman-mmx.c | 80 |
1 files changed, 34 insertions, 46 deletions
diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c index e6335ce..484741e 100644 --- a/pixman/pixman-mmx.c +++ b/pixman/pixman-mmx.c @@ -517,23 +517,20 @@ pix_add_mul (__m64 x, __m64 a, __m64 y, __m64 b) /* --------------- MMX code patch for fbcompose.c --------------------- */ -static force_inline uint32_t +static force_inline __m64 combine (const uint32_t *src, const uint32_t *mask) { - uint32_t ssrc = *src; + __m64 vsrc = load8888 (src); if (mask) { __m64 m = load8888 (mask); - __m64 s = load8888 (&ssrc); m = expand_alpha (m); - s = pix_multiply (s, m); - - store8888 (&ssrc, s); + vsrc = pix_multiply (vsrc, m); } - return ssrc; + return vsrc; } static void @@ -548,20 +545,19 @@ mmx_combine_over_u (pixman_implementation_t *imp, while (dest < end) { - uint32_t ssrc = combine (src, mask); - uint32_t a = ssrc >> 24; + __m64 vsrc = combine (src, mask); +/* uint32_t a = ssrc >> 24; if (a == 0xff) { *dest = ssrc; } else if (ssrc) - { - __m64 s, sa; - s = load8888 (&ssrc); - sa = expand_alpha (s); - store8888 (dest, over (s, sa, load8888 (dest))); - } + {*/ + __m64 sa; + sa = expand_alpha (vsrc); + store8888 (dest, over (vsrc, sa, load8888 (dest))); +// } ++dest; ++src; @@ -584,11 +580,11 @@ mmx_combine_over_reverse_u (pixman_implementation_t *imp, while (dest < end) { __m64 d, da; - uint32_t s = combine (src, mask); + __m64 vsrc = combine (src, mask); d = load8888 (dest); da = expand_alpha (d); - store8888 (dest, over (d, da, load8888 (&s))); + store8888 (dest, over (d, da, vsrc)); ++dest; ++src; @@ -611,12 +607,11 @@ mmx_combine_in_u (pixman_implementation_t *imp, while (dest < end) { __m64 x, a; - uint32_t ssrc = combine (src, mask); + __m64 vsrc = combine (src, mask); - x = load8888 (&ssrc); a = load8888 (dest); a = expand_alpha (a); - x = pix_multiply (x, a); + x = pix_multiply (vsrc, a); store8888 (dest, x); @@ -641,11 +636,10 @@ mmx_combine_in_reverse_u (pixman_implementation_t *imp, while (dest < end) { __m64 x, a; - uint32_t ssrc = combine (src, mask); + __m64 vsrc = combine (src, mask); x = load8888 (dest); - a = load8888 (&ssrc); - a = expand_alpha (a); + a = expand_alpha (vsrc); x = pix_multiply (x, a); store8888 (dest, x); @@ -670,13 +664,12 @@ mmx_combine_out_u (pixman_implementation_t *imp, while (dest < end) { __m64 x, a; - uint32_t ssrc = combine (src, mask); + __m64 vsrc = combine (src, mask); - x = load8888 (&ssrc); a = load8888 (dest); a = expand_alpha (a); a = negate (a); - x = pix_multiply (x, a); + x = pix_multiply (vsrc, a); store8888 (dest, x); ++dest; @@ -700,11 +693,10 @@ mmx_combine_out_reverse_u (pixman_implementation_t *imp, while (dest < end) { __m64 x, a; - uint32_t ssrc = combine (src, mask); + __m64 vsrc = combine (src, mask); x = load8888 (dest); - a = load8888 (&ssrc); - a = expand_alpha (a); + a = expand_alpha (vsrc); a = negate (a); x = pix_multiply (x, a); @@ -731,14 +723,13 @@ mmx_combine_atop_u (pixman_implementation_t *imp, while (dest < end) { __m64 s, da, d, sia; - uint32_t ssrc = combine (src, mask); + __m64 vsrc = combine (src, mask); - s = load8888 (&ssrc); d = load8888 (dest); - sia = expand_alpha (s); + sia = expand_alpha (vsrc); sia = negate (sia); da = expand_alpha (d); - s = pix_add_mul (s, da, d, sia); + s = pix_add_mul (vsrc, da, d, sia); store8888 (dest, s); ++dest; @@ -764,14 +755,13 @@ mmx_combine_atop_reverse_u (pixman_implementation_t *imp, while (dest < end) { __m64 s, dia, d, sa; - uint32_t ssrc = combine (src, mask); + __m64 vsrc = combine (src, mask); - s = load8888 (&ssrc); d = load8888 (dest); - sa = expand_alpha (s); + sa = expand_alpha (vsrc); dia = expand_alpha (d); dia = negate (dia); - s = pix_add_mul (s, dia, d, sa); + s = pix_add_mul (vsrc, dia, d, sa); store8888 (dest, s); ++dest; @@ -795,15 +785,14 @@ mmx_combine_xor_u (pixman_implementation_t *imp, while (dest < end) { __m64 s, dia, d, sia; - uint32_t ssrc = combine (src, mask); + __m64 vsrc = combine (src, mask); - s = load8888 (&ssrc); d = load8888 (dest); - sia = expand_alpha (s); + sia = expand_alpha (vsrc); dia = expand_alpha (d); sia = negate (sia); dia = negate (dia); - s = pix_add_mul (s, dia, d, sia); + s = pix_add_mul (vsrc, dia, d, sia); store8888 (dest, s); ++dest; @@ -827,12 +816,11 @@ mmx_combine_add_u (pixman_implementation_t *imp, while (dest < end) { __m64 s, d; - uint32_t ssrc = combine (src, mask); + __m64 vsrc = combine (src, mask); - s = load8888 (&ssrc); d = load8888 (dest); - s = pix_add (s, d); - store8888 (dest, s); + s = pix_add (vsrc, d); + store (dest, s); ++dest; ++src; @@ -3271,7 +3259,7 @@ _pixman_implementation_create_mmx (pixman_implementation_t *fallback) imp->combine_32[PIXMAN_OP_ATOP_REVERSE] = mmx_combine_atop_reverse_u; imp->combine_32[PIXMAN_OP_XOR] = mmx_combine_xor_u; imp->combine_32[PIXMAN_OP_ADD] = mmx_combine_add_u; - imp->combine_32[PIXMAN_OP_SATURATE] = mmx_combine_saturate_u; +// imp->combine_32[PIXMAN_OP_SATURATE] = mmx_combine_saturate_u; imp->combine_32_ca[PIXMAN_OP_SRC] = mmx_combine_src_ca; imp->combine_32_ca[PIXMAN_OP_OVER] = mmx_combine_over_ca; |