]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libc/sparc/strchr.s
fltfmt: %.ng is supposed to print a number with n significant figures, but it prints...
[plan9front.git] / sys / src / libc / sparc / strchr.s
1         TEXT    strchr(SB), $0
2
3 MOVW    R7, 0(FP)
4         MOVB    c+7(FP), R10
5         MOVW    s+0(FP), R9
6
7         SUBCC   R0,R10, R0
8         BE      l2
9
10 /*
11  * char is not null
12  */
13 l1:
14         MOVB    (R9), R7
15         ADD     $1, R9
16         SUBCC   R0,R7, R0
17         BE      ret
18         SUBCC   R7,R10, R0
19         BNE     l1
20         JMP     rm1
21
22 /*
23  * char is null
24  * align to word
25  */
26 l2:
27         ANDCC   $3,R9, R0
28         BE      l3
29         MOVB    (R9), R7
30         ADD     $1, R9
31         SUBCC   R0,R7, R0
32         BNE     l2
33         JMP     rm1
34
35 /*
36  * develop byte masks
37  */
38 l3:
39         MOVW    $0xff, R17
40         SLL     $8,R17, R16
41         SLL     $16,R17, R13
42         SLL     $24,R17, R12
43
44 l4:
45         MOVW    (R9), R11
46         ADD     $4, R9
47         ANDCC   R12,R11, R0
48         BE      b0
49         ANDCC   R13,R11, R0
50         BE      b1
51         ANDCC   R16,R11, R0
52         BE      b2
53         ANDCC   R17,R11, R0
54         BNE     l4
55
56 rm1:
57         SUB     $1,R9, R7
58         JMP     ret
59
60 b2:
61         SUB     $2,R9, R7
62         JMP     ret
63
64 b1:
65         SUB     $3,R9, R7
66         JMP     ret
67
68 b0:
69         SUB     $4,R9, R7
70         JMP     ret
71
72 ret:
73         RETURN