Wed Mar 22 16:28:46 2006 Søren Sandmann <sandmann@redhat.com>
Use inline assembly for copy area, since gcc doesn't generate movq instructions.
This commit is contained in:
parent
5b3084c64f
commit
5449634e3c
|
@ -1,3 +1,8 @@
|
|||
Wed Mar 22 16:28:46 2006 Søren Sandmann <sandmann@redhat.com>
|
||||
|
||||
* fb/fbmmx.c (fbCopyAreammx): Use inline assembly for copy area,
|
||||
since gcc doesn't generate movq instructions.
|
||||
|
||||
Wed Mar 22 16:05:09 2006 Søren Sandmann <sandmann@redhat.com>
|
||||
|
||||
* fb/fbmmx.c (fbSolidFillmmx): Use inline assembly for solid
|
||||
|
|
32
fb/fbmmx.c
32
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;
|
||||
|
|
Loading…
Reference in New Issue