From: Matt Turner <[email protected]>

Signed-off-by: Matt Turner <[email protected]>
---
 pixman/pixman-mmx.c |   88 ++------------------------------------------------
 1 files changed, 4 insertions(+), 84 deletions(-)

diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
index 697ec4c..71fa18e 100644
--- a/pixman/pixman-mmx.c
+++ b/pixman/pixman-mmx.c
@@ -1795,7 +1795,7 @@ pixman_fill_mmx (uint32_t *bits,
     uint32_t byte_width;
     uint8_t     *byte_line;
 
-#ifdef __GNUC__
+#if defined __GNUC__ && defined USE_MMX
     __m64 v1, v2, v3, v4, v5, v6, v7;
 #endif
 
@@ -1829,7 +1829,7 @@ pixman_fill_mmx (uint32_t *bits,
     fill = ((uint64_t)xor << 32) | xor;
     vfill = to_m64 (fill);
 
-#ifdef __GNUC__
+#if defined __GNUC__ && defined USE_MMX
     __asm__ (
         "movq          %7,     %0\n"
         "movq          %7,     %1\n"
@@ -1875,7 +1875,7 @@ pixman_fill_mmx (uint32_t *bits,
 
        while (w >= 64)
        {
-#ifdef __GNUC__
+#if defined __GNUC__ && defined USE_MMX
            __asm__ (
                "movq   %1,       (%0)\n"
                "movq   %2,      8(%0)\n"
@@ -2844,87 +2844,7 @@ pixman_blt_mmx (uint32_t *src_bits,
        dst_bytes += dst_stride;
        w = byte_width;
 
-       while (w >= 2 && ((unsigned long)d & 3))
-       {
-           *(uint16_t *)d = *(uint16_t *)s;
-           w -= 2;
-           s += 2;
-           d += 2;
-       }
-
-       while (w >= 4 && ((unsigned long)d & 7))
-       {
-           *(uint32_t *)d = *(uint32_t *)s;
-
-           w -= 4;
-           s += 4;
-           d += 4;
-       }
-
-       while (w >= 64)
-       {
-#if defined (__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
-           __asm__ (
-               "movq     (%1),   %%mm0\n"
-               "movq    8(%1),   %%mm1\n"
-               "movq   16(%1),   %%mm2\n"
-               "movq   24(%1),   %%mm3\n"
-               "movq   32(%1),   %%mm4\n"
-               "movq   40(%1),   %%mm5\n"
-               "movq   48(%1),   %%mm6\n"
-               "movq   56(%1),   %%mm7\n"
-
-               "movq   %%mm0,    (%0)\n"
-               "movq   %%mm1,   8(%0)\n"
-               "movq   %%mm2,  16(%0)\n"
-               "movq   %%mm3,  24(%0)\n"
-               "movq   %%mm4,  32(%0)\n"
-               "movq   %%mm5,  40(%0)\n"
-               "movq   %%mm6,  48(%0)\n"
-               "movq   %%mm7,  56(%0)\n"
-               :
-               : "r" (d), "r" (s)
-               : "memory",
-                 "%mm0", "%mm1", "%mm2", "%mm3",
-                 "%mm4", "%mm5", "%mm6", "%mm7");
-#else
-           __m64 v0 = *(__m64 *)(s + 0);
-           __m64 v1 = *(__m64 *)(s + 8);
-           __m64 v2 = *(__m64 *)(s + 16);
-           __m64 v3 = *(__m64 *)(s + 24);
-           __m64 v4 = *(__m64 *)(s + 32);
-           __m64 v5 = *(__m64 *)(s + 40);
-           __m64 v6 = *(__m64 *)(s + 48);
-           __m64 v7 = *(__m64 *)(s + 56);
-           *(__m64 *)(d + 0)  = v0;
-           *(__m64 *)(d + 8)  = v1;
-           *(__m64 *)(d + 16) = v2;
-           *(__m64 *)(d + 24) = v3;
-           *(__m64 *)(d + 32) = v4;
-           *(__m64 *)(d + 40) = v5;
-           *(__m64 *)(d + 48) = v6;
-           *(__m64 *)(d + 56) = v7;
-#endif
-
-           w -= 64;
-           s += 64;
-           d += 64;
-       }
-       while (w >= 4)
-       {
-           *(uint32_t *)d = *(uint32_t *)s;
-
-           w -= 4;
-           s += 4;
-           d += 4;
-       }
-       if (w >= 2)
-       {
-           *(uint16_t *)d = *(uint16_t *)s;
-           w -= 2;
-           s += 2;
-           d += 2;
-       }
+       memcpy(d, s, w);
     }
 
     _mm_empty ();
-- 
1.7.3.4

_______________________________________________
Pixman mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pixman

Reply via email to