Merge tag 'sched-urgent-2020-12-27' of git://git.kernel.org/pub/scm/linux/kernel...
[linux/fpc-iii.git] / arch / sparc / lib / strncmp_32.S
blob794733f036b6c66653b582b120e5e2f615aa89e9
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  */
7 #include <linux/linkage.h>
8 #include <asm/export.h>
10         .text
11 ENTRY(strncmp)
12         mov     %o0, %g3
13         mov     0, %o3
15         cmp     %o2, 3
16         ble     7f
17          mov    0, %g2
19         sra     %o2, 2, %o4
20         ldub    [%g3], %o3
23         ldub    [%o1], %g2
24         add     %g3, 1, %g3
25         and     %o3, 0xff, %o0
27         cmp     %o0, 0
28         be      8f
29          add    %o1, 1, %o1
31         cmp     %o0, %g2
32         be,a    1f
33          ldub   [%g3], %o3
35         retl
36          sub    %o0, %g2, %o0
39         ldub    [%o1], %g2
40         add     %g3,1, %g3
41         and     %o3, 0xff, %o0
43         cmp     %o0, 0
44         be      8f
45          add    %o1, 1, %o1
47         cmp     %o0, %g2
48         be,a    1f
49          ldub   [%g3], %o3
51         retl
52          sub    %o0, %g2, %o0
55         ldub    [%o1], %g2
56         add     %g3, 1, %g3
57         and     %o3, 0xff, %o0
59         cmp     %o0, 0
60         be      8f
61          add    %o1, 1, %o1
63         cmp     %o0, %g2
64         be,a    1f
65          ldub   [%g3], %o3
67         retl
68          sub    %o0, %g2, %o0
71         ldub    [%o1], %g2
72         add     %g3, 1, %g3
73         and     %o3, 0xff, %o0
75         cmp     %o0, 0
76         be      8f
77          add    %o1, 1, %o1
79         cmp     %o0, %g2
80         be      1f
81          add    %o4, -1, %o4
83         retl
84          sub    %o0, %g2, %o0
88         cmp     %o4, 0
89         bg,a    0b
90          ldub   [%g3], %o3
92         b       7f
93          and    %o2, 3, %o2
96         ldub    [%o1], %g2
97         add     %g3, 1, %g3
98         and     %o3, 0xff, %o0
100         cmp     %o0, 0
101         be      8f
102          add    %o1, 1, %o1
104         cmp     %o0, %g2
105         be      7f
106          add    %o2, -1, %o2
109         retl
110          sub    %o0, %g2, %o0
113         cmp     %o2, 0
114         bg,a    9b
115          ldub   [%g3], %o3
117         and     %g2, 0xff, %o0
118         retl
119          sub    %o3, %o0, %o0
120 ENDPROC(strncmp)
121 EXPORT_SYMBOL(strncmp)