xref: /openbmc/linux/arch/sparc/lib/strncmp_32.S (revision 18269c0f)
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
618269c0fSSam Ravnborg	.text
718269c0fSSam Ravnborg	.align 4
818269c0fSSam Ravnborg	.global __strncmp, strncmp
918269c0fSSam Ravnborg__strncmp:
1018269c0fSSam Ravnborgstrncmp:
1118269c0fSSam Ravnborg	mov	%o0, %g3
1218269c0fSSam Ravnborg	mov	0, %o3
1318269c0fSSam Ravnborg
1418269c0fSSam Ravnborg	cmp	%o2, 3
1518269c0fSSam Ravnborg	ble	7f
1618269c0fSSam Ravnborg	 mov	0, %g2
1718269c0fSSam Ravnborg
1818269c0fSSam Ravnborg	sra	%o2, 2, %o4
1918269c0fSSam Ravnborg	ldub	[%g3], %o3
2018269c0fSSam Ravnborg
2118269c0fSSam Ravnborg0:
2218269c0fSSam Ravnborg	ldub	[%o1], %g2
2318269c0fSSam Ravnborg	add	%g3, 1, %g3
2418269c0fSSam Ravnborg	and	%o3, 0xff, %o0
2518269c0fSSam Ravnborg
2618269c0fSSam Ravnborg	cmp	%o0, 0
2718269c0fSSam Ravnborg	be	8f
2818269c0fSSam Ravnborg	 add	%o1, 1, %o1
2918269c0fSSam Ravnborg
3018269c0fSSam Ravnborg	cmp	%o0, %g2
3118269c0fSSam Ravnborg	be,a	1f
3218269c0fSSam Ravnborg	 ldub	[%g3], %o3
3318269c0fSSam Ravnborg
3418269c0fSSam Ravnborg	retl
3518269c0fSSam Ravnborg	 sub	%o0, %g2, %o0
3618269c0fSSam Ravnborg
3718269c0fSSam Ravnborg1:
3818269c0fSSam Ravnborg	ldub	[%o1], %g2
3918269c0fSSam Ravnborg	add	%g3,1, %g3
4018269c0fSSam Ravnborg	and	%o3, 0xff, %o0
4118269c0fSSam Ravnborg
4218269c0fSSam Ravnborg	cmp	%o0, 0
4318269c0fSSam Ravnborg	be	8f
4418269c0fSSam Ravnborg	 add	%o1, 1, %o1
4518269c0fSSam Ravnborg
4618269c0fSSam Ravnborg	cmp	%o0, %g2
4718269c0fSSam Ravnborg	be,a	1f
4818269c0fSSam Ravnborg	 ldub	[%g3], %o3
4918269c0fSSam Ravnborg
5018269c0fSSam Ravnborg	retl
5118269c0fSSam Ravnborg	 sub	%o0, %g2, %o0
5218269c0fSSam Ravnborg
5318269c0fSSam Ravnborg1:
5418269c0fSSam Ravnborg	ldub	[%o1], %g2
5518269c0fSSam Ravnborg	add	%g3, 1, %g3
5618269c0fSSam Ravnborg	and	%o3, 0xff, %o0
5718269c0fSSam Ravnborg
5818269c0fSSam Ravnborg	cmp	%o0, 0
5918269c0fSSam Ravnborg	be	8f
6018269c0fSSam Ravnborg	 add	%o1, 1, %o1
6118269c0fSSam Ravnborg
6218269c0fSSam Ravnborg	cmp	%o0, %g2
6318269c0fSSam Ravnborg	be,a	1f
6418269c0fSSam Ravnborg	 ldub	[%g3], %o3
6518269c0fSSam Ravnborg
6618269c0fSSam Ravnborg	retl
6718269c0fSSam Ravnborg	 sub	%o0, %g2, %o0
6818269c0fSSam Ravnborg
6918269c0fSSam Ravnborg1:
7018269c0fSSam Ravnborg	ldub	[%o1], %g2
7118269c0fSSam Ravnborg	add	%g3, 1, %g3
7218269c0fSSam Ravnborg	and	%o3, 0xff, %o0
7318269c0fSSam Ravnborg
7418269c0fSSam Ravnborg	cmp	%o0, 0
7518269c0fSSam Ravnborg	be	8f
7618269c0fSSam Ravnborg	 add	%o1, 1, %o1
7718269c0fSSam Ravnborg
7818269c0fSSam Ravnborg	cmp	%o0, %g2
7918269c0fSSam Ravnborg	be	1f
8018269c0fSSam Ravnborg	 add	%o4, -1, %o4
8118269c0fSSam Ravnborg
8218269c0fSSam Ravnborg	retl
8318269c0fSSam Ravnborg	 sub	%o0, %g2, %o0
8418269c0fSSam Ravnborg
8518269c0fSSam Ravnborg1:
8618269c0fSSam Ravnborg
8718269c0fSSam Ravnborg	cmp	%o4, 0
8818269c0fSSam Ravnborg	bg,a	0b
8918269c0fSSam Ravnborg	 ldub	[%g3], %o3
9018269c0fSSam Ravnborg
9118269c0fSSam Ravnborg	b	7f
9218269c0fSSam Ravnborg	 and	%o2, 3, %o2
9318269c0fSSam Ravnborg
9418269c0fSSam Ravnborg9:
9518269c0fSSam Ravnborg	ldub	[%o1], %g2
9618269c0fSSam Ravnborg	add	%g3, 1, %g3
9718269c0fSSam Ravnborg	and	%o3, 0xff, %o0
9818269c0fSSam Ravnborg
9918269c0fSSam Ravnborg	cmp	%o0, 0
10018269c0fSSam Ravnborg	be	8f
10118269c0fSSam Ravnborg	 add	%o1, 1, %o1
10218269c0fSSam Ravnborg
10318269c0fSSam Ravnborg	cmp	%o0, %g2
10418269c0fSSam Ravnborg	be	7f
10518269c0fSSam Ravnborg	 add	%o2, -1, %o2
10618269c0fSSam Ravnborg
10718269c0fSSam Ravnborg8:
10818269c0fSSam Ravnborg	retl
10918269c0fSSam Ravnborg	 sub	%o0, %g2, %o0
11018269c0fSSam Ravnborg
11118269c0fSSam Ravnborg7:
11218269c0fSSam Ravnborg	cmp	%o2, 0
11318269c0fSSam Ravnborg	bg,a	9b
11418269c0fSSam Ravnborg	 ldub	[%g3], %o3
11518269c0fSSam Ravnborg
11618269c0fSSam Ravnborg	and	%g2, 0xff, %o0
11718269c0fSSam Ravnborg	retl
11818269c0fSSam Ravnborg	 sub	%o3, %o0, %o0
119