summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeiko Schaefer <heikos@users.sourceforge.net>2003-01-09 19:28:43 +0000
committerHeiko Schaefer <heikos@users.sourceforge.net>2003-01-09 19:28:43 +0000
commit2f629cd14dfee9c000b100c41530e8831907677b (patch)
treecc9fed723e0e51315e456836b202802f86fa4f6c
parentab46a84ba585cf2644642e6cf491beca0ecaac56 (diff)
downloadxine-lib-2f629cd14dfee9c000b100c41530e8831907677b.tar.gz
xine-lib-2f629cd14dfee9c000b100c41530e8831907677b.tar.bz2
memcpy tweaking by Jonathan Brown
CVS patchset: 3848 CVS date: 2003/01/09 19:28:43
-rw-r--r--src/xine-utils/memcpy.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/xine-utils/memcpy.c b/src/xine-utils/memcpy.c
index a04b9437f..c2f3b2a84 100644
--- a/src/xine-utils/memcpy.c
+++ b/src/xine-utils/memcpy.c
@@ -168,10 +168,15 @@ static void * sse_memcpy(void * to, const void * from, size_t len)
/* PREFETCH has effect even for MOVSB instruction ;) */
__asm__ __volatile__ (
" prefetchnta (%0)\n"
+ " prefetchnta 32(%0)\n"
" prefetchnta 64(%0)\n"
+ " prefetchnta 96(%0)\n"
" prefetchnta 128(%0)\n"
+ " prefetchnta 160(%0)\n"
" prefetchnta 192(%0)\n"
+ " prefetchnta 224(%0)\n"
" prefetchnta 256(%0)\n"
+ " prefetchnta 288(%0)\n"
: : "r" (from) );
if(len >= MIN_LEN)
@@ -193,6 +198,7 @@ static void * sse_memcpy(void * to, const void * from, size_t len)
{
__asm__ __volatile__ (
"prefetchnta 320(%0)\n"
+ "prefetchnta 352(%0)\n"
"movups (%0), %%xmm0\n"
"movups 16(%0), %%xmm1\n"
"movups 32(%0), %%xmm2\n"
@@ -215,6 +221,7 @@ static void * sse_memcpy(void * to, const void * from, size_t len)
{
__asm__ __volatile__ (
"prefetchnta 320(%0)\n"
+ "prefetchnta 352(%0)\n"
"movaps (%0), %%xmm0\n"
"movaps 16(%0), %%xmm1\n"
"movaps 32(%0), %%xmm2\n"
@@ -300,10 +307,15 @@ void * mmx2_memcpy(void * to, const void * from, size_t len)
/* PREFETCH has effect even for MOVSB instruction ;) */
__asm__ __volatile__ (
" prefetchnta (%0)\n"
+ " prefetchnta 32(%0)\n"
" prefetchnta 64(%0)\n"
+ " prefetchnta 96(%0)\n"
" prefetchnta 128(%0)\n"
+ " prefetchnta 160(%0)\n"
" prefetchnta 192(%0)\n"
+ " prefetchnta 224(%0)\n"
" prefetchnta 256(%0)\n"
+ " prefetchnta 288(%0)\n"
: : "r" (from) );
if(len >= MIN_LEN)
@@ -323,6 +335,7 @@ void * mmx2_memcpy(void * to, const void * from, size_t len)
{
__asm__ __volatile__ (
"prefetchnta 320(%0)\n"
+ "prefetchnta 352(%0)\n"
"movq (%0), %%mm0\n"
"movq 8(%0), %%mm1\n"
"movq 16(%0), %%mm2\n"