bionic/libc
Christopher Ferris 185ce72d00 Update to latest cortexa15 memcpy code.
This uses the new code original submitted as memcpy.a15.S as
the base. However, the old code handled unaligned src/dst better
so that was spliced in. I optimized the original unaligned code by
removing a few unnecessary instructions. I optimized the a15 code by
rewriting the pre and post code. I also modified the main loop to add
a pld so that larger copies would not stall waiting for memory.

Test cases for the new memcpy:

- Copy all sized values from 0 to 1024 bytes, using whatever alignment
  is returned by malloc.
For each alignment case described below, the test copied from 0 to 128
bytes.
- Src and dst pointers are both aligned to the same value, starting
  at one going through every power of two up to and including 128.
- Src aligned to double word boundary, dst aligned to word boundary.
- Src aligned to word boundary, dst aligned to double word boundary.
- Src aligned to 16 bit boundary, dst aligned to word boundary.
- Src aligned to word boundary, dst aligned to 16 byte boundary.
- Src aligned to word boundary, dst aligned to 1 byte from a word
  boundary.
- Src aligned to word boundary, dst aligned to 2 bytes from a word
  boundary.
- Src aligned to word boundary, dst aligned to 3 bytes from a word
  boundary.
- Src aligned to 1 byte from a word boundary, dst aligned to a word
  boundary.
- Src aligned to 2 bytes from a word boundary, dst aligned to a word
  boundary.
- Src aligned to 3 bytes from a word boundary, dst aligned to a word
  boundary.

Cases to verify the unaligned source code properly aligns to a 16 bit
boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
  4 + 128 bit boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
  8 + 128 bit boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
  12 + 128 bit boundary.
- Src aligned to 1 byte from a 128 bit boundary, dst aligned to
  16 + 128 bit boundary.

In all cases, a two byte fencepost was placed at the end of the
destination to verify that only the requested number of bytes were copied.

Bug: 8005082

Merge from internal master.

(cherry-picked from commit 21ede92d79)

Change-Id: Ief70c9e6dc8c6473ae245b6570b2c266fed9618c
2013-04-08 18:13:35 -07:00
..
arch-arm Update to latest cortexa15 memcpy code. 2013-04-08 18:13:35 -07:00
arch-mips Replace unnecessary MIPS uses of <sys/linux-syscalls.h> with <asm/unistd.h>. 2013-03-21 22:52:25 -07:00
arch-x86 Replace unnecessary x86 uses of <sys/linux-syscalls.h> with <asm/unistd.h>. 2013-03-21 22:48:18 -07:00
bionic Make abort messages available to debuggerd. 2013-04-05 11:24:19 -07:00
include Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a 2013-04-03 11:10:37 -07:00
kernel Update processed linux/fs.h header file 2013-03-27 16:05:22 -07:00
netbsd Update getaddrinfo to RFC6724 2013-04-01 18:04:25 -07:00
private Make abort messages available to debuggerd. 2013-04-05 11:24:19 -07:00
stdio Define DEFFILEMODE and friends 2012-11-29 11:53:33 -08:00
stdlib stdlib: atexit: include <sys/cdefs.h> 2013-02-16 21:23:27 +05:30
string Drop magic number in strrchr and strchr 2013-03-22 10:18:09 +08:00
tools Fix the SYSCALLS.TXT documentation and remove a dead script. 2013-04-03 10:08:09 -07:00
tzcode Don't search off the end of the index for bad Olson ids. 2013-03-14 14:38:08 -07:00
unistd Upgrade to current NetBSD popen/pclose. 2013-03-06 16:20:55 -08:00
upstream-dlmalloc Fix build warning of initialization but no use. 2012-09-06 09:59:13 -07:00
upstream-freebsd Regenerate NOTICE files. 2013-03-07 11:51:10 -08:00
upstream-netbsd Upgrade to current NetBSD popen/pclose. 2013-03-06 16:20:55 -08:00
wchar Switch to upstream-freebsd for the unmolested wchar code. 2013-03-01 18:35:56 -08:00
zoneinfo Fix a bug in ZoneCompactor that meant the zonetab offset was wrong. 2013-03-14 17:10:24 -07:00
Android.mk Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a 2013-04-03 11:10:37 -07:00
CAVEATS auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
MODULE_LICENSE_BSD auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
NOTICE Regenerate NOTICE files. 2013-03-07 11:51:10 -08:00
SYSCALLS.TXT Fix the SYSCALLS.TXT documentation and remove a dead script. 2013-04-03 10:08:09 -07:00