xref: /plan9-contrib/sys/src/libc/spim/memchr.s (revision 12b1df16f1a9233fb47d4260d51ef450cc19c368)
1	TEXT	memchr(SB), $0
2MOVW R1, 0(FP)
3
4	MOVW	n+8(FP), R1
5	MOVW	s1+0(FP), R2
6	MOVBU	c+4(FP), R3	// little endian, 4(FP) instead of 7(FP)
7	ADDU	R1, R2, R6
8
9	AND	$(~1), R1, R5
10	ADDU	R2, R5
11	BEQ	R2, R5, lt2
12
13l1:
14	MOVBU	0(R2), R4
15	MOVBU	1(R2), R7
16	BEQ	R3, R4, eq0
17	ADDU	$2, R2
18	BEQ	R3, R7, eq
19	BNE	R2, R5, l1
20
21lt2:
22	BEQ	R2, R6, zret
23
24l2:
25	MOVBU	(R2), R4
26	ADDU	$1, R2
27	BEQ	R3, R4, eq
28	BNE	R2, R6, l2
29zret:
30	MOVW	R0, R1
31	RET
32
33eq0:
34	MOVW	R2, R1
35	RET
36
37eq:
38	SUBU	$1,R2, R1
39	RET
40