]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | .text |
2 | .align 4 | |
3 | .global __memcmp, memcmp | |
4 | __memcmp: | |
5 | memcmp: | |
6 | #if 1 | |
7 | cmp %o2, 0 | |
8 | ble L3 | |
9 | mov 0, %g3 | |
10 | L5: | |
11 | ldub [%o0], %g2 | |
12 | ldub [%o1], %g3 | |
13 | sub %g2, %g3, %g2 | |
14 | mov %g2, %g3 | |
15 | sll %g2, 24, %g2 | |
16 | ||
17 | cmp %g2, 0 | |
18 | bne L3 | |
19 | add %o0, 1, %o0 | |
20 | ||
21 | add %o2, -1, %o2 | |
22 | ||
23 | cmp %o2, 0 | |
24 | bg L5 | |
25 | add %o1, 1, %o1 | |
26 | L3: | |
27 | sll %g3, 24, %o0 | |
28 | sra %o0, 24, %o0 | |
29 | ||
30 | retl | |
31 | nop | |
32 | #else | |
33 | save %sp, -104, %sp | |
34 | mov %i2, %o4 | |
35 | mov %i0, %o0 | |
36 | ||
37 | cmp %o4, 15 | |
38 | ble L72 | |
39 | mov %i1, %i2 | |
40 | ||
41 | andcc %i2, 3, %g0 | |
42 | be L161 | |
43 | andcc %o0, 3, %g2 | |
44 | L75: | |
45 | ldub [%o0], %g3 | |
46 | ldub [%i2], %g2 | |
47 | add %o0,1, %o0 | |
48 | ||
49 | subcc %g3, %g2, %i0 | |
50 | bne L156 | |
51 | add %i2, 1, %i2 | |
52 | ||
53 | andcc %i2, 3, %g0 | |
54 | bne L75 | |
55 | add %o4, -1, %o4 | |
56 | ||
57 | andcc %o0, 3, %g2 | |
58 | L161: | |
59 | bne,a L78 | |
60 | mov %i2, %i1 | |
61 | ||
62 | mov %o0, %i5 | |
63 | mov %i2, %i3 | |
64 | srl %o4, 2, %i4 | |
65 | ||
66 | cmp %i4, 0 | |
67 | bge L93 | |
68 | mov %i4, %g2 | |
69 | ||
70 | add %i4, 3, %g2 | |
71 | L93: | |
72 | sra %g2, 2, %g2 | |
73 | sll %g2, 2, %g2 | |
74 | sub %i4, %g2, %g2 | |
75 | ||
76 | cmp %g2, 1 | |
77 | be,a L88 | |
78 | add %o0, 4, %i5 | |
79 | ||
80 | bg L94 | |
81 | cmp %g2, 2 | |
82 | ||
83 | cmp %g2, 0 | |
84 | be,a L86 | |
85 | ld [%o0], %g3 | |
86 | ||
87 | b L162 | |
88 | ld [%i5], %g3 | |
89 | L94: | |
90 | be L81 | |
91 | cmp %g2, 3 | |
92 | ||
93 | be,a L83 | |
94 | add %o0, -4, %i5 | |
95 | ||
96 | b L162 | |
97 | ld [%i5], %g3 | |
98 | L81: | |
99 | add %o0, -8, %i5 | |
100 | ld [%o0], %g3 | |
101 | add %i2, -8, %i3 | |
102 | ld [%i2], %g2 | |
103 | ||
104 | b L82 | |
105 | add %i4, 2, %i4 | |
106 | L83: | |
107 | ld [%o0], %g4 | |
108 | add %i2, -4, %i3 | |
109 | ld [%i2], %g1 | |
110 | ||
111 | b L84 | |
112 | add %i4, 1, %i4 | |
113 | L86: | |
114 | b L87 | |
115 | ld [%i2], %g2 | |
116 | L88: | |
117 | add %i2, 4, %i3 | |
118 | ld [%o0], %g4 | |
119 | add %i4, -1, %i4 | |
120 | ld [%i2], %g1 | |
121 | L95: | |
122 | ld [%i5], %g3 | |
123 | L162: | |
124 | cmp %g4, %g1 | |
125 | be L87 | |
126 | ld [%i3], %g2 | |
127 | ||
128 | cmp %g4, %g1 | |
129 | L163: | |
130 | bleu L114 | |
131 | mov -1, %i0 | |
132 | ||
133 | b L114 | |
134 | mov 1, %i0 | |
135 | L87: | |
136 | ld [%i5 + 4], %g4 | |
137 | cmp %g3, %g2 | |
138 | bne L163 | |
139 | ld [%i3 + 4], %g1 | |
140 | L84: | |
141 | ld [%i5 + 8], %g3 | |
142 | ||
143 | cmp %g4, %g1 | |
144 | bne L163 | |
145 | ld [%i3 + 8], %g2 | |
146 | L82: | |
147 | ld [%i5 + 12], %g4 | |
148 | cmp %g3, %g2 | |
149 | bne L163 | |
150 | ld [%i3 + 12], %g1 | |
151 | ||
152 | add %i5, 16, %i5 | |
153 | ||
154 | addcc %i4, -4, %i4 | |
155 | bne L95 | |
156 | add %i3, 16, %i3 | |
157 | ||
158 | cmp %g4, %g1 | |
159 | bne L163 | |
160 | nop | |
161 | ||
162 | b L114 | |
163 | mov 0, %i0 | |
164 | L78: | |
165 | srl %o4, 2, %i0 | |
166 | and %o0, -4, %i3 | |
167 | orcc %i0, %g0, %g3 | |
168 | sll %g2, 3, %o7 | |
169 | mov 32, %g2 | |
170 | ||
171 | bge L129 | |
172 | sub %g2, %o7, %o1 | |
173 | ||
174 | add %i0, 3, %g3 | |
175 | L129: | |
176 | sra %g3, 2, %g2 | |
177 | sll %g2, 2, %g2 | |
178 | sub %i0, %g2, %g2 | |
179 | ||
180 | cmp %g2, 1 | |
181 | be,a L124 | |
182 | ld [%i3], %o3 | |
183 | ||
184 | bg L130 | |
185 | cmp %g2, 2 | |
186 | ||
187 | cmp %g2, 0 | |
188 | be,a L122 | |
189 | ld [%i3], %o2 | |
190 | ||
191 | b L164 | |
192 | sll %o3, %o7, %g3 | |
193 | L130: | |
194 | be L117 | |
195 | cmp %g2, 3 | |
196 | ||
197 | be,a L119 | |
198 | ld [%i3], %g1 | |
199 | ||
200 | b L164 | |
201 | sll %o3, %o7, %g3 | |
202 | L117: | |
203 | ld [%i3], %g4 | |
204 | add %i2, -8, %i1 | |
205 | ld [%i3 + 4], %o3 | |
206 | add %i0, 2, %i0 | |
207 | ld [%i2], %i4 | |
208 | ||
209 | b L118 | |
210 | add %i3, -4, %i3 | |
211 | L119: | |
212 | ld [%i3 + 4], %g4 | |
213 | add %i2, -4, %i1 | |
214 | ld [%i2], %i5 | |
215 | ||
216 | b L120 | |
217 | add %i0, 1, %i0 | |
218 | L122: | |
219 | ld [%i3 + 4], %g1 | |
220 | ld [%i2], %i4 | |
221 | ||
222 | b L123 | |
223 | add %i3, 4, %i3 | |
224 | L124: | |
225 | add %i2, 4, %i1 | |
226 | ld [%i3 + 4], %o2 | |
227 | add %i0, -1, %i0 | |
228 | ld [%i2], %i5 | |
229 | add %i3, 8, %i3 | |
230 | L131: | |
231 | sll %o3, %o7, %g3 | |
232 | L164: | |
233 | srl %o2, %o1, %g2 | |
234 | ld [%i3], %g1 | |
235 | or %g3, %g2, %g3 | |
236 | ||
237 | cmp %g3, %i5 | |
238 | bne L163 | |
239 | ld [%i1], %i4 | |
240 | L123: | |
241 | sll %o2, %o7, %g3 | |
242 | srl %g1, %o1, %g2 | |
243 | ld [%i3 + 4], %g4 | |
244 | or %g3, %g2, %g3 | |
245 | ||
246 | cmp %g3, %i4 | |
247 | bne L163 | |
248 | ld [%i1 + 4], %i5 | |
249 | L120: | |
250 | sll %g1, %o7, %g3 | |
251 | srl %g4, %o1, %g2 | |
252 | ld [%i3 + 8], %o3 | |
253 | or %g3, %g2, %g3 | |
254 | ||
255 | cmp %g3, %i5 | |
256 | bne L163 | |
257 | ld [%i1 + 8], %i4 | |
258 | L118: | |
259 | sll %g4, %o7, %g3 | |
260 | srl %o3, %o1, %g2 | |
261 | ld [%i3 + 12], %o2 | |
262 | or %g3, %g2, %g3 | |
263 | ||
264 | cmp %g3, %i4 | |
265 | bne L163 | |
266 | ld [%i1 + 12], %i5 | |
267 | ||
268 | add %i3, 16, %i3 | |
269 | addcc %i0, -4, %i0 | |
270 | bne L131 | |
271 | add %i1, 16, %i1 | |
272 | ||
273 | sll %o3, %o7, %g3 | |
274 | srl %o2, %o1, %g2 | |
275 | or %g3, %g2, %g3 | |
276 | ||
277 | cmp %g3, %i5 | |
278 | be,a L114 | |
279 | mov 0, %i0 | |
280 | ||
281 | b,a L163 | |
282 | L114: | |
283 | cmp %i0, 0 | |
284 | bne L156 | |
285 | and %o4, -4, %g2 | |
286 | ||
287 | add %o0, %g2, %o0 | |
288 | add %i2, %g2, %i2 | |
289 | and %o4, 3, %o4 | |
290 | L72: | |
291 | cmp %o4, 0 | |
292 | be L156 | |
293 | mov 0, %i0 | |
294 | ||
295 | ldub [%o0], %g3 | |
296 | L165: | |
297 | ldub [%i2], %g2 | |
298 | add %o0, 1, %o0 | |
299 | ||
300 | subcc %g3, %g2, %i0 | |
301 | bne L156 | |
302 | add %i2, 1, %i2 | |
303 | ||
304 | addcc %o4, -1, %o4 | |
305 | bne,a L165 | |
306 | ldub [%o0], %g3 | |
307 | ||
308 | mov 0, %i0 | |
309 | L156: | |
310 | ret | |
311 | restore | |
312 | #endif |