/*
 * Copyright (C) 2004, 2007-2010, 2011-2014 Synopsys, Inc. All rights reserved.
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

#ifdef __LITTLE_ENDIAN__
#define WORD2 r2
#define SHIFT r3
#else /* __BIG_ENDIAN__ */
#define WORD2 r3
#define SHIFT r2
#endif /* _ENDIAN__ */

.global memcmp
.align 4
memcmp:
	or	%r12, %r0, %r1
	asl_s	%r12, %r12, 30
	sub	%r3, %r2, 1
	brls	%r2, %r12, .Lbytewise
	ld	%r4, [%r0, 0]
	ld	%r5, [%r1, 0]
	lsr.f	%lp_count, %r3, 3
	lpne	.Loop_end
	ld_s	WORD2, [%r0, 4]
	ld_s	%r12, [%r1, 4]
	brne	%r4, %r5, .Leven
	ld.a	%r4, [%r0, 8]
	ld.a	%r5, [%r1, 8]
	brne	WORD2, %r12, .Lodd
.Loop_end:
	asl_s	SHIFT, SHIFT, 3
	bhs_s	.Last_cmp
	brne	%r4, %r5, .Leven
	ld	%r4, [%r0, 4]
	ld	%r5, [%r1, 4]
#ifdef __LITTLE_ENDIAN__
	nop_s
	/* one more load latency cycle */
.Last_cmp:
	xor	%r0, %r4, %r5
	bset	%r0, %r0, SHIFT
	sub_s	%r1, %r0, 1
	bic_s	%r1, %r1, %r0
	norm	%r1, %r1
	b.d	.Leven_cmp
	and	%r1, %r1, 24
.Leven:
	xor	%r0, %r4, %r5
	sub_s	%r1, %r0, 1
	bic_s	%r1, %r1, %r0
	norm	%r1, %r1
	/* slow track insn */
	and	%r1, %r1, 24
.Leven_cmp:
	asl	%r2, %r4, %r1
	asl	%r12, %r5, %r1
	lsr_s	%r2, %r2, 1
	lsr_s	%r12, %r12, 1
	j_s.d	[%blink]
	sub	%r0, %r2, %r12
	.balign	4
.Lodd:
	xor	%r0, WORD2, %r12
	sub_s	%r1, %r0, 1
	bic_s	%r1, %r1, %r0
	norm	%r1, %r1
	/* slow track insn */
	and	%r1, %r1, 24
	asl_s	%r2, %r2, %r1
	asl_s	%r12, %r12, %r1
	lsr_s	%r2, %r2, 1
	lsr_s	%r12, %r12, 1
	j_s.d	[%blink]
	sub	%r0, %r2, %r12
#else /* __BIG_ENDIAN__ */
.Last_cmp:
	neg_s	SHIFT, SHIFT
	lsr	%r4, %r4, SHIFT
	lsr	%r5, %r5, SHIFT
	/* slow track insn */
.Leven:
	sub.f	%r0, %r4, %r5
	mov.ne	%r0, 1
	j_s.d	[%blink]
	bset.cs	%r0, %r0, 31
.Lodd:
	cmp_s	WORD2, %r12

	mov_s	%r0, 1
	j_s.d	[%blink]
	bset.cs	%r0, %r0, 31
#endif /* _ENDIAN__ */
	.balign	4
.Lbytewise:
	breq	%r2, 0, .Lnil
	ldb	%r4, [%r0, 0]
	ldb	%r5, [%r1, 0]
	lsr.f	%lp_count, %r3
	lpne	.Lbyte_end
	ldb_s	%r3, [%r0, 1]
	ldb	%r12, [%r1, 1]
	brne	%r4, %r5, .Lbyte_even
	ldb.a	%r4, [%r0, 2]
	ldb.a	%r5, [%r1, 2]
	brne	%r3, %r12, .Lbyte_odd
.Lbyte_end:
	bcc	.Lbyte_even
	brne	%r4, %r5, .Lbyte_even
	ldb_s	%r3, [%r0, 1]
	ldb_s	%r12, [%r1, 1]
.Lbyte_odd:
	j_s.d	[%blink]
	sub	%r0, %r3, %r12
.Lbyte_even:
	j_s.d	[%blink]
	sub	%r0, %r4, %r5
.Lnil:
	j_s.d	[%blink]
	mov	%r0, 0
