| /* | 
 |  * Copyright (C) 2004, 2007-2010, 2011-2014 Synopsys, Inc. All rights reserved. | 
 |  * | 
 |  * SPDX-License-Identifier:	GPL-2.0+ | 
 |  */ | 
 |  | 
 | .global memcpy | 
 | .align 4 | 
 | memcpy: | 
 | 	or	%r3, %r0, %r1 | 
 | 	asl_s	%r3, %r3, 30 | 
 | 	mov_s	%r5, %r0 | 
 | 	brls.d	%r2, %r3, .Lcopy_bytewise | 
 | 	sub.f	%r3, %r2, 1 | 
 | 	ld_s	%r12, [%r1, 0] | 
 | 	asr.f	%lp_count, %r3, 3 | 
 | 	bbit0.d	%r3, 2, .Lnox4 | 
 | 	bmsk_s	%r2, %r2, 1 | 
 | 	st.ab	%r12, [%r5, 4] | 
 | 	ld.a	%r12, [%r1, 4] | 
 | .Lnox4: | 
 | 	lppnz	.Lendloop | 
 | 	ld_s	%r3, [%r1, 4] | 
 | 	st.ab	%r12, [%r5, 4] | 
 | 	ld.a	%r12, [%r1, 8] | 
 | 	st.ab	%r3, [%r5, 4] | 
 | .Lendloop: | 
 | 	breq	%r2, 0, .Last_store | 
 | 	ld	%r3, [%r5, 0] | 
 | #ifdef __LITTLE_ENDIAN__ | 
 | 	add3	%r2, -1, %r2 | 
 | 	/* uses long immediate */ | 
 | 	xor_s	%r12, %r12, %r3 | 
 | 	bmsk	%r12, %r12, %r2 | 
 | 	xor_s	%r12, %r12, %r3 | 
 | #else /* __BIG_ENDIAN__ */ | 
 | 	sub3	%r2, 31, %r2 | 
 | 	/* uses long immediate */ | 
 | 	xor_s	%r3, %r3, %r12 | 
 | 	bmsk	%r3, %r3, %r2 | 
 | 	xor_s	%r12, %r12, %r3 | 
 | #endif /* _ENDIAN__ */ | 
 | .Last_store: | 
 | 	j_s.d	[%blink] | 
 | 	st	%r12, [%r5, 0] | 
 |  | 
 | 	.balign	4 | 
 | .Lcopy_bytewise: | 
 | 	jcs	[%blink] | 
 | 	ldb_s	%r12, [%r1, 0] | 
 | 	lsr.f	%lp_count, %r3 | 
 | 	bhs_s	.Lnox1 | 
 | 	stb.ab	%r12, [%r5, 1] | 
 | 	ldb.a	%r12, [%r1, 1] | 
 | .Lnox1: | 
 | 	lppnz	.Lendbloop | 
 | 	ldb_s	%r3, [%r1, 1] | 
 | 	stb.ab	%r12, [%r5, 1] | 
 | 	ldb.a	%r12, [%r1, 2] | 
 | 	stb.ab	%r3, [%r5, 1] | 
 | .Lendbloop: | 
 | 	j_s.d	[%blink] | 
 | 	stb	%r12, [%r5, 0] |