Loading...
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * strncmp.S: Hand optimized Sparc assembly of GCC output from GNU libc
4 * generic strncmp routine.
5 */
6
7#include <linux/linkage.h>
8#include <asm/export.h>
9
10 .text
11ENTRY(strncmp)
12 mov %o0, %g3
13 mov 0, %o3
14
15 cmp %o2, 3
16 ble 7f
17 mov 0, %g2
18
19 sra %o2, 2, %o4
20 ldub [%g3], %o3
21
220:
23 ldub [%o1], %g2
24 add %g3, 1, %g3
25 and %o3, 0xff, %o0
26
27 cmp %o0, 0
28 be 8f
29 add %o1, 1, %o1
30
31 cmp %o0, %g2
32 be,a 1f
33 ldub [%g3], %o3
34
35 retl
36 sub %o0, %g2, %o0
37
381:
39 ldub [%o1], %g2
40 add %g3,1, %g3
41 and %o3, 0xff, %o0
42
43 cmp %o0, 0
44 be 8f
45 add %o1, 1, %o1
46
47 cmp %o0, %g2
48 be,a 1f
49 ldub [%g3], %o3
50
51 retl
52 sub %o0, %g2, %o0
53
541:
55 ldub [%o1], %g2
56 add %g3, 1, %g3
57 and %o3, 0xff, %o0
58
59 cmp %o0, 0
60 be 8f
61 add %o1, 1, %o1
62
63 cmp %o0, %g2
64 be,a 1f
65 ldub [%g3], %o3
66
67 retl
68 sub %o0, %g2, %o0
69
701:
71 ldub [%o1], %g2
72 add %g3, 1, %g3
73 and %o3, 0xff, %o0
74
75 cmp %o0, 0
76 be 8f
77 add %o1, 1, %o1
78
79 cmp %o0, %g2
80 be 1f
81 add %o4, -1, %o4
82
83 retl
84 sub %o0, %g2, %o0
85
861:
87
88 cmp %o4, 0
89 bg,a 0b
90 ldub [%g3], %o3
91
92 b 7f
93 and %o2, 3, %o2
94
959:
96 ldub [%o1], %g2
97 add %g3, 1, %g3
98 and %o3, 0xff, %o0
99
100 cmp %o0, 0
101 be 8f
102 add %o1, 1, %o1
103
104 cmp %o0, %g2
105 be 7f
106 add %o2, -1, %o2
107
1088:
109 retl
110 sub %o0, %g2, %o0
111
1127:
113 cmp %o2, 0
114 bg,a 9b
115 ldub [%g3], %o3
116
117 and %g2, 0xff, %o0
118 retl
119 sub %o3, %o0, %o0
120ENDPROC(strncmp)
121EXPORT_SYMBOL(strncmp)
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)