Blame sysdeps/sparc/sparc64/strncpy.S

Packit Service 82fcde
/* strncpy(DST, SRC, COUNT) - Copy no more than COUNT bytes of the
Packit Service 82fcde
   null-terminated string from SRC to DST.  If SRC does not cover all of
Packit Service 82fcde
   COUNT, the balance is zeroed.
Packit Service 82fcde
   For SPARC v9.
Packit Service 82fcde
   Copyright (C) 1998-2018 Free Software Foundation, Inc.
Packit Service 82fcde
   This file is part of the GNU C Library.
Packit Service 82fcde
   Contributed by Jan Vondrak <jvon4518@ss1000.ms.mff.cuni.cz> and
Packit Service 82fcde
                  Jakub Jelinek <jj@ultra.linux.cz>.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is free software; you can redistribute it and/or
Packit Service 82fcde
   modify it under the terms of the GNU Lesser General Public
Packit Service 82fcde
   License as published by the Free Software Foundation; either
Packit Service 82fcde
   version 2.1 of the License, or (at your option) any later version.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is distributed in the hope that it will be useful,
Packit Service 82fcde
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 82fcde
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 82fcde
   Lesser General Public License for more details.
Packit Service 82fcde
Packit Service 82fcde
   You should have received a copy of the GNU Lesser General Public
Packit Service 82fcde
   License along with the GNU C Library; if not, see
Packit Service 82fcde
   <http://www.gnu.org/licenses/>.  */
Packit Service 82fcde
Packit Service 82fcde
#include <sysdep.h>
Packit Service 82fcde
#include <asm/asi.h>
Packit Service 82fcde
#ifndef XCC
Packit Service 82fcde
#define XCC xcc
Packit Service 82fcde
#define USE_BPR
Packit Service 82fcde
	.register	%g2, #scratch
Packit Service 82fcde
	.register	%g3, #scratch
Packit Service 82fcde
	.register	%g6, #scratch
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
	/* Normally, this uses
Packit Service 82fcde
	   ((xword - 0x0101010101010101) & 0x8080808080808080) test
Packit Service 82fcde
	   to find out if any byte in xword could be zero. This is fast, but
Packit Service 82fcde
	   also gives false alarm for any byte in range 0x81-0xff. It does
Packit Service 82fcde
	   not matter for correctness, as if this test tells us there could
Packit Service 82fcde
	   be some zero byte, we check it byte by byte, but if bytes with
Packit Service 82fcde
	   high bits set are common in the strings, then this will give poor
Packit Service 82fcde
	   performance. You can #define EIGHTBIT_NOT_RARE and the algorithm
Packit Service 82fcde
	   will use one tick slower, but more precise test
Packit Service 82fcde
	   ((xword - 0x0101010101010101) & (~xword) & 0x8080808080808080),
Packit Service 82fcde
	   which does not give any false alarms (but if some bits are set,
Packit Service 82fcde
	   one cannot assume from it which bytes are zero and which are not).
Packit Service 82fcde
	   It is yet to be measured, what is the correct default for glibc
Packit Service 82fcde
	   in these days for an average user.
Packit Service 82fcde
	 */
Packit Service 82fcde
Packit Service 82fcde
	.text
Packit Service 82fcde
	.align		32
Packit Service 82fcde
ENTRY(strncpy)
Packit Service 82fcde
	sethi		%hi(0x01010101), %g1		/* IEU0		Group		*/
Packit Service 82fcde
#ifdef USE_BPR
Packit Service 82fcde
	brz,pn		%o2, 19f			/* CTI+IEU1			*/
Packit Service 82fcde
#else
Packit Service 82fcde
	tst		%o2				/* IEU1				*/
Packit Service 82fcde
	be,pn		%XCC, 19f			/* CTI				*/
Packit Service 82fcde
#endif
Packit Service 82fcde
	 mov		%o0, %g6			/* IEU0		Group		*/
Packit Service 82fcde
	or		%g1, %lo(0x01010101), %g1	/* IEU1				*/
Packit Service 82fcde
Packit Service 82fcde
	andcc		%o0, 7, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	sllx		%g1, 32, %g2			/* IEU0				*/
Packit Service 82fcde
	bne,pn		%icc, 26f			/* CTI				*/
Packit Service 82fcde
	 or		%g1, %g2, %g1			/* IEU0		Group		*/
Packit Service 82fcde
Packit Service 82fcde
	andcc		%o1, 7, %g3			/* IEU1				*/
Packit Service 82fcde
	bne,pn		%icc, 28f			/* CTI				*/
Packit Service 82fcde
	 sllx		%g1, 7, %g2			/* IEU0		Group		*/
Packit Service 82fcde
	ldx		[%o1], %o3			/* Load				*/
Packit Service 82fcde
Packit Service 82fcde
1:	add		%o1, 8, %o1			/* IEU1				*/
Packit Service 82fcde
2:	subcc		%o2, 8, %o2			/* IEU1		Group		*/
Packit Service 82fcde
	bl,pn		%XCC, 18f			/* CTI				*/
Packit Service 82fcde
	 sub		%o3, %g1, %o4			/* IEU0				*/
Packit Service 82fcde
Packit Service 82fcde
	add		%o0, 8, %o0			/* IEU0		Group		*/
Packit Service 82fcde
#ifdef EIGHTBIT_NOT_MORE
Packit Service 82fcde
	andn		%o4, %o3, %o4			/* IEU1				*/
Packit Service 82fcde
#endif
Packit Service 82fcde
	mov		%o3, %g3			/* IEU1				*/
Packit Service 82fcde
	ldxa		[%o1] ASI_PNF, %o3		/* Load				*/
Packit Service 82fcde
	add		%o1, 8, %o1			/* IEU0		Group		*/
Packit Service 82fcde
Packit Service 82fcde
	andcc		%o4, %g2, %g0			/* IEU1				*/
Packit Service 82fcde
	be,a,pt		%xcc, 2b			/* CTI				*/
Packit Service 82fcde
	 stx		%g3, [%o0-8]			/* Store	Group		*/
Packit Service 82fcde
	srlx		%g3, 56, %g5			/* IEU0		Group		*/
Packit Service 82fcde
Packit Service 82fcde
	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,pn		%icc, 16f			/* CTI				*/
Packit Service 82fcde
	 srlx		%g3, 48, %g4			/* IEU0				*/
Packit Service 82fcde
	andcc		%g4, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
Packit Service 82fcde
	be,pn		%icc, 15f			/* CTI				*/
Packit Service 82fcde
	 srlx		%g3, 40, %g5			/* IEU0				*/
Packit Service 82fcde
	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,pn		%icc, 14f			/* CTI				*/
Packit Service 82fcde
Packit Service 82fcde
	 srlx		%g3, 32, %g4			/* IEU0				*/
Packit Service 82fcde
	andcc		%g4, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,pn		%icc, 13f			/* CTI				*/
Packit Service 82fcde
	 srlx		%g3, 24, %g5			/* IEU0				*/
Packit Service 82fcde
Packit Service 82fcde
	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,pn		%icc, 12f			/* CTI				*/
Packit Service 82fcde
	 srlx		%g3, 16, %g4			/* IEU0				*/
Packit Service 82fcde
	andcc		%g4, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
Packit Service 82fcde
	be,pn		%icc, 11f			/* CTI				*/
Packit Service 82fcde
	 srlx		%g3, 8, %g5			/* IEU0				*/
Packit Service 82fcde
	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,pn		%icc, 10f			/* CTI				*/
Packit Service 82fcde
Packit Service 82fcde
	 andcc		%g3, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	bne,pt		%icc, 2b			/* CTI				*/
Packit Service 82fcde
3:	 stx		%g3, [%o0-8]			/* Store			*/
Packit Service 82fcde
	andncc		%o2, 31, %g3			/* IEU1		Group		*/
Packit Service 82fcde
Packit Service 82fcde
4:	be,pn		%XCC, 41f			/* CTI				*/
Packit Service 82fcde
	 and		%o2, 31, %o2			/* IEU1		Group		*/
Packit Service 82fcde
40:	stx		%g0, [%o0]			/* Store			*/
Packit Service 82fcde
	stx		%g0, [%o0 + 8]			/* Store	Group		*/
Packit Service 82fcde
Packit Service 82fcde
	subcc		%g3, 32, %g3			/* IEU1				*/
Packit Service 82fcde
	stx		%g0, [%o0 + 16]			/* Store	Group		*/
Packit Service 82fcde
	stx		%g0, [%o0 + 24]			/* Store	Group		*/
Packit Service 82fcde
	bne,pt		%XCC, 40b			/* CTI				*/
Packit Service 82fcde
Packit Service 82fcde
	 add		%o0, 32, %o0			/* IEU0				*/
Packit Service 82fcde
41:	subcc		%o2, 8, %o2			/* IEU1		Group		*/
Packit Service 82fcde
	bl,a,pn		%XCC, 6f			/* CTI				*/
Packit Service 82fcde
	 andcc		%o2, 4, %g0			/* IEU1		Group		*/
Packit Service 82fcde
Packit Service 82fcde
5:	stx		%g0, [%o0]			/* Store			*/
Packit Service 82fcde
	subcc		%o2, 8, %o2			/* IEU1		Group		*/
Packit Service 82fcde
	bge,pt		%XCC, 5b			/* CTI				*/
Packit Service 82fcde
	 add		%o0, 8, %o0			/* IEU0				*/
Packit Service 82fcde
Packit Service 82fcde
	andcc		%o2, 4, %g0			/* IEU1		Group		*/
Packit Service 82fcde
6:	be,a,pn		%icc, 7f			/* CTI				*/
Packit Service 82fcde
	 andcc		%o2, 2, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	stw		%g0, [%o0]			/* Store			*/
Packit Service 82fcde
Packit Service 82fcde
	add		%o0, 4, %o0			/* IEU0				*/
Packit Service 82fcde
	andcc		%o2, 2, %g0			/* IEU1		Group		*/
Packit Service 82fcde
7:	be,a,pn		%icc, 8f			/* CTI				*/
Packit Service 82fcde
	 andcc		%o2, 1, %g0			/* IEU1		Group		*/
Packit Service 82fcde
Packit Service 82fcde
	sth		%g0, [%o0]			/* Store			*/
Packit Service 82fcde
	add		%o0, 2, %o0			/* IEU0				*/
Packit Service 82fcde
	andcc		%o2, 1, %g0			/* IEU1		Group		*/
Packit Service 82fcde
8:	bne,a,pn	%icc, 9f			/* CTI				*/
Packit Service 82fcde
Packit Service 82fcde
	 stb		%g0, [%o0]			/* Store			*/
Packit Service 82fcde
9:	retl						/* CTI+IEU1	Group		*/
Packit Service 82fcde
	 mov		%g6, %o0			/* IEU0				*/
Packit Service 82fcde
Packit Service 82fcde
	.align		16
Packit Service 82fcde
10:	ba,pt		%xcc, 3b			/* CTI				*/
Packit Service 82fcde
	 sllx		%g5, 8, %g3			/* IEU0				*/
Packit Service 82fcde
11:	ba,pt		%xcc, 3b			/* CTI		Group		*/
Packit Service 82fcde
	 sllx		%g4, 16, %g3			/* IEU0				*/
Packit Service 82fcde
Packit Service 82fcde
12:	ba,pt		%xcc, 3b			/* CTI		Group		*/
Packit Service 82fcde
	 sllx		%g5, 24, %g3			/* IEU0				*/
Packit Service 82fcde
13:	ba,pt		%xcc, 3b			/* CTI		Group		*/
Packit Service 82fcde
	 sllx		%g4, 32, %g3			/* IEU0				*/
Packit Service 82fcde
Packit Service 82fcde
14:	ba,pt		%xcc, 3b			/* CTI		Group		*/
Packit Service 82fcde
	 sllx		%g5, 40, %g3			/* IEU0				*/
Packit Service 82fcde
15:	ba,pt		%xcc, 3b			/* CTI		Group		*/
Packit Service 82fcde
	 sllx		%g4, 48, %g3			/* IEU0				*/
Packit Service 82fcde
Packit Service 82fcde
16:	ba,pt		%xcc, 3b			/* CTI				*/
Packit Service 82fcde
	 sllx		%g5, 56, %g3			/* IEU0				*/
Packit Service 82fcde
17:	or		%o3, %o4, %o3			/* IEU0		Group		*/
Packit Service 82fcde
	sub		%o3, %g1, %o4			/* IEU1				*/
Packit Service 82fcde
Packit Service 82fcde
18:	addcc		%o2, 8, %o2			/* IEU1		Group		*/
Packit Service 82fcde
	be,pn		%XCC, 19f			/* CTI				*/
Packit Service 82fcde
	 andcc		%o4, %g2, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,pt		%xcc, 21f			/* CTI				*/
Packit Service 82fcde
Packit Service 82fcde
	 srlx		%o3, 56, %g5			/* IEU0				*/
Packit Service 82fcde
	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,pn		%icc, 20f			/* CTI				*/
Packit Service 82fcde
	 stb		%g5, [%o0]			/* Store			*/
Packit Service 82fcde
Packit Service 82fcde
	add		%o0, 1, %o0			/* IEU0		Group		*/
Packit Service 82fcde
	subcc		%o2, 1, %o2			/* IEU1				*/
Packit Service 82fcde
	be,pn		%XCC, 19f			/* CTI				*/
Packit Service 82fcde
	 srlx		%o3, 48, %g5			/* IEU0		Group		*/
Packit Service 82fcde
Packit Service 82fcde
	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,pn		%icc, 20f			/* CTI				*/
Packit Service 82fcde
	 stb		%g5, [%o0]			/* Store			*/
Packit Service 82fcde
	add		%o0, 1, %o0			/* IEU0		Group		*/
Packit Service 82fcde
Packit Service 82fcde
	subcc		%o2, 1, %o2			/* IEU1				*/
Packit Service 82fcde
	be,pn		%XCC, 19f			/* CTI				*/
Packit Service 82fcde
	 srlx		%o3, 40, %g5			/* IEU0		Group		*/
Packit Service 82fcde
	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
Packit Service 82fcde
	be,pn		%icc, 20f			/* CTI				*/
Packit Service 82fcde
	 stb		%g5, [%o0]			/* Store			*/
Packit Service 82fcde
	add		%o0, 1, %o0			/* IEU0		Group		*/
Packit Service 82fcde
	subcc		%o2, 1, %o2			/* IEU1				*/
Packit Service 82fcde
Packit Service 82fcde
	be,pn		%XCC, 19f			/* CTI				*/
Packit Service 82fcde
	 srlx		%o3, 32, %g5			/* IEU0		Group		*/
Packit Service 82fcde
	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,pn		%icc, 20f			/* CTI				*/
Packit Service 82fcde
Packit Service 82fcde
	 stb		%g5, [%o0]			/* Store			*/
Packit Service 82fcde
	add		%o0, 1, %o0			/* IEU0		Group		*/
Packit Service 82fcde
	subcc		%o2, 1, %o2			/* IEU1				*/
Packit Service 82fcde
	be,pn		%XCC, 19f			/* CTI				*/
Packit Service 82fcde
Packit Service 82fcde
	 srlx		%o3, 24, %g5			/* IEU0		Group		*/
Packit Service 82fcde
	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,pn		%icc, 20f			/* CTI				*/
Packit Service 82fcde
	 stb		%g5, [%o0]			/* Store			*/
Packit Service 82fcde
Packit Service 82fcde
	add		%o0, 1, %o0			/* IEU0		Group		*/
Packit Service 82fcde
	subcc		%o2, 1, %o2			/* IEU1				*/
Packit Service 82fcde
	be,pn		%XCC, 19f			/* CTI				*/
Packit Service 82fcde
	 srlx		%o3, 16, %g5			/* IEU0		Group		*/
Packit Service 82fcde
Packit Service 82fcde
	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,pn		%icc, 20f			/* CTI				*/
Packit Service 82fcde
	 stb		%g5, [%o0]			/* Store			*/
Packit Service 82fcde
	add		%o0, 1, %o0			/* IEU0		Group		*/
Packit Service 82fcde
Packit Service 82fcde
	subcc		%o2, 1, %o2			/* IEU1				*/
Packit Service 82fcde
	be,pn		%XCC, 19f			/* CTI				*/
Packit Service 82fcde
	 srlx		%o3, 8, %g5			/* IEU0		Group		*/
Packit Service 82fcde
	stb		%g5, [%o0]			/* Store			*/
Packit Service 82fcde
Packit Service 82fcde
19:	retl						/* CTI+IEU1	Group		*/
Packit Service 82fcde
	 mov		%g6, %o0			/* IEU0				*/
Packit Service 82fcde
50:	stb		%g0, [%o0]			/* Store	Group		*/
Packit Service 82fcde
20:	subcc		%o2, 1, %o2			/* IEU1		Group		*/
Packit Service 82fcde
Packit Service 82fcde
	bne,pt		%XCC, 50b			/* CTI				*/
Packit Service 82fcde
	 add		%o0, 1, %o0			/* IEU0				*/
Packit Service 82fcde
	retl						/* CTI+IEU1	Group		*/
Packit Service 82fcde
	 mov		%g6, %o0			/* IEU0				*/
Packit Service 82fcde
Packit Service 82fcde
21:	andcc		%o2, 4, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,pn		%icc, 22f			/* CTI				*/
Packit Service 82fcde
	 srlx		%o3, 32, %g5			/* IEU0				*/
Packit Service 82fcde
	stw		%g5, [%o0]			/* Store	Group		*/
Packit Service 82fcde
Packit Service 82fcde
	add		%o0, 4, %o0			/* IEU0				*/
Packit Service 82fcde
	mov		%o3, %g5			/* IEU1				*/
Packit Service 82fcde
22:	andcc		%o2, 2, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,pn		%icc, 23f			/* CTI				*/
Packit Service 82fcde
Packit Service 82fcde
	 srlx		%g5, 16, %g4			/* IEU0				*/
Packit Service 82fcde
	sth		%g4, [%o0]			/* Store	Group		*/
Packit Service 82fcde
	add		%o0, 2, %o0			/* IEU0				*/
Packit Service 82fcde
	mov		%g5, %g4			/* IEU1				*/
Packit Service 82fcde
Packit Service 82fcde
23:	srlx		%g4, 8, %g4			/* IEU0		Group		*/
Packit Service 82fcde
	andcc		%o2, 1, %g0			/* IEU1				*/
Packit Service 82fcde
	bne,a,pn	%icc, 24f			/* CTI				*/
Packit Service 82fcde
	 stb		%g4, [%o0]			/* Store	Group		*/
Packit Service 82fcde
Packit Service 82fcde
24:	retl						/* CTI+IEU1	Group		*/
Packit Service 82fcde
	 mov		%g6, %o0			/* IEU0				*/
Packit Service 82fcde
25:	andcc		%o0, 7, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,a,pn		%icc, 4b			/* CTI				*/
Packit Service 82fcde
Packit Service 82fcde
	 andncc		%o2, 31, %g3			/* IEU1		Group		*/
Packit Service 82fcde
	stb		%g0, [%o0]			/* Store	Group		*/
Packit Service 82fcde
	subcc		%o2, 1, %o2			/* IEU1				*/
Packit Service 82fcde
	bne,pt		%XCC, 25b			/* CTI				*/
Packit Service 82fcde
Packit Service 82fcde
	 add		%o0, 1, %o0			/* IEU0		Group		*/
Packit Service 82fcde
	retl						/* CTI+IEU1	Group		*/
Packit Service 82fcde
	 mov		%g6, %o0			/* IEU0				*/
Packit Service 82fcde
Packit Service 82fcde
	.align		16
Packit Service 82fcde
26:	ldub		[%o1], %o3			/* Load				*/
Packit Service 82fcde
	sllx		%g1, 7, %g2			/* IEU0		Group		*/
Packit Service 82fcde
	stb		%o3, [%o0]			/* Store			*/
Packit Service 82fcde
27:	subcc		%o2, 1, %o2			/* IEU1				*/
Packit Service 82fcde
Packit Service 82fcde
	be,pn		%XCC, 9b			/* CTI				*/
Packit Service 82fcde
	 add		%o1, 1, %o1			/* IEU0		Group		*/
Packit Service 82fcde
	add		%o0, 1, %o0			/* IEU1				*/
Packit Service 82fcde
	andcc		%o3, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
Packit Service 82fcde
	be,pn		%icc, 25b			/* CTI				*/
Packit Service 82fcde
	 lduba		[%o1] ASI_PNF, %o3		/* Load				*/
Packit Service 82fcde
	andcc		%o0, 7, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	bne,a,pt	%icc, 27b			/* CTI				*/
Packit Service 82fcde
Packit Service 82fcde
	 stb		%o3, [%o0]			/* Store			*/
Packit Service 82fcde
	andcc		%o1, 7, %g3			/* IEU1		Group		*/
Packit Service 82fcde
	be,a,pt		%icc, 1b			/* CTI				*/
Packit Service 82fcde
	 ldx		[%o1], %o3			/* Load				*/
Packit Service 82fcde
Packit Service 82fcde
28:	orcc		%g0, 64, %g4			/* IEU1		Group		*/
Packit Service 82fcde
	sllx		%g3, 3, %g5			/* IEU0				*/
Packit Service 82fcde
	sub		%g4, %g5, %g4			/* IEU0		Group		*/
Packit Service 82fcde
	sub		%o1, %g3, %o1			/* IEU1				*/
Packit Service 82fcde
							/* %g1 = 0101010101010101
Packit Service 82fcde
							   %g2 = 8080808080808080
Packit Service 82fcde
							   %g3 = source alignment
Packit Service 82fcde
							   %g5 = number of bits to shift left
Packit Service 82fcde
							   %g4 = number of bits to shift right */
Packit Service 82fcde
Packit Service 82fcde
	ldxa		[%o1] ASI_PNF, %o5		/* Load		Group		*/
Packit Service 82fcde
	addcc		%o1, 8, %o1			/* IEU1				*/
Packit Service 82fcde
Packit Service 82fcde
29:	sllx		%o5, %g5, %o3			/* IEU0		Group		*/
Packit Service 82fcde
	ldxa		[%o1] ASI_PNF, %o5		/* Load				*/
Packit Service 82fcde
	subcc		%o2, 8, %o2			/* IEU1				*/
Packit Service 82fcde
	bl,pn		%XCC, 17b			/* CTI				*/
Packit Service 82fcde
Packit Service 82fcde
	 srlx		%o5, %g4, %o4			/* IEU0		Group		*/
Packit Service 82fcde
	add		%o1, 8, %o1			/* IEU1				*/
Packit Service 82fcde
	or		%o3, %o4, %o3			/* IEU0		Group		*/
Packit Service 82fcde
	add		%o0, 8, %o0			/* IEU1				*/
Packit Service 82fcde
Packit Service 82fcde
	sub		%o3, %g1, %o4			/* IEU0		Group		*/
Packit Service 82fcde
#ifdef EIGHTBIT_NOT_RARE
Packit Service 82fcde
	andn		%o4, %o3, %o4			/* IEU0		Group		*/
Packit Service 82fcde
#endif
Packit Service 82fcde
	andcc		%o4, %g2, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,a,pt		%xcc, 29b			/* CTI				*/
Packit Service 82fcde
	 stx		%o3, [%o0-8]			/* Store			*/
Packit Service 82fcde
Packit Service 82fcde
	srlx		%o3, 56, %o4			/* IEU0		Group		*/
Packit Service 82fcde
	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,pn		%icc, 36f			/* CTI				*/
Packit Service 82fcde
	 srlx		%o3, 48, %o4			/* IEU0				*/
Packit Service 82fcde
Packit Service 82fcde
	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,pn		%icc, 35f			/* CTI				*/
Packit Service 82fcde
	 srlx		%o3, 40, %o4			/* IEU0				*/
Packit Service 82fcde
	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
Packit Service 82fcde
	be,pn		%icc, 34f			/* CTI				*/
Packit Service 82fcde
	 srlx		%o3, 32, %o4			/* IEU0				*/
Packit Service 82fcde
	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,pn		%icc, 33f			/* CTI				*/
Packit Service 82fcde
Packit Service 82fcde
	 srlx		%o3, 24, %o4			/* IEU0				*/
Packit Service 82fcde
	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,pn		%icc, 32f			/* CTI				*/
Packit Service 82fcde
	 srlx		%o3, 16, %o4			/* IEU0				*/
Packit Service 82fcde
Packit Service 82fcde
	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	be,pn		%icc, 31f			/* CTI				*/
Packit Service 82fcde
	 srlx		%o3, 8, %o4			/* IEU0				*/
Packit Service 82fcde
	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
Packit Service 82fcde
	be,pn		%icc, 30f			/* CTI				*/
Packit Service 82fcde
	 andcc		%o3, 0xff, %g0			/* IEU1		Group		*/
Packit Service 82fcde
	bne,pn		%icc, 29b			/* CTI				*/
Packit Service 82fcde
	 stx		%o3, [%o0-8]			/* Store			*/
Packit Service 82fcde
Packit Service 82fcde
	ba,pt		%xcc, 4b			/* CTI		Group		*/
Packit Service 82fcde
	 andncc		%o2, 31, %g3			/* IEU1				*/
Packit Service 82fcde
30:	srlx		%o3, 8, %o4			/* IEU0				*/
Packit Service 82fcde
	ba,pt		%xcc, 3b			/* CTI				*/
Packit Service 82fcde
Packit Service 82fcde
	 sllx		%o4, 8, %g3			/* IEU0		Group		*/
Packit Service 82fcde
31:	srlx		%o3, 16, %o4			/* IEU0		Group		*/
Packit Service 82fcde
	ba,pt		%xcc, 3b			/* CTI				*/
Packit Service 82fcde
	 sllx		%o4, 16, %g3			/* IEU0		Group		*/
Packit Service 82fcde
Packit Service 82fcde
32:	srlx		%o3, 24, %o4			/* IEU0		Group		*/
Packit Service 82fcde
	ba,pt		%xcc, 3b			/* CTI				*/
Packit Service 82fcde
	 sllx		%o4, 24, %g3			/* IEU0		Group		*/
Packit Service 82fcde
33:	srlx		%o3, 32, %o4			/* IEU0		Group		*/
Packit Service 82fcde
Packit Service 82fcde
	ba,pt		%xcc, 3b			/* CTI				*/
Packit Service 82fcde
	 sllx		%o4, 32, %g3			/* IEU0		Group		*/
Packit Service 82fcde
34:	srlx		%o3, 40, %o4			/* IEU0		Group		*/
Packit Service 82fcde
	ba,pt		%xcc, 3b			/* CTI				*/
Packit Service 82fcde
Packit Service 82fcde
	 sllx		%o4, 40, %g3			/* IEU0		Group		*/
Packit Service 82fcde
35:	srlx		%o3, 48, %o4			/* IEU0		Group		*/
Packit Service 82fcde
	ba,pt		%xcc, 3b			/* CTI				*/
Packit Service 82fcde
	 sllx		%o4, 48, %g3			/* IEU0		Group		*/
Packit Service 82fcde
Packit Service 82fcde
36:	srlx		%o3, 56, %o4			/* IEU0		Group		*/
Packit Service 82fcde
	ba,pt		%xcc, 3b			/* CTI				*/
Packit Service 82fcde
	 sllx		%o4, 56, %g3			/* IEU0		Group		*/
Packit Service 82fcde
END(strncpy)
Packit Service 82fcde
libc_hidden_builtin_def (strncpy)