summaryrefslogtreecommitdiff
path: root/arch/sparc/lib/memcmp_64.S
blob: d3fdaa898566080ccc828a38e2e3358457c7c261 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/*
 * Sparc64 optimized memcmp code.
 *
 * Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
 * Copyright (C) 2000 David S. Miller (davem@redhat.com)
 */

	.text
	.align	32
	.globl	__memcmp, memcmp
__memcmp:
memcmp:
	cmp	%o2, 0		! IEU1	Group
loop:	be,pn	%icc, ret_0	! CTI
	 nop			! IEU0
	ldub	[%o0], %g7	! LSU	Group
	ldub	[%o1], %g3	! LSU	Group
	sub	%o2, 1, %o2	! IEU0
	add	%o0, 1, %o0	! IEU1
	add	%o1, 1, %o1	! IEU0	Group
	subcc	%g7, %g3, %g3	! IEU1	Group
	be,pt	%icc, loop	! CTI
	 cmp	%o2, 0		! IEU1	Group

ret_n0:	retl
	 mov	%g3, %o0
ret_0:	retl
	 mov	0, %o0