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