This was an unused derivate of an old version of s_client.c that had
[openssl.git] / crypto / bn / asm / sparc.s
1         .file   "bn_mulw.c"
2 gcc2_compiled.:
3 .section        ".text"
4         .align 4
5         .global bn_mul_add_words
6         .type    bn_mul_add_words,#function
7         .proc   016
8 bn_mul_add_words:
9         !#PROLOGUE# 0
10         save %sp,-112,%sp
11         !#PROLOGUE# 1
12         mov %i0,%o0
13         mov %i1,%o2
14         mov %i2,%g1
15         mov %i3,%o1
16         mov 0,%i4
17         add %o0,12,%g4
18         add %o2,12,%o7
19 .LL2:
20         mov %i4,%i3
21         mov 0,%i2
22         ld [%o0],%g2
23         mov %g2,%i1
24         ld [%o2],%g2
25         mov 0,%i0
26         umul %o1,%g2,%g3
27         rd %y,%g2
28         addcc %g3,%i1,%g3
29         addx %g2,%i0,%g2
30         addcc %g3,%i3,%g3
31         addx %g2,%i2,%g2
32         st %g3,[%o0]
33         mov %g2,%i5
34         mov 0,%i4
35         addcc %g1,-1,%g1
36         be .LL3
37         mov %i5,%i4
38         mov %i4,%i3
39         mov 0,%i2
40         ld [%g4-8],%g2
41         mov %g2,%i1
42         ld [%o7-8],%g2
43         mov 0,%i0
44         umul %o1,%g2,%g3
45         rd %y,%g2
46         addcc %g3,%i1,%g3
47         addx %g2,%i0,%g2
48         addcc %g3,%i3,%g3
49         addx %g2,%i2,%g2
50         st %g3,[%g4-8]
51         mov %g2,%i5
52         mov 0,%i4
53         addcc %g1,-1,%g1
54         be .LL3
55         mov %i5,%i4
56         mov %i4,%i3
57         mov 0,%i2
58         ld [%g4-4],%g2
59         mov %g2,%i1
60         ld [%o7-4],%g2
61         mov 0,%i0
62         umul %o1,%g2,%g3
63         rd %y,%g2
64         addcc %g3,%i1,%g3
65         addx %g2,%i0,%g2
66         addcc %g3,%i3,%g3
67         addx %g2,%i2,%g2
68         st %g3,[%g4-4]
69         mov %g2,%i5
70         mov 0,%i4
71         addcc %g1,-1,%g1
72         be .LL3
73         mov %i5,%i4
74         mov %i4,%i3
75         mov 0,%i2
76         ld [%g4],%g2
77         mov %g2,%i1
78         ld [%o7],%g2
79         mov 0,%i0
80         umul %o1,%g2,%g3
81         rd %y,%g2
82         addcc %g3,%i1,%g3
83         addx %g2,%i0,%g2
84         addcc %g3,%i3,%g3
85         addx %g2,%i2,%g2
86         st %g3,[%g4]
87         mov %g2,%i5
88         mov 0,%i4
89         addcc %g1,-1,%g1
90         be .LL3
91         mov %i5,%i4
92         add %o7,16,%o7
93         add %o2,16,%o2
94         add %g4,16,%g4
95         b .LL2
96         add %o0,16,%o0
97 .LL3:
98         ret
99         restore %g0,%i4,%o0
100 .LLfe1:
101         .size    bn_mul_add_words,.LLfe1-bn_mul_add_words
102         .align 4
103         .global bn_mul_words
104         .type    bn_mul_words,#function
105         .proc   016
106 bn_mul_words:
107         !#PROLOGUE# 0
108         save %sp,-112,%sp
109         !#PROLOGUE# 1
110         mov %i0,%o7
111         mov %i1,%o0
112         mov %i2,%i4
113         mov %i3,%g4
114         mov 0,%i0
115         add %o7,12,%g1
116         add %o0,12,%i5
117 .LL18:
118         mov %i0,%g3
119         mov 0,%g2
120         ld [%o0],%i2
121         umul %g4,%i2,%i3
122         rd %y,%i2
123         addcc %i3,%g3,%i3
124         addx %i2,%g2,%i2
125         st %i3,[%o7]
126         mov %i2,%i1
127         mov 0,%i0
128         addcc %i4,-1,%i4
129         be .LL19
130         mov %i1,%i0
131         mov %i0,%g3
132         mov 0,%g2
133         ld [%i5-8],%i2
134         umul %g4,%i2,%i3
135         rd %y,%i2
136         addcc %i3,%g3,%i3
137         addx %i2,%g2,%i2
138         st %i3,[%g1-8]
139         mov %i2,%i1
140         mov 0,%i0
141         addcc %i4,-1,%i4
142         be .LL19
143         mov %i1,%i0
144         mov %i0,%g3
145         mov 0,%g2
146         ld [%i5-4],%i2
147         umul %g4,%i2,%i3
148         rd %y,%i2
149         addcc %i3,%g3,%i3
150         addx %i2,%g2,%i2
151         st %i3,[%g1-4]
152         mov %i2,%i1
153         mov 0,%i0
154         addcc %i4,-1,%i4
155         be .LL19
156         mov %i1,%i0
157         mov %i0,%g3
158         mov 0,%g2
159         ld [%i5],%i2
160         umul %g4,%i2,%i3
161         rd %y,%i2
162         addcc %i3,%g3,%i3
163         addx %i2,%g2,%i2
164         st %i3,[%g1]
165         mov %i2,%i1
166         mov 0,%i0
167         addcc %i4,-1,%i4
168         be .LL19
169         mov %i1,%i0
170         add %i5,16,%i5
171         add %o0,16,%o0
172         add %g1,16,%g1
173         b .LL18
174         add %o7,16,%o7
175 .LL19:
176         ret
177         restore
178 .LLfe2:
179         .size    bn_mul_words,.LLfe2-bn_mul_words
180         .align 4
181         .global bn_sqr_words
182         .type    bn_sqr_words,#function
183         .proc   020
184 bn_sqr_words:
185         !#PROLOGUE# 0
186         !#PROLOGUE# 1
187         mov %o0,%g4
188         add %g4,28,%o3
189         add %o1,12,%g1
190 .LL34:
191         ld [%o1],%o0
192         addcc %o2,-1,%o2
193         umul %o0,%o0,%o5
194         rd %y,%o4
195         st %o5,[%g4]
196         mov %o4,%g3
197         mov 0,%g2
198         be .LL35
199         st %g3,[%o3-24]
200         ld [%g1-8],%o0
201         addcc %o2,-1,%o2
202         umul %o0,%o0,%o5
203         rd %y,%o4
204         st %o5,[%o3-20]
205         mov %o4,%g3
206         mov 0,%g2
207         be .LL35
208         st %g3,[%o3-16]
209         ld [%g1-4],%o0
210         addcc %o2,-1,%o2
211         umul %o0,%o0,%o5
212         rd %y,%o4
213         st %o5,[%o3-12]
214         mov %o4,%g3
215         mov 0,%g2
216         be .LL35
217         st %g3,[%o3-8]
218         ld [%g1],%o0
219         addcc %o2,-1,%o2
220         umul %o0,%o0,%o5
221         rd %y,%o4
222         st %o5,[%o3-4]
223         mov %o4,%g3
224         mov 0,%g2
225         be .LL35
226         st %g3,[%o3]
227         add %g1,16,%g1
228         add %o1,16,%o1
229         add %o3,32,%o3
230         b .LL34
231         add %g4,32,%g4
232 .LL35:
233         retl
234         nop
235 .LLfe3:
236         .size    bn_sqr_words,.LLfe3-bn_sqr_words
237         .align 4
238         .global bn_add_words
239         .type    bn_add_words,#function
240         .proc   016
241 bn_add_words:
242         !#PROLOGUE# 0
243         save %sp,-112,%sp
244         !#PROLOGUE# 1
245         mov %i0,%o2
246         mov %i1,%o3
247         mov %i2,%o4
248         mov %i3,%i5
249         mov 0,%o0
250         mov 0,%o1
251         add %o2,12,%o7
252         add %o4,12,%g4
253         b .LL42
254         add %o3,12,%g1
255 .LL45:
256         add %i5,-1,%i5
257         mov %i4,%g3
258         ld [%g4-8],%i4
259         mov 0,%g2
260         mov %i4,%i1
261         mov 0,%i0
262         addcc %g3,%i1,%g3
263         addx %g2,%i0,%g2
264         addcc %o1,%g3,%o1
265         addx %o0,%g2,%o0
266         st %o1,[%o7-8]
267         mov %o0,%i3
268         mov 0,%i2
269         mov %i2,%o0
270         mov %i3,%o1
271         cmp %i5,0
272         ble .LL43
273         add %i5,-1,%i5
274         ld [%g1-4],%i4
275         mov %i4,%g3
276         ld [%g4-4],%i4
277         mov 0,%g2
278         mov %i4,%i1
279         mov 0,%i0
280         addcc %g3,%i1,%g3
281         addx %g2,%i0,%g2
282         addcc %o1,%g3,%o1
283         addx %o0,%g2,%o0
284         st %o1,[%o7-4]
285         mov %o0,%i3
286         mov 0,%i2
287         mov %i2,%o0
288         mov %i3,%o1
289         cmp %i5,0
290         ble .LL43
291         add %i5,-1,%i5
292         ld [%g1],%i4
293         mov %i4,%g3
294         ld [%g4],%i4
295         mov 0,%g2
296         mov %i4,%i1
297         mov 0,%i0
298         addcc %g3,%i1,%g3
299         addx %g2,%i0,%g2
300         addcc %o1,%g3,%o1
301         addx %o0,%g2,%o0
302         st %o1,[%o7]
303         mov %o0,%i3
304         mov 0,%i2
305         mov %i2,%o0
306         mov %i3,%o1
307         cmp %i5,0
308         ble .LL43
309         add %g1,16,%g1
310         add %o3,16,%o3
311         add %g4,16,%g4
312         add %o4,16,%o4
313         add %o7,16,%o7
314         add %o2,16,%o2
315 .LL42:
316         ld [%o3],%i4
317         add %i5,-1,%i5
318         mov %i4,%g3
319         ld [%o4],%i4
320         mov 0,%g2
321         mov %i4,%i1
322         mov 0,%i0
323         addcc %g3,%i1,%g3
324         addx %g2,%i0,%g2
325         addcc %o1,%g3,%o1
326         addx %o0,%g2,%o0
327         st %o1,[%o2]
328         mov %o0,%i3
329         mov 0,%i2
330         mov %i2,%o0
331         mov %i3,%o1
332         cmp %i5,0
333         bg,a .LL45
334         ld [%g1-8],%i4
335 .LL43:
336         ret
337         restore %g0,%o1,%o0
338 .LLfe4:
339         .size    bn_add_words,.LLfe4-bn_add_words
340 .section        ".rodata"
341         .align 8
342 .LLC0:
343         .asciz  "Division would overflow (%d)\n"
344 .section        ".text"
345         .align 4
346         .global bn_div64
347         .type    bn_div64,#function
348         .proc   016
349 bn_div64:
350         !#PROLOGUE# 0
351         save %sp,-112,%sp
352         !#PROLOGUE# 1
353         mov 0,%l1
354         cmp %i2,0
355         bne .LL51
356         mov 2,%l0
357         b .LL68
358         mov -1,%i0
359 .LL51:
360         call BN_num_bits_word,0
361         mov %i2,%o0
362         mov %o0,%o2
363         cmp %o2,32
364         be .LL52
365         mov 1,%o0
366         sll %o0,%o2,%o0
367         cmp %i0,%o0
368         bleu .LL69
369         mov 32,%o0
370         sethi %hi(__iob+32),%o0
371         or %o0,%lo(__iob+32),%o0
372         sethi %hi(.LLC0),%o1
373         call fprintf,0
374         or %o1,%lo(.LLC0),%o1
375         call abort,0
376         nop
377 .LL52:
378         mov 32,%o0
379 .LL69:
380         cmp %i0,%i2
381         blu .LL53
382         sub %o0,%o2,%o2
383         sub %i0,%i2,%i0
384 .LL53:
385         cmp %o2,0
386         be .LL54
387         sll %i0,%o2,%o1
388         sll %i2,%o2,%i2
389         sub %o0,%o2,%o0
390         srl %i1,%o0,%o0
391         or %o1,%o0,%i0
392         sll %i1,%o2,%i1
393 .LL54:
394         srl %i2,16,%g2
395         sethi %hi(65535),%o0
396         or %o0,%lo(65535),%o1
397         and %i2,%o1,%g3
398         mov %o0,%g4
399         sethi %hi(-65536),%o7
400         mov %o1,%g1
401 .LL55:
402         srl %i0,16,%o0
403         cmp %o0,%g2
404         be .LL59
405         or %g4,%lo(65535),%o3
406         wr %g0,%g0,%y
407         nop
408         nop
409         nop
410         udiv %i0,%g2,%o3
411 .LL59:
412         and %i1,%o7,%o0
413         srl %o0,16,%o5
414         smul %o3,%g3,%o4
415         smul %o3,%g2,%o2
416 .LL60:
417         sub %i0,%o2,%o1
418         andcc %o1,%o7,%g0
419         bne .LL61
420         sll %o1,16,%o0
421         add %o0,%o5,%o0
422         cmp %o4,%o0
423         bleu .LL61
424         sub %o4,%g3,%o4
425         sub %o2,%g2,%o2
426         b .LL60
427         add %o3,-1,%o3
428 .LL61:
429         smul %o3,%g2,%o2
430         smul %o3,%g3,%o0
431         srl %o0,16,%o1
432         sll %o0,16,%o0
433         and %o0,%o7,%o0
434         cmp %i1,%o0
435         bgeu .LL65
436         add %o2,%o1,%o2
437         add %o2,1,%o2
438 .LL65:
439         cmp %i0,%o2
440         bgeu .LL66
441         sub %i1,%o0,%i1
442         add %i0,%i2,%i0
443         add %o3,-1,%o3
444 .LL66:
445         addcc %l0,-1,%l0
446         be .LL56
447         sub %i0,%o2,%i0
448         sll %o3,16,%l1
449         sll %i0,16,%o0
450         srl %i1,16,%o1
451         or %o0,%o1,%i0
452         and %i1,%g1,%o0
453         b .LL55
454         sll %o0,16,%i1
455 .LL56:
456         or %l1,%o3,%i0
457 .LL68:
458         ret
459         restore
460 .LLfe5:
461         .size    bn_div64,.LLfe5-bn_div64
462         .ident  "GCC: (GNU) 2.7.2.3"