xref: /csrg-svn/lib/libc/vax/string/strcmp.s (revision 17320)
1/*	strcmp.s	4.1	84/11/01	*/
2
3/*
4 * Compare string s1 lexicographically to string s2.
5 * Return:
6 *	0	s1 == s2
7 *	> 0	s1 > s2
8 *	< 0	s2 < s2
9 *
10 * strcmp(s1, s2)
11 *	char *s1, *s2;
12 */
13	.globl	_strcmp
14
15_strcmp:
16	.word	0x0
17	movq	4(ap),r3	# r3 = s1; r4 = s2
181:
19	locc	$0,$65535,(r4)	# look for '\0' in s2
20	bneq	2f
21	cmpc3	$65535,(r4),(r3)# compare full block
22	bneq	3f
23	movl	r1,r4		# advance s2
24	jbr	1b		# matched, next block
252:
26	subl2	r4,r1		# calculate length
27	incl	r1		# +1 for '\0'
28	cmpc3	r1,(r4),(r3)	# compare remainder
29	bneq	3f
30	ret			# r0 = 0 already
313:
32	subb3	(r1),(r3),r0	# r0 = *s1 - *s2
33	cvtbl	r0,r0
34	ret
35