about summary refs log tree commit diff
path: root/sysdeps/powerpc/strchr.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/powerpc/strchr.S')
-rw-r--r--sysdeps/powerpc/strchr.S96
1 files changed, 48 insertions, 48 deletions
diff --git a/sysdeps/powerpc/strchr.S b/sysdeps/powerpc/strchr.S
index 156d4d155c..5367a5a4fe 100644
--- a/sysdeps/powerpc/strchr.S
+++ b/sysdeps/powerpc/strchr.S
@@ -1,5 +1,5 @@
 /* Optimized strchr 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
@@ -35,76 +35,76 @@
    r11:	a mask with the bits to ignore set to 0
    r12:	a temporary  */
 ENTRY(strchr)
-	rlwimi %r4,%r4,8,16,23
-	li   %r11,-1
-	rlwimi %r4,%r4,16,0,15
-	lis  %r6,0xfeff
-	lis  %r7,0x7f7f
-	clrrwi %r8,%r3,2
-	addi %r7,%r7,0x7f7f
-	addi %r6,%r6,0xfffffeff
-	rlwinm %r10,%r3,3,27,28
+	rlwimi r4,r4,8,16,23
+	li   r11,-1
+	rlwimi r4,r4,16,0,15
+	lis  r6,0xfeff
+	lis  r7,0x7f7f
+	clrrwi r8,r3,2
+	addi r7,r7,0x7f7f
+	addi r6,r6,0xfffffeff
+	rlwinm r10,r3,3,27,28
 /* Test the first (partial?) word.  */
-	lwz  %r5,0(%r8)
-	srw  %r11,%r11,%r10
-	orc  %r5,%r5,%r11
-	add  %r0,%r6,%r5
-	nor  %r9,%r7,%r5
-	and. %r0,%r0,%r9
-	xor  %r12,%r4,%r5
-	orc  %r12,%r12,%r11
+	lwz  r5,0(r8)
+	srw  r11,r11,r10
+	orc  r5,r5,r11
+	add  r0,r6,r5
+	nor  r9,r7,r5
+	and. r0,r0,r9
+	xor  r12,r4,r5
+	orc  r12,r12,r11
 	b    L(loopentry)
 
 /* The loop.  */
 
-L(loop):lwzu %r5,4(%r8)
-	and. %r0,%r0,%r9
+L(loop):lwzu r5,4(r8)
+	and. r0,r0,r9
 /* Test for 0.  */
-	add  %r0,%r6,%r5
-	nor  %r9,%r7,%r5
+	add  r0,r6,r5
+	nor  r9,r7,r5
 	bne  L(foundit)
-	and. %r0,%r0,%r9
+	and. r0,r0,r9
 /* Start test for the bytes we're looking for.  */
-	xor  %r12,%r4,%r5
+	xor  r12,r4,r5
 L(loopentry):
-	add  %r0,%r6,%r12
-	nor  %r9,%r7,%r12
+	add  r0,r6,r12
+	nor  r9,r7,r12
 	beq  L(loop)
 /* There is a zero byte in the word, but may also be a matching byte (either
    before or after the zero byte).  In fact, we may be looking for a
    zero byte, in which case we return a match.  We guess that this hasn't
    happened, though.  */
 L(missed):
-	and. %r0,%r0,%r9
-	li   %r3,0
+	and. r0,r0,r9
+	li   r3,0
 	beqlr
 /* It did happen. Decide which one was first...
    I'm not sure if this is actually faster than a sequence of
    rotates, compares, and branches (we use it anyway because it's shorter).  */
-	and  %r6,%r7,%r5
-	or   %r11,%r7,%r5
-	and  %r0,%r7,%r12
-	or   %r10,%r7,%r12
-	add  %r6,%r6,%r7
-	add  %r0,%r0,%r7
-	nor  %r5,%r11,%r6
-	nor  %r9,%r10,%r0
-	cmplw %r5,%r9
+	and  r6,r7,r5
+	or   r11,r7,r5
+	and  r0,r7,r12
+	or   r10,r7,r12
+	add  r6,r6,r7
+	add  r0,r0,r7
+	nor  r5,r11,r6
+	nor  r9,r10,r0
+	cmplw r5,r9
 	bgtlr
-	cntlzw %r4,%r9
-	srwi %r4,%r4,3
-	add  %r3,%r8,%r4
+	cntlzw r4,r9
+	srwi r4,r4,3
+	add  r3,r8,r4
 	blr
 
 L(foundit):
-	and  %r0,%r7,%r12
-	or   %r10,%r7,%r12
-	add  %r0,%r0,%r7
-	nor  %r9,%r10,%r0
-	cntlzw %r4,%r9
-	subi %r8,%r8,4
-	srwi %r4,%r4,3
-	add  %r3,%r8,%r4
+	and  r0,r7,r12
+	or   r10,r7,r12
+	add  r0,r0,r7
+	nor  r9,r10,r0
+	cntlzw r4,r9
+	subi r8,r8,4
+	srwi r4,r4,3
+	add  r3,r8,r4
 	blr
 END(strchr)