[PATCH 4/4] [Powerpc] tune/optimize memmove/wordcopy. Call memcpy when appropriate.

Will Schmidt will_schmidt@vnet.ibm.com
Tue Apr 3 18:10:00 GMT 2012


[Powerpc] tune/optimize memmove/wordcopy. Call memcpy when appropriate.

Call the optimized __builtin_memcpy function if our memmove memory ranges do
not overlap.  This allows us to take advantage of the powerpc optimized memcpy
code, and gives a healthy throughput boost.

2012-04-03  Will Schmidt <will_schmidt@vnet.ibm.com>

	* sysdeps/powerpc/memmove.c: Call __builtin_memcopy() when source and
	destination ranges are known not to overlap.
---
 sysdeps/powerpc/memmove.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/sysdeps/powerpc/memmove.c b/sysdeps/powerpc/memmove.c
index c74e556..80de8ac 100644
--- a/sysdeps/powerpc/memmove.c
+++ b/sysdeps/powerpc/memmove.c
@@ -50,6 +50,10 @@ MEMMOVE (a1, a2, len)
   unsigned long int dstp = (long int) dest;
   unsigned long int srcp = (long int) src;
 
+  /* If there is no overlap between ranges, call the builtin memcpy.  */
+  if ( (dstp >= (srcp + len)) || (srcp > (dstp + len)) )
+    return __builtin_memcpy (dest, src, len);
+
   /* This test makes the forward copying code be used whenever possible.
      Reduces the working set.  */
   if (dstp - srcp >= len)	/* *Unsigned* compare!  */



More information about the Libc-alpha mailing list