xref: /plan9-contrib/sys/src/libc/riscv/memchr.s (revision ce95e1b3727b9cb1c223ffbed69aff21a8ced255)
1	TEXT	memchr(SB), $0
2MOVW R8, 0(FP)
3
4	MOVW	n+8(FP), R8
5	MOVW	s1+0(FP), R9
6	MOVBU	c+4(FP), R10
7	ADD	R8, R9, R13
8
9	AND	$(~1), R8, R12
10	ADD	R9, R12
11	BEQ	R9, R12, lt2
12
13l1:
14	MOVBU	0(R9), R11
15	MOVBU	1(R9), R14
16	BEQ	R10, R11, eq0
17	ADD	$2, R9
18	BEQ	R10, R14, eq
19	BNE	R9, R12, l1
20
21lt2:
22	BEQ	R9, R13, zret
23
24l2:
25	MOVBU	(R9), R11
26	ADD	$1, R9
27	BEQ	R10, R11, eq
28	BNE	R9, R13, l2
29zret:
30	MOVW	R0, R8
31	RET
32
33eq0:
34	MOVW	R9, R8
35	RET
36
37eq:
38	SUB	$1,R9, R8
39	RET
40