xref: /plan9/sys/src/libc/386/memcmp.s (revision 3e12c5d1bb89fc02707907988834ef147769ddaf)
1	TEXT	memcmp(SB),$0
2
3	MOVL	n+8(FP), BX
4	CMPL	BX, $0
5	JEQ	none
6	MOVL	p1+0(FP), DI
7	MOVL	p2+4(FP), SI
8	CLD
9/*
10 * first by longs
11 */
12
13	MOVL	BX, CX
14	SHRL	$2, CX
15
16	REP;	CMPSL
17	JNE	found
18
19/*
20 * then by bytes
21 */
22	ANDL	$3, BX
23	MOVL	BX, CX
24	REP;	CMPSB
25	JNE	found1
26
27none:
28	MOVL	$0, AX
29	RET
30
31/*
32 * if long found,
33 * back up and look by bytes
34 */
35found:
36	MOVL	$4, CX
37	SUBL	CX, DI
38	SUBL	CX, SI
39	REP;	CMPSB
40
41found1:
42	JLS	lt
43	MOVL	$-1, AX
44	RET
45lt:
46	MOVL	$1, AX
47	RET
48