Loading...
1/*
2 * strncmp.S: Hand optimized Sparc assembly of GCC output from GNU libc
3 * generic strncmp routine.
4 */
5
6 .text
7 .align 4
8 .global __strncmp, strncmp
9__strncmp:
10strncmp:
11 mov %o0, %g3
12 mov 0, %o3
13
14 cmp %o2, 3
15 ble 7f
16 mov 0, %g2
17
18 sra %o2, 2, %o4
19 ldub [%g3], %o3
20
210:
22 ldub [%o1], %g2
23 add %g3, 1, %g3
24 and %o3, 0xff, %o0
25
26 cmp %o0, 0
27 be 8f
28 add %o1, 1, %o1
29
30 cmp %o0, %g2
31 be,a 1f
32 ldub [%g3], %o3
33
34 retl
35 sub %o0, %g2, %o0
36
371:
38 ldub [%o1], %g2
39 add %g3,1, %g3
40 and %o3, 0xff, %o0
41
42 cmp %o0, 0
43 be 8f
44 add %o1, 1, %o1
45
46 cmp %o0, %g2
47 be,a 1f
48 ldub [%g3], %o3
49
50 retl
51 sub %o0, %g2, %o0
52
531:
54 ldub [%o1], %g2
55 add %g3, 1, %g3
56 and %o3, 0xff, %o0
57
58 cmp %o0, 0
59 be 8f
60 add %o1, 1, %o1
61
62 cmp %o0, %g2
63 be,a 1f
64 ldub [%g3], %o3
65
66 retl
67 sub %o0, %g2, %o0
68
691:
70 ldub [%o1], %g2
71 add %g3, 1, %g3
72 and %o3, 0xff, %o0
73
74 cmp %o0, 0
75 be 8f
76 add %o1, 1, %o1
77
78 cmp %o0, %g2
79 be 1f
80 add %o4, -1, %o4
81
82 retl
83 sub %o0, %g2, %o0
84
851:
86
87 cmp %o4, 0
88 bg,a 0b
89 ldub [%g3], %o3
90
91 b 7f
92 and %o2, 3, %o2
93
949:
95 ldub [%o1], %g2
96 add %g3, 1, %g3
97 and %o3, 0xff, %o0
98
99 cmp %o0, 0
100 be 8f
101 add %o1, 1, %o1
102
103 cmp %o0, %g2
104 be 7f
105 add %o2, -1, %o2
106
1078:
108 retl
109 sub %o0, %g2, %o0
110
1117:
112 cmp %o2, 0
113 bg,a 9b
114 ldub [%g3], %o3
115
116 and %g2, 0xff, %o0
117 retl
118 sub %o3, %o0, %o0
1/*
2 * strncmp.S: Hand optimized Sparc assembly of GCC output from GNU libc
3 * generic strncmp routine.
4 */
5
6#include <linux/linkage.h>
7
8 .text
9ENTRY(strncmp)
10 mov %o0, %g3
11 mov 0, %o3
12
13 cmp %o2, 3
14 ble 7f
15 mov 0, %g2
16
17 sra %o2, 2, %o4
18 ldub [%g3], %o3
19
200:
21 ldub [%o1], %g2
22 add %g3, 1, %g3
23 and %o3, 0xff, %o0
24
25 cmp %o0, 0
26 be 8f
27 add %o1, 1, %o1
28
29 cmp %o0, %g2
30 be,a 1f
31 ldub [%g3], %o3
32
33 retl
34 sub %o0, %g2, %o0
35
361:
37 ldub [%o1], %g2
38 add %g3,1, %g3
39 and %o3, 0xff, %o0
40
41 cmp %o0, 0
42 be 8f
43 add %o1, 1, %o1
44
45 cmp %o0, %g2
46 be,a 1f
47 ldub [%g3], %o3
48
49 retl
50 sub %o0, %g2, %o0
51
521:
53 ldub [%o1], %g2
54 add %g3, 1, %g3
55 and %o3, 0xff, %o0
56
57 cmp %o0, 0
58 be 8f
59 add %o1, 1, %o1
60
61 cmp %o0, %g2
62 be,a 1f
63 ldub [%g3], %o3
64
65 retl
66 sub %o0, %g2, %o0
67
681:
69 ldub [%o1], %g2
70 add %g3, 1, %g3
71 and %o3, 0xff, %o0
72
73 cmp %o0, 0
74 be 8f
75 add %o1, 1, %o1
76
77 cmp %o0, %g2
78 be 1f
79 add %o4, -1, %o4
80
81 retl
82 sub %o0, %g2, %o0
83
841:
85
86 cmp %o4, 0
87 bg,a 0b
88 ldub [%g3], %o3
89
90 b 7f
91 and %o2, 3, %o2
92
939:
94 ldub [%o1], %g2
95 add %g3, 1, %g3
96 and %o3, 0xff, %o0
97
98 cmp %o0, 0
99 be 8f
100 add %o1, 1, %o1
101
102 cmp %o0, %g2
103 be 7f
104 add %o2, -1, %o2
105
1068:
107 retl
108 sub %o0, %g2, %o0
109
1107:
111 cmp %o2, 0
112 bg,a 9b
113 ldub [%g3], %o3
114
115 and %g2, 0xff, %o0
116 retl
117 sub %o3, %o0, %o0
118ENDPROC(strncmp)