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