about summary refs log tree commit diff
path: root/sysdeps/sparc/sparc32/memchr.S
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2006-03-06 01:34:09 +0000
committerRoland McGrath <roland@gnu.org>2006-03-06 01:34:09 +0000
commit043cee3700d01624d694d8e1afc76a666309f89c (patch)
treeaa2f8a2b421429ca84eba888fefd946df6e3d669 /sysdeps/sparc/sparc32/memchr.S
parenta26c855c73bf2329496f9b74535045c22c92a12d (diff)
downloadglibc-043cee3700d01624d694d8e1afc76a666309f89c.tar.gz
glibc-043cee3700d01624d694d8e1afc76a666309f89c.tar.xz
glibc-043cee3700d01624d694d8e1afc76a666309f89c.zip
* shlib-versions: Use sparc64.*- for CPU patterns.
Diffstat (limited to 'sysdeps/sparc/sparc32/memchr.S')
-rw-r--r--sysdeps/sparc/sparc32/memchr.S21
1 files changed, 10 insertions, 11 deletions
diff --git a/sysdeps/sparc/sparc32/memchr.S b/sysdeps/sparc/sparc32/memchr.S
index 0ca56ccdd9..fcd98315db 100644
--- a/sysdeps/sparc/sparc32/memchr.S
+++ b/sysdeps/sparc/sparc32/memchr.S
@@ -32,7 +32,15 @@
 
 	.text
 	.align		4
-0:	cmp		%o2, 0
+ENTRY(__memchr)
+	andcc		%o1, 0xff, %o1
+	sll		%o1, 8, %g6
+	andcc		%o0, 3, %g0
+	or		%o1, %g6, %g6
+	sll		%g6, 16, %o3
+	be		10f
+	 or		%o3, %g6, %g2
+	cmp		%o2, 0
 	be		9f
 	 sethi		%hi(0x80808080), %o4
 	ldub		[%o0], %g4
@@ -64,16 +72,7 @@
 	 clr		%o0
 1:	retl
 	 sub		%o0, 1, %o0
-
-ENTRY(__memchr)
-	andcc		%o1, 0xff, %o1
-	sll		%o1, 8, %g6
-	andcc		%o0, 3, %g0
-	or		%o1, %g6, %g6
-	sll		%g6, 16, %o3
-	bne		0b
-	 or		%o3, %g6, %g2
-	sethi		%hi(0x80808080), %o4
+10:	sethi		%hi(0x80808080), %o4
 	or		%o4, %lo(0x80808080), %o3
 4:	sethi		%hi(0x01010101), %o5
 5:	and		%o2, 3, %g1