Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: src/lib/libc/arch/arm/string



Module Name:    src
Committed By:   scw
Date:           Tue Oct 14 07:51:45 UTC 2003

Modified Files:
        src/lib/libc/arch/arm/string: Makefile.inc bcopy.S bzero.S memcmp.S
            memcpy.S memmove.S memset.S
Added Files:
        src/lib/libc/arch/arm/string: memcpy_arm.S memcpy_xscale.S
Removed Files:
        src/lib/libc/arch/arm/string: _memcpy.S

Log Message:
Xscale-optimised mem* routines. Contributed by Wasabi Systems.
(Note: memcmp/memset improvements also benefit non-Xscale).

memcmp()  - Compare 32-bits at a time if possible. Special-case 6-byte
            comparisons, for the benefit of the network stack.

memset()  - More loop unrolling, plus use of 'strd' instruction,
bzero()     results in > 100% speedup on Xscale.

memcpy()  - Big-endian support, unrolled loops, 'strd/pld', plus special-
            cases for very common length/alignment combinations.
            Benchmarks show ~50% improvment on Xscale.

memmove() - Big-endian support. Use fast memcpy(), above, if the regions
bcopy()     don't overlap. Otherwise unchanged

XXX: The Xscale optimisations are not enabled by default, unless /etc/mk.conf
XXX: has the right compiler options. The intention is to pull them in via
XXX: something like libxscale.so, selected at runtime by ld.so.conf.
XXX: (Big-endian support is not affected by this).


To generate a diff of this commit:
cvs rdiff -r1.5 -r1.6 src/lib/libc/arch/arm/string/Makefile.inc
cvs rdiff -r1.6 -r0 src/lib/libc/arch/arm/string/_memcpy.S
cvs rdiff -r1.2 -r1.3 src/lib/libc/arch/arm/string/bcopy.S \
    src/lib/libc/arch/arm/string/bzero.S \
    src/lib/libc/arch/arm/string/memcmp.S
cvs rdiff -r1.3 -r1.4 src/lib/libc/arch/arm/string/memcpy.S \
    src/lib/libc/arch/arm/string/memmove.S \
    src/lib/libc/arch/arm/string/memset.S
cvs rdiff -r0 -r1.1 src/lib/libc/arch/arm/string/memcpy_arm.S \
    src/lib/libc/arch/arm/string/memcpy_xscale.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index