xref: /plan9/sys/src/libc/mips/strchr.s (revision 3e12c5d1bb89fc02707907988834ef147769ddaf)
1*3e12c5d1SDavid du Colombier	TEXT	strchr(SB), $0
2*3e12c5d1SDavid du ColombierMOVW R1, 0(FP)
3*3e12c5d1SDavid du Colombier	MOVB	c+7(FP), R4
4*3e12c5d1SDavid du Colombier	MOVW	s+0(FP), R3
5*3e12c5d1SDavid du Colombier
6*3e12c5d1SDavid du Colombier	BEQ	R4, l2
7*3e12c5d1SDavid du Colombier
8*3e12c5d1SDavid du Colombier/*
9*3e12c5d1SDavid du Colombier * char is not null
10*3e12c5d1SDavid du Colombier */
11*3e12c5d1SDavid du Colombierl1:
12*3e12c5d1SDavid du Colombier	MOVB	(R3), R1
13*3e12c5d1SDavid du Colombier	ADDU	$1, R3
14*3e12c5d1SDavid du Colombier	BEQ	R1, ret
15*3e12c5d1SDavid du Colombier	BNE	R1,R4, l1
16*3e12c5d1SDavid du Colombier	JMP	rm1
17*3e12c5d1SDavid du Colombier
18*3e12c5d1SDavid du Colombier/*
19*3e12c5d1SDavid du Colombier * char is null
20*3e12c5d1SDavid du Colombier * align to word
21*3e12c5d1SDavid du Colombier */
22*3e12c5d1SDavid du Colombierl2:
23*3e12c5d1SDavid du Colombier	AND	$3,R3, R1
24*3e12c5d1SDavid du Colombier	BEQ	R1, l3
25*3e12c5d1SDavid du Colombier	MOVB	(R3), R1
26*3e12c5d1SDavid du Colombier	ADDU	$1, R3
27*3e12c5d1SDavid du Colombier	BNE	R1, l2
28*3e12c5d1SDavid du Colombier	JMP	rm1
29*3e12c5d1SDavid du Colombier
30*3e12c5d1SDavid du Colombierl3:
31*3e12c5d1SDavid du Colombier	MOVW	$0xff000000, R6
32*3e12c5d1SDavid du Colombier	MOVW	$0x00ff0000, R7
33*3e12c5d1SDavid du Colombier
34*3e12c5d1SDavid du Colombierl4:
35*3e12c5d1SDavid du Colombier	MOVW	(R3), R5
36*3e12c5d1SDavid du Colombier	ADDU	$4, R3
37*3e12c5d1SDavid du Colombier	AND	R6,R5, R1
38*3e12c5d1SDavid du Colombier	AND	R7,R5, R2
39*3e12c5d1SDavid du Colombier	BEQ	R1, b0
40*3e12c5d1SDavid du Colombier	AND	$0xff00,R5, R1
41*3e12c5d1SDavid du Colombier	BEQ	R2, b1
42*3e12c5d1SDavid du Colombier	AND	$0xff,R5, R2
43*3e12c5d1SDavid du Colombier	BEQ	R1, b2
44*3e12c5d1SDavid du Colombier	BNE	R2, l4
45*3e12c5d1SDavid du Colombier
46*3e12c5d1SDavid du Colombierrm1:
47*3e12c5d1SDavid du Colombier	ADDU	$-1,R3, R1
48*3e12c5d1SDavid du Colombier	JMP	ret
49*3e12c5d1SDavid du Colombier
50*3e12c5d1SDavid du Colombierb2:
51*3e12c5d1SDavid du Colombier	ADDU	$-2,R3, R1
52*3e12c5d1SDavid du Colombier	JMP	ret
53*3e12c5d1SDavid du Colombier
54*3e12c5d1SDavid du Colombierb1:
55*3e12c5d1SDavid du Colombier	ADDU	$-3,R3, R1
56*3e12c5d1SDavid du Colombier	JMP	ret
57*3e12c5d1SDavid du Colombier
58*3e12c5d1SDavid du Colombierb0:
59*3e12c5d1SDavid du Colombier	ADDU	$-4,R3, R1
60*3e12c5d1SDavid du Colombier	JMP	ret
61*3e12c5d1SDavid du Colombier
62*3e12c5d1SDavid du Colombierret:
63*3e12c5d1SDavid du Colombier	RET
64