diff options
author | Heiko Schaefer <heikos@users.sourceforge.net> | 2003-01-09 19:28:43 +0000 |
---|---|---|
committer | Heiko Schaefer <heikos@users.sourceforge.net> | 2003-01-09 19:28:43 +0000 |
commit | 2f629cd14dfee9c000b100c41530e8831907677b (patch) | |
tree | cc9fed723e0e51315e456836b202802f86fa4f6c | |
parent | ab46a84ba585cf2644642e6cf491beca0ecaac56 (diff) | |
download | xine-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.c | 13 |
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" |