xref: /plan9-contrib/sys/src/ape/lib/ap/amd64/strchr.s (revision 272efad760864ee41cfe633b56aea9b4f5cf3ae7)
1*272efad7SDavid du Colombier	TEXT	strchr(SB), $0
2*272efad7SDavid du Colombier
3*272efad7SDavid du Colombier	MOVQ	RARG, DI
4*272efad7SDavid du Colombier	MOVB	c+8(FP), AX
5*272efad7SDavid du Colombier	CMPB	AX, $0
6*272efad7SDavid du Colombier	JEQ	l2	/**/
7*272efad7SDavid du Colombier
8*272efad7SDavid du Colombier/*
9*272efad7SDavid du Colombier * char is not null
10*272efad7SDavid du Colombier */
11*272efad7SDavid du Colombierl1:
12*272efad7SDavid du Colombier	MOVB	(DI), BX
13*272efad7SDavid du Colombier	CMPB	BX, $0
14*272efad7SDavid du Colombier	JEQ	ret0
15*272efad7SDavid du Colombier	ADDQ	$1, DI
16*272efad7SDavid du Colombier	CMPB	AX, BX
17*272efad7SDavid du Colombier	JNE	l1
18*272efad7SDavid du Colombier
19*272efad7SDavid du Colombier	MOVQ	DI, AX
20*272efad7SDavid du Colombier	SUBQ	$1, AX
21*272efad7SDavid du Colombier	RET
22*272efad7SDavid du Colombier
23*272efad7SDavid du Colombier/*
24*272efad7SDavid du Colombier * char is null
25*272efad7SDavid du Colombier */
26*272efad7SDavid du Colombierl2:
27*272efad7SDavid du Colombier	MOVQ	$-1, CX
28*272efad7SDavid du Colombier	CLD
29*272efad7SDavid du Colombier
30*272efad7SDavid du Colombier	REPN;	SCASB
31*272efad7SDavid du Colombier
32*272efad7SDavid du Colombier	MOVQ	DI, AX
33*272efad7SDavid du Colombier	SUBQ	$1, AX
34*272efad7SDavid du Colombier	RET
35*272efad7SDavid du Colombier
36*272efad7SDavid du Colombierret0:
37*272efad7SDavid du Colombier	MOVQ	$0, AX
38*272efad7SDavid du Colombier	RET
39