about summary refs log tree commit diff
path: root/sysdeps/sparc/sparc64/strchr.S
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-05-18 10:00:20 +0000
committerUlrich Drepper <drepper@redhat.com>1999-05-18 10:00:20 +0000
commit407d26b7053a659c5997cb44e85824647139b884 (patch)
tree7f442602b80281f7479a20364340cef058575c1e /sysdeps/sparc/sparc64/strchr.S
parent1acf7665c7b5f1d65b322de82065c4eaec623afe (diff)
downloadglibc-407d26b7053a659c5997cb44e85824647139b884.tar.gz
glibc-407d26b7053a659c5997cb44e85824647139b884.tar.xz
glibc-407d26b7053a659c5997cb44e85824647139b884.zip
Update.
1999-05-18  Jakub Jelinek  <jj@ultra.linux.cz>

	* sysdeps/sparc/sparc64/rawmemchr.S: New file.
	* sysdeps/sparc/sparc32/sparcv9/rawmemchr.S: New file.

	* sysdeps/sparc/sparc64/memchr.S: Fix if the second argument
	contains garbage in bits 8-63.
	* sysdeps/sparc/sparc64/memset.S: Ditto.
	* sysdeps/sparc/sparc64/strchr.S: Ditto.
Diffstat (limited to 'sysdeps/sparc/sparc64/strchr.S')
-rw-r--r--sysdeps/sparc/sparc64/strchr.S105
1 files changed, 52 insertions, 53 deletions
diff --git a/sysdeps/sparc/sparc64/strchr.S b/sysdeps/sparc/sparc64/strchr.S
index 8324c4c8d6..b017640914 100644
--- a/sysdeps/sparc/sparc64/strchr.S
+++ b/sysdeps/sparc/sparc64/strchr.S
@@ -46,34 +46,32 @@
 	.text
 	.align		32
 ENTRY(strchr)
-#ifndef USE_BPR
-	srl		%o1, 0, %o1			/* IEU0		Group		*/
-#endif
-	brz,pn		%o1, 17f			/* CTI+IEU1	Group		*/
-	 sllx		%o1, 8, %g3			/* IEU0				*/
-	sethi		%hi(0x01010101), %g1		/* IEU0		Group		*/
-	or		%g3, %o1, %g3			/* IEU1				*/
+	andcc		%o1, 0xff, %o1			/* IEU1		Group		*/
+	be,pn		%icc, 17f			/* CTI				*/
+	 sllx		%o1, 8, %g3			/* IEU0		Group		*/
+	sethi		%hi(0x01010101), %g1		/* IEU1				*/
 
+	or		%g3, %o1, %g3			/* IEU0		Group		*/
 	ldub		[%o0], %o3			/* Load				*/
 	sllx		%g3, 16, %g5			/* IEU0		Group		*/
 	or		%g1, %lo(0x01010101), %g1	/* IEU1				*/
-	sllx		%g1, 32, %g2			/* IEU0		Group		*/
 
+	sllx		%g1, 32, %g2			/* IEU0		Group		*/
 	brz,pn		%o3, 5f				/* CTI+IEU1			*/
 	 orcc		%g3, %g5, %g3			/* IEU1		Group		*/
 	sllx		%g3, 32, %g5			/* IEU0				*/
-	cmp		%o3, %o1			/* IEU1		Group		*/
 
+	cmp		%o3, %o1			/* IEU1		Group		*/
 	be,pn		%xcc, 14f			/* CTI				*/
 	 or		%g1, %g2, %g1			/* IEU0				*/
 	andcc		%o0, 7, %g0			/* IEU1		Group		*/
-	bne,a,pn	%icc, 15f			/* CTI				*/
 
+	bne,a,pn	%icc, 15f			/* CTI				*/
 	 add		%o0, 1, %o0			/* IEU0				*/
 	ldx		[%o0], %o3			/* Load		Group		*/
 1:	sllx		%g1, 7, %g2			/* IEU0				*/
-	or		%g3, %g5, %g3			/* IEU1				*/
 
+	or		%g3, %g5, %g3			/* IEU1				*/
 	add		%o0, 8, %o0			/* IEU0		Group		*/
 	xor		%o3, %g3, %o4			/* IEU1				*/
 							/* %g1 = 0101010101010101	*
@@ -82,8 +80,8 @@ ENTRY(strchr)
 							 * %o3 =      value		*
 							 * %o4 =   value XOR c		*/
 2:	sub		%o3, %g1, %o2			/* IEU0		Group		*/
-	sub		%o4, %g1, %o5			/* IEU1				*/
 
+	sub		%o4, %g1, %o5			/* IEU1				*/
 #ifdef EIGHTBIT_NOT_RARE
 	andn		%o2, %o3, %g7			/* IEU0		Group		*/
 	andn		%o5, %o4, %o5			/* IEU1				*/
@@ -94,86 +92,87 @@ ENTRY(strchr)
 	or		%o5, %o2, %o5			/* IEU0		Group		*/
 #endif
 	add		%o0, 8, %o0			/* IEU1				*/
-	andcc		%o5, %g2, %g0			/* IEU1		Group		*/
 
+	andcc		%o5, %g2, %g0			/* IEU1		Group		*/
 	be,a,pt		%xcc, 2b			/* CTI				*/
 	 xor		%o3, %g3, %o4			/* IEU0				*/
 	srlx		%o5, 32, %g5			/* IEU0		Group		*/
-	add		%o2, %g1, %o2			/* IEU1				*/
 
+	add		%o2, %g1, %o2			/* IEU1				*/
 3:	andcc		%g5, %g2, %g0			/* IEU1		Group		*/
 	be,pn		%xcc, 4f			/* CTI				*/
 	 srlx		%o2, 56, %g5			/* IEU0				*/
-	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 
+	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 5f			/* CTI				*/
 	 srlx		%o4, 56, %g5			/* IEU0				*/
 	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
-	be,pn		%icc, 6f			/* CTI				*/
 
+	be,pn		%icc, 6f			/* CTI				*/
 	 srlx		%o2, 48, %g5			/* IEU0				*/
 	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 5f			/* CTI				*/
-	 srlx		%o4, 48, %g5			/* IEU0				*/
 
+	 srlx		%o4, 48, %g5			/* IEU0				*/
 	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 7f			/* CTI				*/
 	 srlx		%o2, 40, %g5			/* IEU0				*/
-	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 
+	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 5f			/* CTI				*/
 	 srlx		%o4, 40, %g5			/* IEU0				*/
 	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
-	be,pn		%icc, 8f			/* CTI				*/
 
+	be,pn		%icc, 8f			/* CTI				*/
 	 srlx		%o2, 32, %g5			/* IEU0				*/
 	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 5f			/* CTI				*/
-	 srlx		%o4, 32, %g5			/* IEU0				*/
 
+	 srlx		%o4, 32, %g5			/* IEU0				*/
 	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 9f			/* CTI				*/
 4:	 srlx		%o2, 24, %g5			/* IEU0				*/
-	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 
+	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 5f			/* CTI				*/
 	 srlx		%o4, 24, %g5			/* IEU0				*/
 	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
-	be,pn		%icc, 10f			/* CTI				*/
 
+	be,pn		%icc, 10f			/* CTI				*/
 	 srlx		%o2, 16, %g5			/* IEU0				*/
 	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 5f			/* CTI				*/
-	 srlx		%o4, 16, %g5			/* IEU0				*/
 
+	 srlx		%o4, 16, %g5			/* IEU0				*/
 	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 11f			/* CTI				*/
 	 srlx		%o2, 8, %g5			/* IEU0				*/
-	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 
+	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 5f			/* CTI				*/
 	 srlx		%o4, 8, %g5			/* IEU0				*/
 	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
-	be,pn		%icc, 12f			/* CTI				*/
 
+	be,pn		%icc, 12f			/* CTI				*/
 	andcc		%o2, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 5f			/* CTI				*/
 	 sub		%o3, %g1, %o2			/* IEU0				*/
-	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/
 
+	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 13f			/* CTI				*/
 	 xor		%o3, %g3, %o4			/* IEU0				*/
 	ldxa		[%o0] ASI_PNF, %o3		/* Load		Group		*/
-	sub		%o4, %g1, %o5			/* IEU0				*/
 
+	sub		%o4, %g1, %o5			/* IEU0				*/
 	or		%o5, %o2, %o5			/* IEU1				*/
 	add		%o0, 8, %o0			/* IEU0		Group		*/
 	andcc		%o5, %g2, %g0			/* IEU1				*/
-	be,a,pt		%xcc, 2b			/* CTI				*/
 
+	be,a,pt		%xcc, 2b			/* CTI				*/
 	 xor		%o3, %g3, %o4			/* IEU0		Group		*/
 	srlx		%o5, 32, %g5			/* IEU0		Group		*/
 	ba,pt		%xcc, 3b			/* CTI				*/
+
 	 add		%o2, %g1, %o2			/* IEU1				*/
 
 	.align		16
@@ -330,29 +329,27 @@ END(strchr)
 
 	.align		32
 ENTRY(strrchr)
-#ifndef USE_BPR
-	srl		%o1, 0, %o1			/* IEU0		Group		*/
-#endif
-	brz,pn		%o1, 17b			/* CTI+IEU1	Group		*/
+	andcc		%o1, 0xff, %o1			/* IEU1		Group		*/
+	be,pn		%icc, 17b			/* CTI				*/
 	 clr		%g4				/* IEU0				*/
 	andcc		%o0, 7, %g0			/* IEU1		Group		*/
-	bne,pn		%icc, 13f			/* CTI				*/
 
+	bne,pn		%icc, 13f			/* CTI				*/
 	 sllx		%o1, 8, %g3			/* IEU0				*/
 	ldx		[%o0], %o3			/* Load		Group		*/
 1:	sethi		%hi(0x01010101), %g1		/* IEU0				*/
-	or		%g3, %o1, %g3			/* IEU1				*/
 
+	or		%g3, %o1, %g3			/* IEU1				*/
 	sllx		%g3, 16, %g5			/* IEU0		Group		*/
 	or		%g1, %lo(0x01010101), %g1	/* IEU1				*/
 	sllx		%g1, 32, %g2			/* IEU0		Group		*/
-	or		%g3, %g5, %g3			/* IEU1				*/
 
+	or		%g3, %g5, %g3			/* IEU1				*/
 	sllx		%g3, 32, %g5			/* IEU0		Group		*/
 	or		%g1, %g2, %g1			/* IEU1				*/
 	sllx		%g1, 7, %g2			/* IEU0		Group		*/
-	or		%g3, %g5, %g3			/* IEU1				*/
 
+	or		%g3, %g5, %g3			/* IEU1				*/
 	add		%o0, 8, %o0			/* IEU0		Group		*/
 	xor		%o3, %g3, %o4			/* IEU1				*/
 							/* %g1 = 0101010101010101	*
@@ -361,97 +358,99 @@ ENTRY(strrchr)
 							 * %o3 =   value		*
 							 * %o4 =   value XOR c		*/
 2:	sub		%o3, %g1, %o2			/* IEU0		Group		*/
+
 3:	sub		%o4, %g1, %o5			/* IEU1				*/
 #ifdef EIGHTBIT_NOT_RARE
 	andn		%o2, %o3, %g7			/* IEU0		Group		*/
 	andn		%o5, %o4, %o5			/* IEU1				*/
 	ldxa		[%o0] ASI_PNF, %o3		/* Load				*/
+
 	or		%o5, %g7, %o5			/* IEU0		Group		*/
 #else
 	ldxa		[%o0] ASI_PNF, %o3		/* Load				*/
+
 	or		%o5, %o2, %o5			/* IEU0		Group		*/
 #endif
-
 	add		%o0, 8, %o0			/* IEU1				*/
 	andcc		%o5, %g2, %g0			/* IEU1		Group		*/
 	be,a,pt		%xcc, 2b			/* CTI				*/
-	 xor		%o3, %g3, %o4			/* IEU0				*/
 
+	 xor		%o3, %g3, %o4			/* IEU0				*/
 	srlx		%o5, 32, %g5			/* IEU0		Group		*/
 	add		%o2, %g1, %o2			/* IEU1				*/
 	andcc		%g5, %g2, %g0			/* IEU1		Group		*/
-	be,pn		%xcc, 7f			/* CTI				*/
 
+	be,pn		%xcc, 7f			/* CTI				*/
 	 srlx		%o2, 56, %g5			/* IEU0				*/
 	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 12f			/* CTI				*/
-	 srlx		%o4, 56, %g5			/* IEU0				*/
 
+	 srlx		%o4, 56, %g5			/* IEU0				*/
 	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	srlx		%o2, 48, %g5			/* IEU0				*/
 	be,a,pn		%icc, 4f			/* CTI				*/
-	 add		%o0, -16, %g4			/* IEU0		Group		*/
 
+	 add		%o0, -16, %g4			/* IEU0		Group		*/
 4:	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 12f			/* CTI				*/
 	 srlx		%o4, 48, %g5			/* IEU0				*/
-	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 
+	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	srlx		%o2, 40, %g5			/* IEU0				*/
 	be,a,pn		%icc, 5f			/* CTI				*/
 	 add		%o0, -15, %g4			/* IEU0		Group		*/
-5:	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 
+5:	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 12f			/* CTI				*/
 	 srlx		%o4, 40, %g5			/* IEU0				*/
 	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
-	srlx		%o2, 32, %g5			/* IEU0				*/
 
+	srlx		%o2, 32, %g5			/* IEU0				*/
 	be,a,pn		%icc, 6f			/* CTI				*/
 	 add		%o0, -14, %g4			/* IEU0		Group		*/
 6:	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
-	be,pn		%icc, 12f			/* CTI				*/
 
+	be,pn		%icc, 12f			/* CTI				*/
 	 srlx		%o4, 32, %g5			/* IEU0				*/
 	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	be,a,pn		%icc, 7f			/* CTI				*/
-	 add		%o0, -13, %g4			/* IEU0				*/
 
+	 add		%o0, -13, %g4			/* IEU0				*/
 7:	srlx		%o2, 24, %g5			/* IEU0				*/
 	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 12f			/* CTI				*/
-	 srlx		%o4, 24, %g5			/* IEU0				*/
 
+	 srlx		%o4, 24, %g5			/* IEU0				*/
 	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	srlx		%o2, 16, %g5			/* IEU0				*/
 	be,a,pn		%icc, 8f			/* CTI				*/
-	 add		%o0, -12, %g4			/* IEU0		Group		*/
 
+	 add		%o0, -12, %g4			/* IEU0		Group		*/
 8:	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 12f			/* CTI				*/
 	 srlx		%o4, 16, %g5			/* IEU0				*/
-	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 
+	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	srlx		%o2, 8, %g5			/* IEU0				*/
 	be,a,pn		%icc, 9f			/* CTI				*/
 	 add		%o0, -11, %g4			/* IEU0		Group		*/
-9:	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 
+9:	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 12f			/* CTI				*/
 	 srlx		%o4, 8, %g5			/* IEU0				*/
 	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
-	be,a,pn		%icc, 10f			/* CTI				*/
 
+	be,a,pn		%icc, 10f			/* CTI				*/
 	 add		%o0, -10, %g4			/* IEU0				*/
 10:	andcc		%o2, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 12f			/* CTI				*/
-	 sub		%o3, %g1, %o2			/* IEU0				*/
 
+	 sub		%o3, %g1, %o2			/* IEU0				*/
 	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/
 	be,a,pn		%icc, 11f			/* CTI				*/
 	 add		%o0, -9, %g4			/* IEU0				*/
-11:	ba,pt		%xcc, 3b			/* CTI		Group		*/
 
+11:	ba,pt		%xcc, 3b			/* CTI		Group		*/
 	 xor		%o3, %g3, %o4			/* IEU0		Group		*/
 12:	retl						/* CTI+IEU1	Group		*/
 	 mov		%g4, %o0			/* IEU0				*/