/* Copy SRC to DEST returning the address of the terminating '\0' in DEST.
   For SPARC v9.
   Copyright (C) 1998, 1999, 2002, 2003, 2004 Free Software Foundation, Inc.
   This file is part of the GNU C Library.
   Contributed by Jan Vondrak <jvon4518@ss1000.ms.mff.cuni.cz> and
                  Jakub Jelinek <jj@ultra.linux.cz>.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, write to the Free
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   02111-1307 USA.  */

#include <sysdep.h>
#include <asm/asi.h>
#ifndef XCC
	.register	%g2, #scratch
	.register	%g3, #scratch
	.register	%g6, #scratch
#endif

	/* Normally, this uses
	   ((xword - 0x0101010101010101) & 0x8080808080808080) test
	   to find out if any byte in xword could be zero. This is fast, but
	   also gives false alarm for any byte in range 0x81-0xff. It does
	   not matter for correctness, as if this test tells us there could
	   be some zero byte, we check it byte by byte, but if bytes with
	   high bits set are common in the strings, then this will give poor
	   performance. You can #define EIGHTBIT_NOT_RARE and the algorithm
	   will use one tick slower, but more precise test
	   ((xword - 0x0101010101010101) & (~xword) & 0x8080808080808080),
	   which does not give any false alarms (but if some bits are set,
	   one cannot assume from it which bytes are zero and which are not).
	   It is yet to be measured, what is the correct default for glibc
	   in these days for an average user.
	 */

	.text
	.align		32
ENTRY(__stpcpy)
	sethi		%hi(0x01010101), %g1		/* IEU0		Group		*/
	or		%g1, %lo(0x01010101), %g1	/* IEU0		Group		*/
	andcc		%o0, 7, %g0			/* IEU1				*/
	sllx		%g1, 32, %g2			/* IEU0		Group		*/

	bne,pn		%icc, 12f			/* CTI				*/
	 andcc		%o1, 7, %g3			/* IEU1				*/
	or		%g1, %g2, %g1			/* IEU0		Group		*/
	bne,pn		%icc, 14f			/* CTI				*/

	 sllx		%g1, 7, %g2			/* IEU0		Group		*/
1:	ldx		[%o1], %o3			/* Load				*/
	add		%o1, 8, %o1			/* IEU1				*/
2:	mov		%o3, %g3			/* IEU0		Group		*/

	sub		%o3, %g1, %o2			/* IEU1				*/
3:	ldxa		[%o1] ASI_PNF, %o3		/* Load				*/
#ifdef EIGHTBIT_NOT_RARE
	andn		%o2, %g3, %o2			/* IEU0		Group		*/
#endif
	add		%o0, 8, %o0			/* IEU0		Group		*/
	andcc		%o2, %g2, %g0			/* IEU1				*/

	add		%o1, 8, %o1			/* IEU0		Group		*/
	be,a,pt		%xcc, 2b			/* CTI				*/
	 stx		%g3, [%o0 - 8]			/* Store			*/
	srlx		%g3, 56, %g5			/* IEU0		Group		*/

	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
	be,pn		%icc, 11f			/* CTI				*/
	 srlx		%g3, 48, %g4			/* IEU0				*/
	andcc		%g4, 0xff, %g0			/* IEU1		Group		*/

	be,pn		%icc, 10f			/* CTI				*/
	 srlx		%g3, 40, %g5			/* IEU0				*/
	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
	be,pn		%icc, 9f			/* CTI				*/

	 srlx		%g3, 32, %g4			/* IEU0				*/
	andcc		%g4, 0xff, %g0			/* IEU1		Group		*/
	be,pn		%icc, 8f			/* CTI				*/
	 srlx		%g3, 24, %g5			/* IEU0				*/

	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
	be,pn		%icc, 7f			/* CTI				*/
	 srlx		%g3, 16, %g4			/* IEU0				*/
	andcc		%g4, 0xff, %g0			/* IEU1		Group		*/

	be,pn		%icc, 6f			/* CTI				*/
	 srlx		%g3, 8, %g5			/* IEU0				*/
	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
	be,pn		%icc, 5f			/* CTI				*/

	 sub		%o3, %g1, %o2			/* IEU0				*/
	stx		%g3, [%o0 - 8]			/* Store	Group		*/
	andcc		%g3, 0xff, %g0			/* IEU1				*/
	bne,pt		%icc, 3b			/* CTI				*/

	 mov		%o3, %g3			/* IEU0		Group		*/
4:	retl						/* CTI+IEU1	Group		*/
	 sub		%o0, 1, %o0			/* IEU0				*/

	.align		16
6:	ba,pt		%xcc, 23f			/* CTI		Group		*/
	 sub		%o0, 3, %g6			/* IEU0				*/
5:	sub		%o0, 2, %g6			/* IEU0		Group		*/
	stb		%g5, [%o0 - 2]			/* Store			*/

	srlx		%g3, 16, %g4			/* IEU0		Group		*/
23:	sth		%g4, [%o0 - 4]			/* Store			*/
	srlx		%g3, 32, %g4			/* IEU0		Group		*/
	stw		%g4, [%o0 - 8]			/* Store			*/

	retl						/* CTI+IEU1	Group		*/
	 mov		%g6, %o0			/* IEU0				*/
8:	ba,pt		%xcc, 24f			/* CTI		Group		*/
	 sub		%o0, 5, %g6			/* IEU0				*/

7:	sub		%o0, 4, %g6			/* IEU0		Group		*/
	stb		%g5, [%o0 - 4]			/* Store			*/
	srlx		%g3, 32, %g4			/* IEU0		Group		*/
24:	stw		%g4, [%o0 - 8]			/* Store			*/

	retl						/* CTI+IEU1	Group		*/
	 mov		%g6, %o0 			/* IEU0				*/
10:	ba,pt		%xcc, 25f			/* CTI		Group		*/
	 sub		%o0, 7, %g6			/* IEU0				*/

9:	sub		%o0, 6, %g6			/* IEU0		Group		*/
	stb		%g5, [%o0 - 6]			/* Store			*/
	srlx		%g3, 48, %g4			/* IEU0				*/
25:	sth		%g4, [%o0 - 8]			/* Store	Group		*/

	retl						/* CTI+IEU1	Group		*/
	 mov		%g6, %o0			/* IEU0				*/
11:	stb		%g5, [%o0 - 8]			/* Store	Group		*/
	retl						/* CTI+IEU1	Group		*/

	 sub		%o0, 8, %o0			/* IEU0				*/

	.align		16
12:	or		%g1, %g2, %g1			/* IEU0		Group		*/
	ldub		[%o1], %o3			/* Load				*/
	sllx		%g1, 7, %g2			/* IEU0		Group		*/
	stb		%o3, [%o0]			/* Store	Group		*/

13:	add		%o0, 1, %o0			/* IEU0				*/
	add		%o1, 1, %o1			/* IEU1				*/
	andcc		%o3, 0xff, %g0			/* IEU1		Group		*/
	be,pn		%icc, 4b			/* CTI				*/

	 lduba		[%o1] ASI_PNF, %o3		/* Load				*/
	andcc		%o0, 7, %g0			/* IEU1		Group		*/
	bne,a,pt	%icc, 13b			/* CTI				*/
	 stb		%o3, [%o0]			/* Store			*/

	andcc		%o1, 7, %g3			/* IEU1		Group		*/
	be,a,pt		%icc, 1b			/* CTI				*/
	 ldx		[%o1], %o3			/* Load				*/
14:	orcc		%g0, 64, %g4			/* IEU1		Group		*/

	sllx		%g3, 3, %g5			/* IEU0				*/
	sub		%o1, %g3, %o1			/* IEU0		Group		*/
	sub		%g4, %g5, %g4			/* IEU1				*/
							/* %g1 = 0101010101010101	*
							 * %g2 = 8080808080808080	*
							 * %g3 = source alignment	*
							 * %g5 = number of bits to shift left  *
							 * %g4 = number of bits to shift right */
	ldxa		[%o1] ASI_PNF, %o5		/* Load		Group		*/

	addcc		%o1, 8, %o1			/* IEU1				*/
15:	sllx		%o5, %g5, %o3			/* IEU0		Group		*/
	ldxa		[%o1] ASI_PNF, %o5		/* Load				*/
	srlx		%o5, %g4, %o4			/* IEU0		Group		*/

	add		%o0, 8, %o0			/* IEU1				*/
	or		%o3, %o4, %o3			/* IEU0		Group		*/
	add		%o1, 8, %o1			/* IEU1				*/
	sub		%o3, %g1, %o4			/* IEU0		Group		*/

#ifdef EIGHTBIT_NOT_RARE
	andn		%o4, %o3, %o4			/* IEU0		Group		*/
#endif
	andcc		%o4, %g2, %g0			/* IEU1		Group		*/
	be,a,pt		%xcc, 15b			/* CTI				*/
	 stx		%o3, [%o0 - 8]			/* Store			*/
	srlx		%o3, 56, %o4			/* IEU0		Group		*/

	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/
	be,pn		%icc, 22f			/* CTI				*/
	 srlx		%o3, 48, %o4			/* IEU0				*/
	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/

	be,pn		%icc, 21f			/* CTI				*/
	 srlx		%o3, 40, %o4			/* IEU0				*/
	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/
	be,pn		%icc, 20f			/* CTI				*/

	 srlx		%o3, 32, %o4			/* IEU0				*/
	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/
	be,pn		%icc, 19f			/* CTI				*/
	 srlx		%o3, 24, %o4			/* IEU0				*/

	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/
	be,pn		%icc, 18f			/* CTI				*/
	 srlx		%o3, 16, %o4			/* IEU0				*/
	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/

	be,pn		%icc, 17f			/* CTI				*/
	 srlx		%o3, 8, %o4			/* IEU0				*/
	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/
	be,pn		%icc, 16f			/* CTI				*/

	 andcc		%o3, 0xff, %g0			/* IEU1		Group		*/
	bne,pn		%icc, 15b			/* CTI				*/
	 stx		%o3, [%o0 - 8]			/* Store			*/
	retl						/* CTI+IEU1	Group		*/

	 sub		%o0, 1, %o0			/* IEU0				*/

	.align		16
17:	ba,pt		%xcc, 26f			/* CTI		Group		*/
	 subcc		%o0, 3, %g6			/* IEU1				*/
18:	ba,pt		%xcc, 27f			/* CTI		Group		*/
	 subcc		%o0, 4, %g6			/* IEU1				*/

19:	ba,pt		%xcc, 28f			/* CTI		Group		*/
	 subcc		%o0, 5, %g6			/* IEU1				*/
16:	subcc		%o0, 2, %g6			/* IEU1		Group		*/
	srlx		%o3, 8, %o4			/* IEU0				*/

	stb		%o4, [%o0 - 2]			/* Store			*/
26:	srlx		%o3, 16, %o4			/* IEU0		Group		*/
	stb		%o4, [%o0 - 3]			/* Store			*/
27:	srlx		%o3, 24, %o4			/* IEU0		Group		*/

	stb		%o4, [%o0 - 4]			/* Store			*/
28:	srlx		%o3, 32, %o4			/* IEU0		Group		*/
	stw		%o4, [%o0 - 8]			/* Store			*/
	retl						/* CTI+IEU1	Group		*/

	 mov		%g6, %o0 			/* IEU0				*/

	.align		16
21:	ba,pt		%xcc, 29f			/* CTI		Group		*/
	 subcc		%o0, 7, %g6			/* IEU1				*/
22:	ba,pt		%xcc, 30f			/* CTI		Group		*/
	 subcc		%o0, 8, %g6			/* IEU1				*/

20:	subcc		%o0, 6, %g6			/* IEU1		Group		*/
	srlx		%o3, 40, %o4			/* IEU0				*/
	stb		%o4, [%o0 - 6]			/* Store			*/
29:	srlx		%o3, 48, %o4			/* IEU0		Group		*/

	stb		%o4, [%o0 - 7]			/* Store			*/
30:	srlx		%o3, 56, %o4			/* IEU0		Group		*/
	stb		%o4, [%o0 - 8]			/* Store			*/
	retl						/* CTI+IEU1	Group		*/

	 mov		%g6, %o0			/* IEU0				*/
END(__stpcpy)

weak_alias (__stpcpy, stpcpy)
libc_hidden_def (__stpcpy)
libc_hidden_builtin_def (stpcpy)
