diff options
author | Ulrich Drepper <drepper@redhat.com> | 1999-10-11 22:31:36 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1999-10-11 22:31:36 +0000 |
commit | 217eb19b6f28429aa02792764bfd7b9f51743be2 (patch) | |
tree | 8889fa7ed4cc9b561e2fc8372b604cbd55eb2402 /sysdeps/powerpc/strlen.S | |
parent | df08cc56eb0a050bd1d7cf569d78d4f9d2a20964 (diff) | |
download | glibc-217eb19b6f28429aa02792764bfd7b9f51743be2.zip glibc-217eb19b6f28429aa02792764bfd7b9f51743be2.tar.gz glibc-217eb19b6f28429aa02792764bfd7b9f51743be2.tar.bz2 |
Update.
1999-10-11 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/powerpc/Makefile [math] (libm-support): Remove t_sqrt.
* sysdeps/powerpc/e_sqrt.c: Moved to...
* sysdeps/powerpc/fpu/e_sqrt.c: ...here.
* sysdeps/powerpc/e_sqrtf.c: Moved to...
* sysdeps/powerpc/fpu/e_sqrtf.c: ...here.
* sysdeps/powerpc/submul_1.S: Adjust asm syntax.
* sysdeps/powerpc/sub_n.S: Likewise.
* sysdeps/powerpc/strlen.S: Likewise.
* sysdeps/powerpc/strcpy.S: Likewise.
* sysdeps/powerpc/strcmp.S: Likewise.
* sysdeps/powerpc/strchr.S: Likewise.
* sysdeps/powerpc/stpcpy.S: Likewise.
* sysdeps/powerpc/setjmp.S: Likewise.
* sysdeps/powerpc/rshift.S: Likewise.
* sysdeps/powerpc/ppc-mcount.S: Likewise.
* sysdeps/powerpc/mul_1.S: Likewise.
* sysdeps/powerpc/memset.S: Likewise.
* sysdeps/powerpc/lshift.S: Likewise.
* sysdeps/powerpc/dl-start.S: Likewise.
* sysdeps/powerpc/bzero.S: Likewise.
* sysdeps/powerpc/bsd-setjmp.S: Likewise.
* sysdeps/powerpc/bsd-_setjmp.S: Likewise.
* sysdeps/powerpc/addmul_1.S: Likewise.
* sysdeps/powerpc/add_n.S: Likewise.
* sysdeps/powerpc/__longjmp.S: Likewise.
* sysdeps/powerpc/elf/start.S: Likewise.
1999-10-11 Cristian Gafton <gafton@redhat.com>
* sysdeps/unix/sysv/linux/alpha/bits/sigaction.h: Declare
Diffstat (limited to 'sysdeps/powerpc/strlen.S')
-rw-r--r-- | sysdeps/powerpc/strlen.S | 80 |
1 files changed, 40 insertions, 40 deletions
diff --git a/sysdeps/powerpc/strlen.S b/sysdeps/powerpc/strlen.S index dc6660b..b847ee4 100644 --- a/sysdeps/powerpc/strlen.S +++ b/sysdeps/powerpc/strlen.S @@ -1,5 +1,5 @@ /* Optimized strlen implementation for PowerPC. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -77,68 +77,68 @@ ENTRY(strlen) start at a word boundary. r8 holds the 'current' word. r9-12 are temporaries. r0 is used as a temporary and for discarded results. */ - clrrwi %r4,%r3,2 - lis %r7,0x7f7f - rlwinm %r5,%r3,3,27,28 - lwz %r8,0(%r4) - li %r9,-1 - addi %r7,%r7,0x7f7f + clrrwi r4,r3,2 + lis r7,0x7f7f + rlwinm r5,r3,3,27,28 + lwz r8,0(r4) + li r9,-1 + addi r7,r7,0x7f7f /* That's the setup done, now do the first pair of words. We make an exception and use method (2) on the first two words, to reduce overhead. */ - srw %r9,%r9,%r5 - and %r0,%r7,%r8 - or %r10,%r7,%r8 - add %r0,%r0,%r7 - nor %r0,%r10,%r0 - and. %r8,%r0,%r9 - mtcrf 0x01,%r3 + srw r9,r9,r5 + and r0,r7,r8 + or r10,r7,r8 + add r0,r0,r7 + nor r0,r10,r0 + and. r8,r0,r9 + mtcrf 0x01,r3 bne L(done0) - lis %r6,0xfeff - addi %r6,%r6,-0x101 + lis r6,0xfeff + addi r6,r6,-0x101 /* Are we now aligned to a doubleword boundary? */ bt 29,L(loop) /* Handle second word of pair. */ - lwzu %r8,4(%r4) - and %r0,%r7,%r8 - or %r10,%r7,%r8 - add %r0,%r0,%r7 - nor. %r8,%r10,%r0 + lwzu r8,4(r4) + and r0,r7,r8 + or r10,r7,r8 + add r0,r0,r7 + nor. r8,r10,r0 bne L(done0) /* The loop. */ L(loop): - lwz %r8,4(%r4) - lwzu %r9,8(%r4) - add %r0,%r6,%r8 - nor %r10,%r7,%r8 - and. %r0,%r0,%r10 - add %r11,%r6,%r9 - nor %r12,%r7,%r9 + lwz r8,4(r4) + lwzu r9,8(r4) + add r0,r6,r8 + nor r10,r7,r8 + and. r0,r0,r10 + add r11,r6,r9 + nor r12,r7,r9 bne L(done1) - and. %r0,%r11,%r12 + and. r0,r11,r12 beq L(loop) - and %r0,%r7,%r9 - add %r0,%r0,%r7 - andc %r8,%r12,%r0 + and r0,r7,r9 + add r0,r0,r7 + andc r8,r12,r0 b L(done0) L(done1): - and %r0,%r7,%r8 - subi %r4,%r4,4 - add %r0,%r0,%r7 - andc %r8,%r10,%r0 + and r0,r7,r8 + subi r4,r4,4 + add r0,r0,r7 + andc r8,r10,r0 /* When we get to here, r4 points to the first word in the string that contains a zero byte, and the most significant set bit in r8 is in that byte. */ L(done0): - cntlzw %r11,%r8 - subf %r0,%r3,%r4 - srwi %r11,%r11,3 - add %r3,%r0,%r11 + cntlzw r11,r8 + subf r0,r3,r4 + srwi r11,r11,3 + add r3,r0,r11 blr END(strlen) |