summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root@yeeloong.(none)>2012-02-23 15:42:35 -0500
committerroot <root@yeeloong.(none)>2012-02-24 10:05:15 -0500
commit2a25cd0d990959e6176ffc69bc9069869b95764f (patch)
tree53e1fb84dedd85f1a0726b52988df57effdaaae0
parentce6fb5ad9eb22508c8a4b1ea92a53d0f11b04439 (diff)
wip commit to remove load8888/store8888 from combine funcsload-store
-rw-r--r--pixman/pixman-mmx.c80
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;