diff options
Diffstat (limited to 'fb/fbmmx.c')
-rw-r--r-- | fb/fbmmx.c | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/fb/fbmmx.c b/fb/fbmmx.c index 73c715795..db06ea208 100644 --- a/fb/fbmmx.c +++ b/fb/fbmmx.c @@ -2235,14 +2235,30 @@ fbCopyAreammx (DrawablePtr pSrc, while (w >= 64) { - *(__m64 *)(d + 0) = *(__m64 *)(s + 0); - *(__m64 *)(d + 8) = *(__m64 *)(s + 8); - *(__m64 *)(d + 16) = *(__m64 *)(s + 16); - *(__m64 *)(d + 24) = *(__m64 *)(s + 24); - *(__m64 *)(d + 32) = *(__m64 *)(s + 32); - *(__m64 *)(d + 40) = *(__m64 *)(s + 40); - *(__m64 *)(d + 48) = *(__m64 *)(s + 48); - *(__m64 *)(d + 56) = *(__m64 *)(s + 56); + __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"); + w -= 64; s += 64; d += 64; |