This commit was generated by cvs2svn to track changes on a CVS vendor
[openssl.git] / crypto / bn / asm / pa-risc2.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=64,CALLS,SAVE_RP,ENTRY_GR=4
18         .ENTRY
19         stw %r2,-20(0,%r30)
20         stwm %r4,64(0,%r30)
21         copy %r24,%r31
22         stw %r3,-60(0,%r30)
23         ldi 0,%r20
24         ldo 12(%r26),%r2
25         stw %r23,-16(0,%r30)
26         copy %r25,%r3
27         ldo 12(%r3),%r1
28         fldws -16(0,%r30),%fr8L
29 L$0010
30         copy %r20,%r25
31         ldi 0,%r24
32         fldws 0(0,%r3),%fr9L
33         ldw 0(0,%r26),%r19
34         xmpyu %fr8L,%fr9L,%fr9
35         fstds %fr9,-16(0,%r30)
36         copy %r19,%r23
37         ldw -16(0,%r30),%r28
38         ldw -12(0,%r30),%r29
39         ldi 0,%r22
40         add %r23,%r29,%r29
41         addc %r22,%r28,%r28
42         add %r25,%r29,%r29
43         addc %r24,%r28,%r28
44         copy %r28,%r21
45         ldi 0,%r20
46         copy %r21,%r20
47         addib,= -1,%r31,L$0011
48         stw %r29,0(0,%r26)
49         copy %r20,%r25
50         ldi 0,%r24
51         fldws -8(0,%r1),%fr9L
52         ldw -8(0,%r2),%r19
53         xmpyu %fr8L,%fr9L,%fr9
54         fstds %fr9,-16(0,%r30)
55         copy %r19,%r23
56         ldw -16(0,%r30),%r28
57         ldw -12(0,%r30),%r29
58         ldi 0,%r22
59         add %r23,%r29,%r29
60         addc %r22,%r28,%r28
61         add %r25,%r29,%r29
62         addc %r24,%r28,%r28
63         copy %r28,%r21
64         ldi 0,%r20
65         copy %r21,%r20
66         addib,= -1,%r31,L$0011
67         stw %r29,-8(0,%r2)
68         copy %r20,%r25
69         ldi 0,%r24
70         fldws -4(0,%r1),%fr9L
71         ldw -4(0,%r2),%r19
72         xmpyu %fr8L,%fr9L,%fr9
73         fstds %fr9,-16(0,%r30)
74         copy %r19,%r23
75         ldw -16(0,%r30),%r28
76         ldw -12(0,%r30),%r29
77         ldi 0,%r22
78         add %r23,%r29,%r29
79         addc %r22,%r28,%r28
80         add %r25,%r29,%r29
81         addc %r24,%r28,%r28
82         copy %r28,%r21
83         ldi 0,%r20
84         copy %r21,%r20
85         addib,= -1,%r31,L$0011
86         stw %r29,-4(0,%r2)
87         copy %r20,%r25
88         ldi 0,%r24
89         fldws 0(0,%r1),%fr9L
90         ldw 0(0,%r2),%r19
91         xmpyu %fr8L,%fr9L,%fr9
92         fstds %fr9,-16(0,%r30)
93         copy %r19,%r23
94         ldw -16(0,%r30),%r28
95         ldw -12(0,%r30),%r29
96         ldi 0,%r22
97         add %r23,%r29,%r29
98         addc %r22,%r28,%r28
99         add %r25,%r29,%r29
100         addc %r24,%r28,%r28
101         copy %r28,%r21
102         ldi 0,%r20
103         copy %r21,%r20
104         addib,= -1,%r31,L$0011
105         stw %r29,0(0,%r2)
106         ldo 16(%r1),%r1
107         ldo 16(%r3),%r3
108         ldo 16(%r2),%r2
109         bl L$0010,0
110         ldo 16(%r26),%r26
111 L$0011
112         copy %r20,%r28
113         ldw -84(0,%r30),%r2
114         ldw -60(0,%r30),%r3
115         bv 0(%r2)
116         ldwm -64(0,%r30),%r4
117         .EXIT
118         .PROCEND
119         .align 4
120         .EXPORT bn_mul_words,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR,RTNVAL=GR
121 bn_mul_words
122         .PROC
123         .CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=3
124         .ENTRY
125         stw %r2,-20(0,%r30)
126         copy %r25,%r2
127         stwm %r4,64(0,%r30)
128         copy %r24,%r19
129         ldi 0,%r28
130         stw %r23,-16(0,%r30)
131         ldo 12(%r26),%r31
132         ldo 12(%r2),%r29
133         fldws -16(0,%r30),%fr8L
134 L$0026
135         fldws 0(0,%r2),%fr9L
136         xmpyu %fr8L,%fr9L,%fr9
137         fstds %fr9,-16(0,%r30)
138         copy %r28,%r21
139         ldi 0,%r20
140         ldw -16(0,%r30),%r24
141         ldw -12(0,%r30),%r25
142         add %r21,%r25,%r25
143         addc %r20,%r24,%r24
144         copy %r24,%r23
145         ldi 0,%r22
146         copy %r23,%r28
147         addib,= -1,%r19,L$0027
148         stw %r25,0(0,%r26)
149         fldws -8(0,%r29),%fr9L
150         xmpyu %fr8L,%fr9L,%fr9
151         fstds %fr9,-16(0,%r30)
152         copy %r28,%r21
153         ldi 0,%r20
154         ldw -16(0,%r30),%r24
155         ldw -12(0,%r30),%r25
156         add %r21,%r25,%r25
157         addc %r20,%r24,%r24
158         copy %r24,%r23
159         ldi 0,%r22
160         copy %r23,%r28
161         addib,= -1,%r19,L$0027
162         stw %r25,-8(0,%r31)
163         fldws -4(0,%r29),%fr9L
164         xmpyu %fr8L,%fr9L,%fr9
165         fstds %fr9,-16(0,%r30)
166         copy %r28,%r21
167         ldi 0,%r20
168         ldw -16(0,%r30),%r24
169         ldw -12(0,%r30),%r25
170         add %r21,%r25,%r25
171         addc %r20,%r24,%r24
172         copy %r24,%r23
173         ldi 0,%r22
174         copy %r23,%r28
175         addib,= -1,%r19,L$0027
176         stw %r25,-4(0,%r31)
177         fldws 0(0,%r29),%fr9L
178         xmpyu %fr8L,%fr9L,%fr9
179         fstds %fr9,-16(0,%r30)
180         copy %r28,%r21
181         ldi 0,%r20
182         ldw -16(0,%r30),%r24
183         ldw -12(0,%r30),%r25
184         add %r21,%r25,%r25
185         addc %r20,%r24,%r24
186         copy %r24,%r23
187         ldi 0,%r22
188         copy %r23,%r28
189         addib,= -1,%r19,L$0027
190         stw %r25,0(0,%r31)
191         ldo 16(%r29),%r29
192         ldo 16(%r2),%r2
193         ldo 16(%r31),%r31
194         bl L$0026,0
195         ldo 16(%r26),%r26
196 L$0027
197         ldw -84(0,%r30),%r2
198         bv 0(%r2)
199         ldwm -64(0,%r30),%r4
200         .EXIT
201         .PROCEND
202         .align 4
203         .EXPORT bn_sqr_words,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR
204 bn_sqr_words
205         .PROC
206         .CALLINFO FRAME=0,NO_CALLS
207         .ENTRY
208         ldo 28(%r26),%r19
209         ldo 12(%r25),%r28
210 L$0042
211         fldws 0(0,%r25),%fr8L
212         fldws 0(0,%r25),%fr8R
213         xmpyu %fr8L,%fr8R,%fr8
214         fstds %fr8,-16(0,%r30)
215         ldw -16(0,%r30),%r22
216         ldw -12(0,%r30),%r23
217         stw %r23,0(0,%r26)
218         copy %r22,%r21
219         ldi 0,%r20
220         addib,= -1,%r24,L$0049
221         stw %r21,-24(0,%r19)
222         fldws -8(0,%r28),%fr8L
223         fldws -8(0,%r28),%fr8R
224         xmpyu %fr8L,%fr8R,%fr8
225         fstds %fr8,-16(0,%r30)
226         ldw -16(0,%r30),%r22
227         ldw -12(0,%r30),%r23
228         stw %r23,-20(0,%r19)
229         copy %r22,%r21
230         ldi 0,%r20
231         addib,= -1,%r24,L$0049
232         stw %r21,-16(0,%r19)
233         fldws -4(0,%r28),%fr8L
234         fldws -4(0,%r28),%fr8R
235         xmpyu %fr8L,%fr8R,%fr8
236         fstds %fr8,-16(0,%r30)
237         ldw -16(0,%r30),%r22
238         ldw -12(0,%r30),%r23
239         stw %r23,-12(0,%r19)
240         copy %r22,%r21
241         ldi 0,%r20
242         addib,= -1,%r24,L$0049
243         stw %r21,-8(0,%r19)
244         fldws 0(0,%r28),%fr8L
245         fldws 0(0,%r28),%fr8R
246         xmpyu %fr8L,%fr8R,%fr8
247         fstds %fr8,-16(0,%r30)
248         ldw -16(0,%r30),%r22
249         ldw -12(0,%r30),%r23
250         stw %r23,-4(0,%r19)
251         copy %r22,%r21
252         ldi 0,%r20
253         addib,= -1,%r24,L$0049
254         stw %r21,0(0,%r19)
255         ldo 16(%r28),%r28
256         ldo 16(%r25),%r25
257         ldo 32(%r19),%r19
258         bl L$0042,0
259         ldo 32(%r26),%r26
260 L$0049
261         bv,n 0(%r2)
262         .EXIT
263         .PROCEND
264         .IMPORT BN_num_bits_word,CODE
265         .IMPORT fprintf,CODE
266         .IMPORT __iob,DATA
267         .SPACE $TEXT$
268         .SUBSPA $LIT$
269
270         .align 4
271 L$C0000
272         .STRING "Division would overflow (%d)\x0a\x00"
273         .IMPORT abort,CODE
274         .SPACE $TEXT$
275         .SUBSPA $CODE$
276
277         .align 4
278         .EXPORT bn_div64,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,RTNVAL=GR
279 bn_div64
280         .PROC
281         .CALLINFO FRAME=128,CALLS,SAVE_RP,ENTRY_GR=8
282         .ENTRY
283         stw %r2,-20(0,%r30)
284         stwm %r8,128(0,%r30)
285         stw %r7,-124(0,%r30)
286         stw %r4,-112(0,%r30)
287         stw %r3,-108(0,%r30)
288         copy %r26,%r3
289         copy %r25,%r4
290         stw %r6,-120(0,%r30)
291         ldi 0,%r7
292         stw %r5,-116(0,%r30)
293         movb,<> %r24,%r5,L$0051
294         ldi 2,%r6
295         bl L$0068,0
296         ldi -1,%r28
297 L$0051
298         .CALL ARGW0=GR
299         bl BN_num_bits_word,%r2
300         copy %r5,%r26
301         copy %r28,%r24
302         ldi 32,%r19
303         comb,= %r19,%r24,L$0052
304         subi 31,%r24,%r19
305         mtsar %r19
306         zvdepi 1,32,%r19
307         comb,>>= %r19,%r3,L$0052
308         addil LR'__iob-$global$+32,%r27
309         ldo RR'__iob-$global$+32(%r1),%r26
310         ldil LR'L$C0000,%r25
311         .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
312         bl fprintf,%r2
313         ldo RR'L$C0000(%r25),%r25
314         .CALL 
315         bl abort,%r2
316         nop
317 L$0052
318         comb,>> %r5,%r3,L$0053
319         subi 32,%r24,%r24
320         sub %r3,%r5,%r3
321 L$0053
322         comib,= 0,%r24,L$0054
323         subi 31,%r24,%r19
324         mtsar %r19
325         zvdep %r5,32,%r5
326         zvdep %r3,32,%r21
327         subi 32,%r24,%r20
328         mtsar %r20
329         vshd 0,%r4,%r20
330         or %r21,%r20,%r3
331         mtsar %r19
332         zvdep %r4,32,%r4
333 L$0054
334         extru %r5,15,16,%r23
335         extru %r5,31,16,%r28
336 L$0055
337         extru %r3,15,16,%r19
338         comb,<> %r23,%r19,L$0058
339         copy %r3,%r26
340         bl L$0059,0
341         zdepi -1,31,16,%r29
342 L$0058
343         .IMPORT $$divU,MILLICODE
344         bl $$divU,%r31
345         copy %r23,%r25
346 L$0059
347         stw %r29,-16(0,%r30)
348         fldws -16(0,%r30),%fr10L
349         stw %r28,-16(0,%r30)
350         fldws -16(0,%r30),%fr10R
351         stw %r23,-16(0,%r30)
352         xmpyu %fr10L,%fr10R,%fr8
353         fldws -16(0,%r30),%fr10R
354         fstws %fr8R,-16(0,%r30)
355         xmpyu %fr10L,%fr10R,%fr9
356         ldw -16(0,%r30),%r8
357         fstws %fr9R,-16(0,%r30)
358         copy %r8,%r22
359         ldw -16(0,%r30),%r8
360         extru %r4,15,16,%r24
361         copy %r8,%r21
362 L$0060
363         sub %r3,%r21,%r20
364         copy %r20,%r19
365         depi 0,31,16,%r19
366         comib,<> 0,%r19,L$0061
367         zdep %r20,15,16,%r19
368         addl %r19,%r24,%r19
369         comb,>>= %r19,%r22,L$0061
370         sub %r22,%r28,%r22
371         sub %r21,%r23,%r21
372         bl L$0060,0
373         ldo -1(%r29),%r29
374 L$0061
375         stw %r29,-16(0,%r30)
376         fldws -16(0,%r30),%fr10L
377         stw %r28,-16(0,%r30)
378         fldws -16(0,%r30),%fr10R
379         xmpyu %fr10L,%fr10R,%fr8
380         fstws %fr8R,-16(0,%r30)
381         ldw -16(0,%r30),%r8
382         stw %r23,-16(0,%r30)
383         fldws -16(0,%r30),%fr10R
384         copy %r8,%r19
385         xmpyu %fr10L,%fr10R,%fr8
386         fstws %fr8R,-16(0,%r30)
387         extru %r19,15,16,%r20
388         ldw -16(0,%r30),%r8
389         zdep %r19,15,16,%r19
390         addl %r8,%r20,%r20
391         comclr,<<= %r19,%r4,0
392         addi 1,%r20,%r20
393         comb,<<= %r20,%r3,L$0066
394         sub %r4,%r19,%r4
395         addl %r3,%r5,%r3
396         ldo -1(%r29),%r29
397 L$0066
398         addib,= -1,%r6,L$0056
399         sub %r3,%r20,%r3
400         zdep %r29,15,16,%r7
401         shd %r3,%r4,16,%r3
402         bl L$0055,0
403         zdep %r4,15,16,%r4
404 L$0056
405         or %r7,%r29,%r28
406 L$0068
407         ldw -148(0,%r30),%r2
408         ldw -124(0,%r30),%r7
409         ldw -120(0,%r30),%r6
410         ldw -116(0,%r30),%r5
411         ldw -112(0,%r30),%r4
412         ldw -108(0,%r30),%r3
413         bv 0(%r2)
414         ldwm -128(0,%r30),%r8
415         .EXIT
416         .PROCEND