xref: /openbmc/linux/arch/sparc/lib/strncmp_32.S (revision 8695c37d)
118269c0fSSam Ravnborg/*
218269c0fSSam Ravnborg * strncmp.S: Hand optimized Sparc assembly of GCC output from GNU libc
318269c0fSSam Ravnborg *            generic strncmp routine.
418269c0fSSam Ravnborg */
518269c0fSSam Ravnborg
68695c37dSDavid S. Miller#include <linux/linkage.h>
78695c37dSDavid S. Miller
818269c0fSSam Ravnborg	.text
98695c37dSDavid S. MillerENTRY(strncmp)
1018269c0fSSam Ravnborg	mov	%o0, %g3
1118269c0fSSam Ravnborg	mov	0, %o3
1218269c0fSSam Ravnborg
1318269c0fSSam Ravnborg	cmp	%o2, 3
1418269c0fSSam Ravnborg	ble	7f
1518269c0fSSam Ravnborg	 mov	0, %g2
1618269c0fSSam Ravnborg
1718269c0fSSam Ravnborg	sra	%o2, 2, %o4
1818269c0fSSam Ravnborg	ldub	[%g3], %o3
1918269c0fSSam Ravnborg
2018269c0fSSam Ravnborg0:
2118269c0fSSam Ravnborg	ldub	[%o1], %g2
2218269c0fSSam Ravnborg	add	%g3, 1, %g3
2318269c0fSSam Ravnborg	and	%o3, 0xff, %o0
2418269c0fSSam Ravnborg
2518269c0fSSam Ravnborg	cmp	%o0, 0
2618269c0fSSam Ravnborg	be	8f
2718269c0fSSam Ravnborg	 add	%o1, 1, %o1
2818269c0fSSam Ravnborg
2918269c0fSSam Ravnborg	cmp	%o0, %g2
3018269c0fSSam Ravnborg	be,a	1f
3118269c0fSSam Ravnborg	 ldub	[%g3], %o3
3218269c0fSSam Ravnborg
3318269c0fSSam Ravnborg	retl
3418269c0fSSam Ravnborg	 sub	%o0, %g2, %o0
3518269c0fSSam Ravnborg
3618269c0fSSam Ravnborg1:
3718269c0fSSam Ravnborg	ldub	[%o1], %g2
3818269c0fSSam Ravnborg	add	%g3,1, %g3
3918269c0fSSam Ravnborg	and	%o3, 0xff, %o0
4018269c0fSSam Ravnborg
4118269c0fSSam Ravnborg	cmp	%o0, 0
4218269c0fSSam Ravnborg	be	8f
4318269c0fSSam Ravnborg	 add	%o1, 1, %o1
4418269c0fSSam Ravnborg
4518269c0fSSam Ravnborg	cmp	%o0, %g2
4618269c0fSSam Ravnborg	be,a	1f
4718269c0fSSam Ravnborg	 ldub	[%g3], %o3
4818269c0fSSam Ravnborg
4918269c0fSSam Ravnborg	retl
5018269c0fSSam Ravnborg	 sub	%o0, %g2, %o0
5118269c0fSSam Ravnborg
5218269c0fSSam Ravnborg1:
5318269c0fSSam Ravnborg	ldub	[%o1], %g2
5418269c0fSSam Ravnborg	add	%g3, 1, %g3
5518269c0fSSam Ravnborg	and	%o3, 0xff, %o0
5618269c0fSSam Ravnborg
5718269c0fSSam Ravnborg	cmp	%o0, 0
5818269c0fSSam Ravnborg	be	8f
5918269c0fSSam Ravnborg	 add	%o1, 1, %o1
6018269c0fSSam Ravnborg
6118269c0fSSam Ravnborg	cmp	%o0, %g2
6218269c0fSSam Ravnborg	be,a	1f
6318269c0fSSam Ravnborg	 ldub	[%g3], %o3
6418269c0fSSam Ravnborg
6518269c0fSSam Ravnborg	retl
6618269c0fSSam Ravnborg	 sub	%o0, %g2, %o0
6718269c0fSSam Ravnborg
6818269c0fSSam Ravnborg1:
6918269c0fSSam Ravnborg	ldub	[%o1], %g2
7018269c0fSSam Ravnborg	add	%g3, 1, %g3
7118269c0fSSam Ravnborg	and	%o3, 0xff, %o0
7218269c0fSSam Ravnborg
7318269c0fSSam Ravnborg	cmp	%o0, 0
7418269c0fSSam Ravnborg	be	8f
7518269c0fSSam Ravnborg	 add	%o1, 1, %o1
7618269c0fSSam Ravnborg
7718269c0fSSam Ravnborg	cmp	%o0, %g2
7818269c0fSSam Ravnborg	be	1f
7918269c0fSSam Ravnborg	 add	%o4, -1, %o4
8018269c0fSSam Ravnborg
8118269c0fSSam Ravnborg	retl
8218269c0fSSam Ravnborg	 sub	%o0, %g2, %o0
8318269c0fSSam Ravnborg
8418269c0fSSam Ravnborg1:
8518269c0fSSam Ravnborg
8618269c0fSSam Ravnborg	cmp	%o4, 0
8718269c0fSSam Ravnborg	bg,a	0b
8818269c0fSSam Ravnborg	 ldub	[%g3], %o3
8918269c0fSSam Ravnborg
9018269c0fSSam Ravnborg	b	7f
9118269c0fSSam Ravnborg	 and	%o2, 3, %o2
9218269c0fSSam Ravnborg
9318269c0fSSam Ravnborg9:
9418269c0fSSam Ravnborg	ldub	[%o1], %g2
9518269c0fSSam Ravnborg	add	%g3, 1, %g3
9618269c0fSSam Ravnborg	and	%o3, 0xff, %o0
9718269c0fSSam Ravnborg
9818269c0fSSam Ravnborg	cmp	%o0, 0
9918269c0fSSam Ravnborg	be	8f
10018269c0fSSam Ravnborg	 add	%o1, 1, %o1
10118269c0fSSam Ravnborg
10218269c0fSSam Ravnborg	cmp	%o0, %g2
10318269c0fSSam Ravnborg	be	7f
10418269c0fSSam Ravnborg	 add	%o2, -1, %o2
10518269c0fSSam Ravnborg
10618269c0fSSam Ravnborg8:
10718269c0fSSam Ravnborg	retl
10818269c0fSSam Ravnborg	 sub	%o0, %g2, %o0
10918269c0fSSam Ravnborg
11018269c0fSSam Ravnborg7:
11118269c0fSSam Ravnborg	cmp	%o2, 0
11218269c0fSSam Ravnborg	bg,a	9b
11318269c0fSSam Ravnborg	 ldub	[%g3], %o3
11418269c0fSSam Ravnborg
11518269c0fSSam Ravnborg	and	%g2, 0xff, %o0
11618269c0fSSam Ravnborg	retl
11718269c0fSSam Ravnborg	 sub	%o3, %o0, %o0
1188695c37dSDavid S. MillerENDPROC(strncmp)
119