]> git.ipfire.org Git - thirdparty/openssl.git/blob - crypto/bn/asm/sparc.s
Import of old SSLeay release: SSLeay 0.8.1b
[thirdparty/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_word
6 .type bn_mul_add_word,#function
7 .proc 016
8 bn_mul_add_word:
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_word,.LLfe1-bn_mul_add_word
102 .align 4
103 .global bn_mul_word
104 .type bn_mul_word,#function
105 .proc 016
106 bn_mul_word:
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_word,.LLfe2-bn_mul_word
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 .section ".rodata"
238 .align 8
239 .LLC0:
240 .asciz "Division would overflow\n"
241 .section ".text"
242 .align 4
243 .global bn_div64
244 .type bn_div64,#function
245 .proc 016
246 bn_div64:
247 !#PROLOGUE# 0
248 save %sp,-112,%sp
249 !#PROLOGUE# 1
250 mov 0,%l1
251 cmp %i2,0
252 bne .LL42
253 mov 2,%l0
254 b .LL59
255 mov -1,%i0
256 .LL42:
257 call BN_num_bits_word,0
258 mov %i2,%o0
259 mov %o0,%o2
260 cmp %o2,32
261 be .LL43
262 mov 1,%o0
263 sll %o0,%o2,%o0
264 cmp %i0,%o0
265 bleu .LL60
266 mov 32,%o0
267 sethi %hi(__iob+32),%o0
268 or %o0,%lo(__iob+32),%o0
269 sethi %hi(.LLC0),%o1
270 call fprintf,0
271 or %o1,%lo(.LLC0),%o1
272 call abort,0
273 nop
274 .LL43:
275 mov 32,%o0
276 .LL60:
277 cmp %i0,%i2
278 blu .LL44
279 sub %o0,%o2,%o2
280 sub %i0,%i2,%i0
281 .LL44:
282 cmp %o2,0
283 be .LL45
284 sethi %hi(-65536),%o7
285 sll %i2,%o2,%i2
286 sll %i0,%o2,%o1
287 sub %o0,%o2,%o0
288 srl %i1,%o0,%o0
289 or %o1,%o0,%i0
290 sll %i1,%o2,%i1
291 .LL45:
292 srl %i2,16,%g2
293 sethi %hi(65535),%o0
294 or %o0,%lo(65535),%o1
295 and %i2,%o1,%g3
296 mov %o0,%g4
297 mov %o1,%g1
298 .LL46:
299 srl %i0,16,%o0
300 cmp %o0,%g2
301 be .LL50
302 or %g4,%lo(65535),%o3
303 wr %g0,%g0,%y
304 nop
305 nop
306 nop
307 udiv %i0,%g2,%o3
308 .LL50:
309 and %i1,%o7,%o0
310 srl %o0,16,%o5
311 smul %o3,%g3,%o4
312 smul %o3,%g2,%o2
313 .LL51:
314 sub %i0,%o2,%o1
315 andcc %o1,%o7,%g0
316 bne .LL52
317 sll %o1,16,%o0
318 add %o0,%o5,%o0
319 cmp %o4,%o0
320 bleu .LL52
321 sub %o4,%g3,%o4
322 sub %o2,%g2,%o2
323 b .LL51
324 add %o3,-1,%o3
325 .LL52:
326 smul %o3,%g2,%o2
327 smul %o3,%g3,%o0
328 srl %o0,16,%o1
329 sll %o0,16,%o0
330 and %o0,%o7,%o0
331 cmp %i1,%o0
332 bgeu .LL56
333 add %o2,%o1,%o2
334 add %o2,1,%o2
335 .LL56:
336 cmp %i0,%o2
337 bgeu .LL57
338 sub %i1,%o0,%i1
339 add %i0,%i2,%i0
340 add %o3,-1,%o3
341 .LL57:
342 addcc %l0,-1,%l0
343 be .LL47
344 sub %i0,%o2,%i0
345 sll %o3,16,%l1
346 sll %i0,16,%o0
347 srl %i1,16,%o1
348 or %o0,%o1,%i0
349 and %i1,%g1,%o0
350 b .LL46
351 sll %o0,16,%i1
352 .LL47:
353 or %l1,%o3,%i0
354 .LL59:
355 ret
356 restore
357 .LLfe4:
358 .size bn_div64,.LLfe4-bn_div64
359 .ident "GCC: (GNU) 2.7.0"