Assembler support for IA-64. See the source code commentary for further
[openssl.git] / crypto / bn / asm / pa-risc.s
1         .SPACE $PRIVATE$
2         .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
3         .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
4         .SPACE $TEXT$
5         .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
6         .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
7         .IMPORT $global$,DATA
8         .IMPORT $$dyncall,MILLICODE
9 ; gcc_compiled.:
10         .SPACE $TEXT$
11         .SUBSPA $CODE$
12
13         .align 4
14         .EXPORT bn_mul_add_words,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR,RTNVAL=GR
15 bn_mul_add_words
16         .PROC
17         .CALLINFO FRAME=0,CALLS,SAVE_RP
18         .ENTRY
19         stw %r2,-20(0,%r30)
20         ldi 0,%r28
21         extru %r23,31,16,%r2
22         stw %r2,-16(0,%r30)
23         extru %r23,15,16,%r23
24         ldil L'65536,%r31
25         fldws -16(0,%r30),%fr11R
26         stw %r23,-16(0,%r30)
27         ldo 12(%r25),%r29
28         ldo 12(%r26),%r23
29         fldws -16(0,%r30),%fr11L
30 L$0002
31         ldw 0(0,%r25),%r19
32         extru %r19,31,16,%r20
33         stw %r20,-16(0,%r30)
34         extru %r19,15,16,%r19
35         fldws -16(0,%r30),%fr22L
36         stw %r19,-16(0,%r30)
37         xmpyu %fr22L,%fr11R,%fr8
38         fldws -16(0,%r30),%fr22L
39         fstws %fr8R,-16(0,%r30)
40         xmpyu %fr11R,%fr22L,%fr10
41         ldw -16(0,%r30),%r2
42         stw %r20,-16(0,%r30)
43         xmpyu %fr22L,%fr11L,%fr9
44         fldws -16(0,%r30),%fr22L
45         fstws %fr10R,-16(0,%r30)
46         copy %r2,%r22
47         ldw -16(0,%r30),%r2
48         fstws %fr9R,-16(0,%r30)
49         xmpyu %fr11L,%fr22L,%fr8
50         copy %r2,%r19
51         ldw -16(0,%r30),%r2
52         fstws %fr8R,-16(0,%r30)
53         copy %r2,%r20
54         ldw -16(0,%r30),%r2
55         addl %r2,%r19,%r21
56         comclr,<<= %r19,%r21,0
57         addl %r20,%r31,%r20
58 L$0005
59         extru %r21,15,16,%r19
60         addl %r20,%r19,%r20
61         zdep %r21,15,16,%r19
62         addl %r22,%r19,%r22
63         comclr,<<= %r19,%r22,0
64         addi,tr 1,%r20,%r19
65         copy %r20,%r19
66         addl %r22,%r28,%r20
67         comclr,<<= %r28,%r20,0
68         addi 1,%r19,%r19
69         ldw 0(0,%r26),%r28
70         addl %r20,%r28,%r20
71         comclr,<<= %r28,%r20,0
72         addi,tr 1,%r19,%r28
73         copy %r19,%r28
74         addib,= -1,%r24,L$0003
75         stw %r20,0(0,%r26)
76         ldw -8(0,%r29),%r19
77         extru %r19,31,16,%r20
78         stw %r20,-16(0,%r30)
79         extru %r19,15,16,%r19
80         fldws -16(0,%r30),%fr22L
81         stw %r19,-16(0,%r30)
82         xmpyu %fr22L,%fr11R,%fr8
83         fldws -16(0,%r30),%fr22L
84         fstws %fr8R,-16(0,%r30)
85         xmpyu %fr11R,%fr22L,%fr10
86         ldw -16(0,%r30),%r2
87         stw %r20,-16(0,%r30)
88         xmpyu %fr22L,%fr11L,%fr9
89         fldws -16(0,%r30),%fr22L
90         fstws %fr10R,-16(0,%r30)
91         copy %r2,%r22
92         ldw -16(0,%r30),%r2
93         fstws %fr9R,-16(0,%r30)
94         xmpyu %fr11L,%fr22L,%fr8
95         copy %r2,%r19
96         ldw -16(0,%r30),%r2
97         fstws %fr8R,-16(0,%r30)
98         copy %r2,%r20
99         ldw -16(0,%r30),%r2
100         addl %r2,%r19,%r21
101         comclr,<<= %r19,%r21,0
102         addl %r20,%r31,%r20
103 L$0010
104         extru %r21,15,16,%r19
105         addl %r20,%r19,%r20
106         zdep %r21,15,16,%r19
107         addl %r22,%r19,%r22
108         comclr,<<= %r19,%r22,0
109         addi,tr 1,%r20,%r19
110         copy %r20,%r19
111         addl %r22,%r28,%r20
112         comclr,<<= %r28,%r20,0
113         addi 1,%r19,%r19
114         ldw -8(0,%r23),%r28
115         addl %r20,%r28,%r20
116         comclr,<<= %r28,%r20,0
117         addi,tr 1,%r19,%r28
118         copy %r19,%r28
119         addib,= -1,%r24,L$0003
120         stw %r20,-8(0,%r23)
121         ldw -4(0,%r29),%r19
122         extru %r19,31,16,%r20
123         stw %r20,-16(0,%r30)
124         extru %r19,15,16,%r19
125         fldws -16(0,%r30),%fr22L
126         stw %r19,-16(0,%r30)
127         xmpyu %fr22L,%fr11R,%fr8
128         fldws -16(0,%r30),%fr22L
129         fstws %fr8R,-16(0,%r30)
130         xmpyu %fr11R,%fr22L,%fr10
131         ldw -16(0,%r30),%r2
132         stw %r20,-16(0,%r30)
133         xmpyu %fr22L,%fr11L,%fr9
134         fldws -16(0,%r30),%fr22L
135         fstws %fr10R,-16(0,%r30)
136         copy %r2,%r22
137         ldw -16(0,%r30),%r2
138         fstws %fr9R,-16(0,%r30)
139         xmpyu %fr11L,%fr22L,%fr8
140         copy %r2,%r19
141         ldw -16(0,%r30),%r2
142         fstws %fr8R,-16(0,%r30)
143         copy %r2,%r20
144         ldw -16(0,%r30),%r2
145         addl %r2,%r19,%r21
146         comclr,<<= %r19,%r21,0
147         addl %r20,%r31,%r20
148 L$0015
149         extru %r21,15,16,%r19
150         addl %r20,%r19,%r20
151         zdep %r21,15,16,%r19
152         addl %r22,%r19,%r22
153         comclr,<<= %r19,%r22,0
154         addi,tr 1,%r20,%r19
155         copy %r20,%r19
156         addl %r22,%r28,%r20
157         comclr,<<= %r28,%r20,0
158         addi 1,%r19,%r19
159         ldw -4(0,%r23),%r28
160         addl %r20,%r28,%r20
161         comclr,<<= %r28,%r20,0
162         addi,tr 1,%r19,%r28
163         copy %r19,%r28
164         addib,= -1,%r24,L$0003
165         stw %r20,-4(0,%r23)
166         ldw 0(0,%r29),%r19
167         extru %r19,31,16,%r20
168         stw %r20,-16(0,%r30)
169         extru %r19,15,16,%r19
170         fldws -16(0,%r30),%fr22L
171         stw %r19,-16(0,%r30)
172         xmpyu %fr22L,%fr11R,%fr8
173         fldws -16(0,%r30),%fr22L
174         fstws %fr8R,-16(0,%r30)
175         xmpyu %fr11R,%fr22L,%fr10
176         ldw -16(0,%r30),%r2
177         stw %r20,-16(0,%r30)
178         xmpyu %fr22L,%fr11L,%fr9
179         fldws -16(0,%r30),%fr22L
180         fstws %fr10R,-16(0,%r30)
181         copy %r2,%r22
182         ldw -16(0,%r30),%r2
183         fstws %fr9R,-16(0,%r30)
184         xmpyu %fr11L,%fr22L,%fr8
185         copy %r2,%r19
186         ldw -16(0,%r30),%r2
187         fstws %fr8R,-16(0,%r30)
188         copy %r2,%r20
189         ldw -16(0,%r30),%r2
190         addl %r2,%r19,%r21
191         comclr,<<= %r19,%r21,0
192         addl %r20,%r31,%r20
193 L$0020
194         extru %r21,15,16,%r19
195         addl %r20,%r19,%r20
196         zdep %r21,15,16,%r19
197         addl %r22,%r19,%r22
198         comclr,<<= %r19,%r22,0
199         addi,tr 1,%r20,%r19
200         copy %r20,%r19
201         addl %r22,%r28,%r20
202         comclr,<<= %r28,%r20,0
203         addi 1,%r19,%r19
204         ldw 0(0,%r23),%r28
205         addl %r20,%r28,%r20
206         comclr,<<= %r28,%r20,0
207         addi,tr 1,%r19,%r28
208         copy %r19,%r28
209         addib,= -1,%r24,L$0003
210         stw %r20,0(0,%r23)
211         ldo 16(%r29),%r29
212         ldo 16(%r25),%r25
213         ldo 16(%r23),%r23
214         bl L$0002,0
215         ldo 16(%r26),%r26
216 L$0003
217         ldw -20(0,%r30),%r2
218         bv,n 0(%r2)
219         .EXIT
220         .PROCEND
221         .align 4
222         .EXPORT bn_mul_words,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR,RTNVAL=GR
223 bn_mul_words
224         .PROC
225         .CALLINFO FRAME=0,CALLS,SAVE_RP
226         .ENTRY
227         stw %r2,-20(0,%r30)
228         ldi 0,%r28
229         extru %r23,31,16,%r2
230         stw %r2,-16(0,%r30)
231         extru %r23,15,16,%r23
232         ldil L'65536,%r31
233         fldws -16(0,%r30),%fr11R
234         stw %r23,-16(0,%r30)
235         ldo 12(%r26),%r29
236         ldo 12(%r25),%r23
237         fldws -16(0,%r30),%fr11L
238 L$0026
239         ldw 0(0,%r25),%r19
240         extru %r19,31,16,%r20
241         stw %r20,-16(0,%r30)
242         extru %r19,15,16,%r19
243         fldws -16(0,%r30),%fr22L
244         stw %r19,-16(0,%r30)
245         xmpyu %fr22L,%fr11R,%fr8
246         fldws -16(0,%r30),%fr22L
247         fstws %fr8R,-16(0,%r30)
248         xmpyu %fr11R,%fr22L,%fr10
249         ldw -16(0,%r30),%r2
250         stw %r20,-16(0,%r30)
251         xmpyu %fr22L,%fr11L,%fr9
252         fldws -16(0,%r30),%fr22L
253         fstws %fr10R,-16(0,%r30)
254         copy %r2,%r22
255         ldw -16(0,%r30),%r2
256         fstws %fr9R,-16(0,%r30)
257         xmpyu %fr11L,%fr22L,%fr8
258         copy %r2,%r19
259         ldw -16(0,%r30),%r2
260         fstws %fr8R,-16(0,%r30)
261         copy %r2,%r20
262         ldw -16(0,%r30),%r2
263         addl %r2,%r19,%r21
264         comclr,<<= %r19,%r21,0
265         addl %r20,%r31,%r20
266 L$0029
267         extru %r21,15,16,%r19
268         addl %r20,%r19,%r20
269         zdep %r21,15,16,%r19
270         addl %r22,%r19,%r22
271         comclr,<<= %r19,%r22,0
272         addi,tr 1,%r20,%r19
273         copy %r20,%r19
274         addl %r22,%r28,%r20
275         comclr,<<= %r28,%r20,0
276         addi,tr 1,%r19,%r28
277         copy %r19,%r28
278         addib,= -1,%r24,L$0027
279         stw %r20,0(0,%r26)
280         ldw -8(0,%r23),%r19
281         extru %r19,31,16,%r20
282         stw %r20,-16(0,%r30)
283         extru %r19,15,16,%r19
284         fldws -16(0,%r30),%fr22L
285         stw %r19,-16(0,%r30)
286         xmpyu %fr22L,%fr11R,%fr8
287         fldws -16(0,%r30),%fr22L
288         fstws %fr8R,-16(0,%r30)
289         xmpyu %fr11R,%fr22L,%fr10
290         ldw -16(0,%r30),%r2
291         stw %r20,-16(0,%r30)
292         xmpyu %fr22L,%fr11L,%fr9
293         fldws -16(0,%r30),%fr22L
294         fstws %fr10R,-16(0,%r30)
295         copy %r2,%r22
296         ldw -16(0,%r30),%r2
297         fstws %fr9R,-16(0,%r30)
298         xmpyu %fr11L,%fr22L,%fr8
299         copy %r2,%r19
300         ldw -16(0,%r30),%r2
301         fstws %fr8R,-16(0,%r30)
302         copy %r2,%r20
303         ldw -16(0,%r30),%r2
304         addl %r2,%r19,%r21
305         comclr,<<= %r19,%r21,0
306         addl %r20,%r31,%r20
307 L$0033
308         extru %r21,15,16,%r19
309         addl %r20,%r19,%r20
310         zdep %r21,15,16,%r19
311         addl %r22,%r19,%r22
312         comclr,<<= %r19,%r22,0
313         addi,tr 1,%r20,%r19
314         copy %r20,%r19
315         addl %r22,%r28,%r20
316         comclr,<<= %r28,%r20,0
317         addi,tr 1,%r19,%r28
318         copy %r19,%r28
319         addib,= -1,%r24,L$0027
320         stw %r20,-8(0,%r29)
321         ldw -4(0,%r23),%r19
322         extru %r19,31,16,%r20
323         stw %r20,-16(0,%r30)
324         extru %r19,15,16,%r19
325         fldws -16(0,%r30),%fr22L
326         stw %r19,-16(0,%r30)
327         xmpyu %fr22L,%fr11R,%fr8
328         fldws -16(0,%r30),%fr22L
329         fstws %fr8R,-16(0,%r30)
330         xmpyu %fr11R,%fr22L,%fr10
331         ldw -16(0,%r30),%r2
332         stw %r20,-16(0,%r30)
333         xmpyu %fr22L,%fr11L,%fr9
334         fldws -16(0,%r30),%fr22L
335         fstws %fr10R,-16(0,%r30)
336         copy %r2,%r22
337         ldw -16(0,%r30),%r2
338         fstws %fr9R,-16(0,%r30)
339         xmpyu %fr11L,%fr22L,%fr8
340         copy %r2,%r19
341         ldw -16(0,%r30),%r2
342         fstws %fr8R,-16(0,%r30)
343         copy %r2,%r20
344         ldw -16(0,%r30),%r2
345         addl %r2,%r19,%r21
346         comclr,<<= %r19,%r21,0
347         addl %r20,%r31,%r20
348 L$0037
349         extru %r21,15,16,%r19
350         addl %r20,%r19,%r20
351         zdep %r21,15,16,%r19
352         addl %r22,%r19,%r22
353         comclr,<<= %r19,%r22,0
354         addi,tr 1,%r20,%r19
355         copy %r20,%r19
356         addl %r22,%r28,%r20
357         comclr,<<= %r28,%r20,0
358         addi,tr 1,%r19,%r28
359         copy %r19,%r28
360         addib,= -1,%r24,L$0027
361         stw %r20,-4(0,%r29)
362         ldw 0(0,%r23),%r19
363         extru %r19,31,16,%r20
364         stw %r20,-16(0,%r30)
365         extru %r19,15,16,%r19
366         fldws -16(0,%r30),%fr22L
367         stw %r19,-16(0,%r30)
368         xmpyu %fr22L,%fr11R,%fr8
369         fldws -16(0,%r30),%fr22L
370         fstws %fr8R,-16(0,%r30)
371         xmpyu %fr11R,%fr22L,%fr10
372         ldw -16(0,%r30),%r2
373         stw %r20,-16(0,%r30)
374         xmpyu %fr22L,%fr11L,%fr9
375         fldws -16(0,%r30),%fr22L
376         fstws %fr10R,-16(0,%r30)
377         copy %r2,%r22
378         ldw -16(0,%r30),%r2
379         fstws %fr9R,-16(0,%r30)
380         xmpyu %fr11L,%fr22L,%fr8
381         copy %r2,%r19
382         ldw -16(0,%r30),%r2
383         fstws %fr8R,-16(0,%r30)
384         copy %r2,%r20
385         ldw -16(0,%r30),%r2
386         addl %r2,%r19,%r21
387         comclr,<<= %r19,%r21,0
388         addl %r20,%r31,%r20
389 L$0041
390         extru %r21,15,16,%r19
391         addl %r20,%r19,%r20
392         zdep %r21,15,16,%r19
393         addl %r22,%r19,%r22
394         comclr,<<= %r19,%r22,0
395         addi,tr 1,%r20,%r19
396         copy %r20,%r19
397         addl %r22,%r28,%r20
398         comclr,<<= %r28,%r20,0
399         addi,tr 1,%r19,%r28
400         copy %r19,%r28
401         addib,= -1,%r24,L$0027
402         stw %r20,0(0,%r29)
403         ldo 16(%r23),%r23
404         ldo 16(%r25),%r25
405         ldo 16(%r29),%r29
406         bl L$0026,0
407         ldo 16(%r26),%r26
408 L$0027
409         ldw -20(0,%r30),%r2
410         bv,n 0(%r2)
411         .EXIT
412         .PROCEND
413         .align 4
414         .EXPORT bn_sqr_words,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR
415 bn_sqr_words
416         .PROC
417         .CALLINFO FRAME=0,NO_CALLS
418         .ENTRY
419         ldo 28(%r26),%r23
420         ldo 12(%r25),%r28
421 L$0046
422         ldw 0(0,%r25),%r21
423         extru %r21,31,16,%r22
424         stw %r22,-16(0,%r30)
425         extru %r21,15,16,%r21
426         fldws -16(0,%r30),%fr10L
427         stw %r21,-16(0,%r30)
428         fldws -16(0,%r30),%fr10R
429         xmpyu %fr10L,%fr10R,%fr8
430         fstws %fr8R,-16(0,%r30)
431         ldw -16(0,%r30),%r29
432         stw %r22,-16(0,%r30)
433         fldws -16(0,%r30),%fr10R
434         stw %r21,-16(0,%r30)
435         copy %r29,%r19
436         xmpyu %fr10L,%fr10R,%fr8
437         fldws -16(0,%r30),%fr10L
438         stw %r21,-16(0,%r30)
439         fldws -16(0,%r30),%fr10R
440         fstws %fr8R,-16(0,%r30)
441         extru %r19,16,17,%r20
442         zdep %r19,14,15,%r19
443         ldw -16(0,%r30),%r29
444         xmpyu %fr10L,%fr10R,%fr9
445         addl %r29,%r19,%r22
446         stw %r22,0(0,%r26)
447         fstws %fr9R,-16(0,%r30)
448         ldw -16(0,%r30),%r29
449         addl %r29,%r20,%r21
450         comclr,<<= %r19,%r22,0
451         addi 1,%r21,%r21
452         addib,= -1,%r24,L$0057
453         stw %r21,-24(0,%r23)
454         ldw -8(0,%r28),%r21
455         extru %r21,31,16,%r22
456         stw %r22,-16(0,%r30)
457         extru %r21,15,16,%r21
458         fldws -16(0,%r30),%fr10L
459         stw %r21,-16(0,%r30)
460         fldws -16(0,%r30),%fr10R
461         xmpyu %fr10L,%fr10R,%fr8
462         fstws %fr8R,-16(0,%r30)
463         ldw -16(0,%r30),%r29
464         stw %r22,-16(0,%r30)
465         fldws -16(0,%r30),%fr10R
466         stw %r21,-16(0,%r30)
467         copy %r29,%r19
468         xmpyu %fr10L,%fr10R,%fr8
469         fldws -16(0,%r30),%fr10L
470         stw %r21,-16(0,%r30)
471         fldws -16(0,%r30),%fr10R
472         fstws %fr8R,-16(0,%r30)
473         extru %r19,16,17,%r20
474         zdep %r19,14,15,%r19
475         ldw -16(0,%r30),%r29
476         xmpyu %fr10L,%fr10R,%fr9
477         addl %r29,%r19,%r22
478         stw %r22,-20(0,%r23)
479         fstws %fr9R,-16(0,%r30)
480         ldw -16(0,%r30),%r29
481         addl %r29,%r20,%r21
482         comclr,<<= %r19,%r22,0
483         addi 1,%r21,%r21
484         addib,= -1,%r24,L$0057
485         stw %r21,-16(0,%r23)
486         ldw -4(0,%r28),%r21
487         extru %r21,31,16,%r22
488         stw %r22,-16(0,%r30)
489         extru %r21,15,16,%r21
490         fldws -16(0,%r30),%fr10L
491         stw %r21,-16(0,%r30)
492         fldws -16(0,%r30),%fr10R
493         xmpyu %fr10L,%fr10R,%fr8
494         fstws %fr8R,-16(0,%r30)
495         ldw -16(0,%r30),%r29
496         stw %r22,-16(0,%r30)
497         fldws -16(0,%r30),%fr10R
498         stw %r21,-16(0,%r30)
499         copy %r29,%r19
500         xmpyu %fr10L,%fr10R,%fr8
501         fldws -16(0,%r30),%fr10L
502         stw %r21,-16(0,%r30)
503         fldws -16(0,%r30),%fr10R
504         fstws %fr8R,-16(0,%r30)
505         extru %r19,16,17,%r20
506         zdep %r19,14,15,%r19
507         ldw -16(0,%r30),%r29
508         xmpyu %fr10L,%fr10R,%fr9
509         addl %r29,%r19,%r22
510         stw %r22,-12(0,%r23)
511         fstws %fr9R,-16(0,%r30)
512         ldw -16(0,%r30),%r29
513         addl %r29,%r20,%r21
514         comclr,<<= %r19,%r22,0
515         addi 1,%r21,%r21
516         addib,= -1,%r24,L$0057
517         stw %r21,-8(0,%r23)
518         ldw 0(0,%r28),%r21
519         extru %r21,31,16,%r22
520         stw %r22,-16(0,%r30)
521         extru %r21,15,16,%r21
522         fldws -16(0,%r30),%fr10L
523         stw %r21,-16(0,%r30)
524         fldws -16(0,%r30),%fr10R
525         xmpyu %fr10L,%fr10R,%fr8
526         fstws %fr8R,-16(0,%r30)
527         ldw -16(0,%r30),%r29
528         stw %r22,-16(0,%r30)
529         fldws -16(0,%r30),%fr10R
530         stw %r21,-16(0,%r30)
531         copy %r29,%r19
532         xmpyu %fr10L,%fr10R,%fr8
533         fldws -16(0,%r30),%fr10L
534         stw %r21,-16(0,%r30)
535         fldws -16(0,%r30),%fr10R
536         fstws %fr8R,-16(0,%r30)
537         extru %r19,16,17,%r20
538         zdep %r19,14,15,%r19
539         ldw -16(0,%r30),%r29
540         xmpyu %fr10L,%fr10R,%fr9
541         addl %r29,%r19,%r22
542         stw %r22,-4(0,%r23)
543         fstws %fr9R,-16(0,%r30)
544         ldw -16(0,%r30),%r29
545         addl %r29,%r20,%r21
546         comclr,<<= %r19,%r22,0
547         addi 1,%r21,%r21
548         addib,= -1,%r24,L$0057
549         stw %r21,0(0,%r23)
550         ldo 16(%r28),%r28
551         ldo 16(%r25),%r25
552         ldo 32(%r23),%r23
553         bl L$0046,0
554         ldo 32(%r26),%r26
555 L$0057
556         bv,n 0(%r2)
557         .EXIT
558         .PROCEND
559         .IMPORT BN_num_bits_word,CODE
560         .IMPORT fprintf,CODE
561         .IMPORT __iob,DATA
562         .SPACE $TEXT$
563         .SUBSPA $LIT$
564
565         .align 4
566 L$C0000
567         .STRING "Division would overflow\x0a\x00"
568         .IMPORT abort,CODE
569         .SPACE $TEXT$
570         .SUBSPA $CODE$
571
572         .align 4
573         .EXPORT bn_div64,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,RTNVAL=GR
574 bn_div64
575         .PROC
576         .CALLINFO FRAME=128,CALLS,SAVE_RP,ENTRY_GR=8
577         .ENTRY
578         stw %r2,-20(0,%r30)
579         stwm %r8,128(0,%r30)
580         stw %r7,-124(0,%r30)
581         stw %r4,-112(0,%r30)
582         stw %r3,-108(0,%r30)
583         copy %r26,%r3
584         copy %r25,%r4
585         stw %r6,-120(0,%r30)
586         ldi 0,%r7
587         stw %r5,-116(0,%r30)
588         movb,<> %r24,%r5,L$0059
589         ldi 2,%r6
590         bl L$0076,0
591         ldi -1,%r28
592 L$0059
593         .CALL ARGW0=GR
594         bl BN_num_bits_word,%r2
595         copy %r5,%r26
596         ldi 32,%r19
597         comb,= %r19,%r28,L$0060
598         subi 31,%r28,%r19
599         mtsar %r19
600         zvdepi 1,32,%r19
601         comb,>>= %r19,%r3,L$0060
602         addil LR'__iob-$global$+32,%r27
603         ldo RR'__iob-$global$+32(%r1),%r26
604         ldil LR'L$C0000,%r25
605         .CALL ARGW0=GR,ARGW1=GR
606         bl fprintf,%r2
607         ldo RR'L$C0000(%r25),%r25
608         .CALL 
609         bl abort,%r2
610         nop
611 L$0060
612         comb,>> %r5,%r3,L$0061
613         subi 32,%r28,%r28
614         sub %r3,%r5,%r3
615 L$0061
616         comib,= 0,%r28,L$0062
617         subi 31,%r28,%r19
618         mtsar %r19
619         zvdep %r5,32,%r5
620         zvdep %r3,32,%r21
621         subi 32,%r28,%r20
622         mtsar %r20
623         vshd 0,%r4,%r20
624         or %r21,%r20,%r3
625         mtsar %r19
626         zvdep %r4,32,%r4
627 L$0062
628         extru %r5,15,16,%r23
629         extru %r5,31,16,%r28
630 L$0063
631         extru %r3,15,16,%r19
632         comb,<> %r23,%r19,L$0066
633         copy %r3,%r26
634         bl L$0067,0
635         zdepi -1,31,16,%r29
636 L$0066
637         .IMPORT $$divU,MILLICODE
638         bl $$divU,%r31
639         copy %r23,%r25
640 L$0067
641         stw %r29,-16(0,%r30)
642         fldws -16(0,%r30),%fr10L
643         stw %r28,-16(0,%r30)
644         fldws -16(0,%r30),%fr10R
645         stw %r23,-16(0,%r30)
646         xmpyu %fr10L,%fr10R,%fr8
647         fldws -16(0,%r30),%fr10R
648         fstws %fr8R,-16(0,%r30)
649         xmpyu %fr10L,%fr10R,%fr9
650         ldw -16(0,%r30),%r8
651         fstws %fr9R,-16(0,%r30)
652         copy %r8,%r22
653         ldw -16(0,%r30),%r8
654         extru %r4,15,16,%r24
655         copy %r8,%r21
656 L$0068
657         sub %r3,%r21,%r20
658         copy %r20,%r19
659         depi 0,31,16,%r19
660         comib,<> 0,%r19,L$0069
661         zdep %r20,15,16,%r19
662         addl %r19,%r24,%r19
663         comb,>>= %r19,%r22,L$0069
664         sub %r22,%r28,%r22
665         sub %r21,%r23,%r21
666         bl L$0068,0
667         ldo -1(%r29),%r29
668 L$0069
669         stw %r29,-16(0,%r30)
670         fldws -16(0,%r30),%fr10L
671         stw %r28,-16(0,%r30)
672         fldws -16(0,%r30),%fr10R
673         xmpyu %fr10L,%fr10R,%fr8
674         fstws %fr8R,-16(0,%r30)
675         ldw -16(0,%r30),%r8
676         stw %r23,-16(0,%r30)
677         fldws -16(0,%r30),%fr10R
678         copy %r8,%r19
679         xmpyu %fr10L,%fr10R,%fr8
680         fstws %fr8R,-16(0,%r30)
681         extru %r19,15,16,%r20
682         ldw -16(0,%r30),%r8
683         zdep %r19,15,16,%r19
684         addl %r8,%r20,%r20
685         comclr,<<= %r19,%r4,0
686         addi 1,%r20,%r20
687         comb,<<= %r20,%r3,L$0074
688         sub %r4,%r19,%r4
689         addl %r3,%r5,%r3
690         ldo -1(%r29),%r29
691 L$0074
692         addib,= -1,%r6,L$0064
693         sub %r3,%r20,%r3
694         zdep %r29,15,16,%r7
695         shd %r3,%r4,16,%r3
696         bl L$0063,0
697         zdep %r4,15,16,%r4
698 L$0064
699         or %r7,%r29,%r28
700 L$0076
701         ldw -148(0,%r30),%r2
702         ldw -124(0,%r30),%r7
703         ldw -120(0,%r30),%r6
704         ldw -116(0,%r30),%r5
705         ldw -112(0,%r30),%r4
706         ldw -108(0,%r30),%r3
707         bv 0(%r2)
708         ldwm -128(0,%r30),%r8
709         .EXIT
710         .PROCEND