summaryrefslogtreecommitdiff
path: root/sys/src/ape/lib/ap/amd64/strchr.s
blob: 317537361991721b396447dfcdfa4168abae56b3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
	TEXT	strchr(SB), $0

	MOVQ	RARG, DI
	MOVB	c+8(FP), AX
	CMPB	AX, $0
	JEQ	l2	/**/

/*
 * char is not null
 */
l1:
	MOVB	(DI), BX
	CMPB	BX, $0
	JEQ	ret0
	ADDQ	$1, DI
	CMPB	AX, BX
	JNE	l1

	MOVQ	DI, AX
	SUBQ	$1, AX
	RET

/*
 * char is null
 */
l2:
	MOVQ	$-1, CX
	CLD

	REPN;	SCASB

	MOVQ	DI, AX
	SUBQ	$1, AX
	RET

ret0:
	MOVQ	$0, AX
	RET