OLD | NEW |
| (Empty) |
1 #if defined(__i386__) | |
2 .file "src/crypto/bn/asm/co-586.S" | |
3 .text | |
4 .globl _bn_mul_comba8 | |
5 .private_extern _bn_mul_comba8 | |
6 .align 4 | |
7 _bn_mul_comba8: | |
8 L_bn_mul_comba8_begin: | |
9 pushl %esi | |
10 movl 12(%esp),%esi | |
11 pushl %edi | |
12 movl 20(%esp),%edi | |
13 pushl %ebp | |
14 pushl %ebx | |
15 xorl %ebx,%ebx | |
16 movl (%esi),%eax | |
17 xorl %ecx,%ecx | |
18 movl (%edi),%edx | |
19 # ################## Calculate word 0 | |
20 xorl %ebp,%ebp | |
21 # mul a[0]*b[0] | |
22 mull %edx | |
23 addl %eax,%ebx | |
24 movl 20(%esp),%eax | |
25 adcl %edx,%ecx | |
26 movl (%edi),%edx | |
27 adcl $0,%ebp | |
28 movl %ebx,(%eax) | |
29 movl 4(%esi),%eax | |
30 # saved r[0] | |
31 # ################## Calculate word 1 | |
32 xorl %ebx,%ebx | |
33 # mul a[1]*b[0] | |
34 mull %edx | |
35 addl %eax,%ecx | |
36 movl (%esi),%eax | |
37 adcl %edx,%ebp | |
38 movl 4(%edi),%edx | |
39 adcl $0,%ebx | |
40 # mul a[0]*b[1] | |
41 mull %edx | |
42 addl %eax,%ecx | |
43 movl 20(%esp),%eax | |
44 adcl %edx,%ebp | |
45 movl (%edi),%edx | |
46 adcl $0,%ebx | |
47 movl %ecx,4(%eax) | |
48 movl 8(%esi),%eax | |
49 # saved r[1] | |
50 # ################## Calculate word 2 | |
51 xorl %ecx,%ecx | |
52 # mul a[2]*b[0] | |
53 mull %edx | |
54 addl %eax,%ebp | |
55 movl 4(%esi),%eax | |
56 adcl %edx,%ebx | |
57 movl 4(%edi),%edx | |
58 adcl $0,%ecx | |
59 # mul a[1]*b[1] | |
60 mull %edx | |
61 addl %eax,%ebp | |
62 movl (%esi),%eax | |
63 adcl %edx,%ebx | |
64 movl 8(%edi),%edx | |
65 adcl $0,%ecx | |
66 # mul a[0]*b[2] | |
67 mull %edx | |
68 addl %eax,%ebp | |
69 movl 20(%esp),%eax | |
70 adcl %edx,%ebx | |
71 movl (%edi),%edx | |
72 adcl $0,%ecx | |
73 movl %ebp,8(%eax) | |
74 movl 12(%esi),%eax | |
75 # saved r[2] | |
76 # ################## Calculate word 3 | |
77 xorl %ebp,%ebp | |
78 # mul a[3]*b[0] | |
79 mull %edx | |
80 addl %eax,%ebx | |
81 movl 8(%esi),%eax | |
82 adcl %edx,%ecx | |
83 movl 4(%edi),%edx | |
84 adcl $0,%ebp | |
85 # mul a[2]*b[1] | |
86 mull %edx | |
87 addl %eax,%ebx | |
88 movl 4(%esi),%eax | |
89 adcl %edx,%ecx | |
90 movl 8(%edi),%edx | |
91 adcl $0,%ebp | |
92 # mul a[1]*b[2] | |
93 mull %edx | |
94 addl %eax,%ebx | |
95 movl (%esi),%eax | |
96 adcl %edx,%ecx | |
97 movl 12(%edi),%edx | |
98 adcl $0,%ebp | |
99 # mul a[0]*b[3] | |
100 mull %edx | |
101 addl %eax,%ebx | |
102 movl 20(%esp),%eax | |
103 adcl %edx,%ecx | |
104 movl (%edi),%edx | |
105 adcl $0,%ebp | |
106 movl %ebx,12(%eax) | |
107 movl 16(%esi),%eax | |
108 # saved r[3] | |
109 # ################## Calculate word 4 | |
110 xorl %ebx,%ebx | |
111 # mul a[4]*b[0] | |
112 mull %edx | |
113 addl %eax,%ecx | |
114 movl 12(%esi),%eax | |
115 adcl %edx,%ebp | |
116 movl 4(%edi),%edx | |
117 adcl $0,%ebx | |
118 # mul a[3]*b[1] | |
119 mull %edx | |
120 addl %eax,%ecx | |
121 movl 8(%esi),%eax | |
122 adcl %edx,%ebp | |
123 movl 8(%edi),%edx | |
124 adcl $0,%ebx | |
125 # mul a[2]*b[2] | |
126 mull %edx | |
127 addl %eax,%ecx | |
128 movl 4(%esi),%eax | |
129 adcl %edx,%ebp | |
130 movl 12(%edi),%edx | |
131 adcl $0,%ebx | |
132 # mul a[1]*b[3] | |
133 mull %edx | |
134 addl %eax,%ecx | |
135 movl (%esi),%eax | |
136 adcl %edx,%ebp | |
137 movl 16(%edi),%edx | |
138 adcl $0,%ebx | |
139 # mul a[0]*b[4] | |
140 mull %edx | |
141 addl %eax,%ecx | |
142 movl 20(%esp),%eax | |
143 adcl %edx,%ebp | |
144 movl (%edi),%edx | |
145 adcl $0,%ebx | |
146 movl %ecx,16(%eax) | |
147 movl 20(%esi),%eax | |
148 # saved r[4] | |
149 # ################## Calculate word 5 | |
150 xorl %ecx,%ecx | |
151 # mul a[5]*b[0] | |
152 mull %edx | |
153 addl %eax,%ebp | |
154 movl 16(%esi),%eax | |
155 adcl %edx,%ebx | |
156 movl 4(%edi),%edx | |
157 adcl $0,%ecx | |
158 # mul a[4]*b[1] | |
159 mull %edx | |
160 addl %eax,%ebp | |
161 movl 12(%esi),%eax | |
162 adcl %edx,%ebx | |
163 movl 8(%edi),%edx | |
164 adcl $0,%ecx | |
165 # mul a[3]*b[2] | |
166 mull %edx | |
167 addl %eax,%ebp | |
168 movl 8(%esi),%eax | |
169 adcl %edx,%ebx | |
170 movl 12(%edi),%edx | |
171 adcl $0,%ecx | |
172 # mul a[2]*b[3] | |
173 mull %edx | |
174 addl %eax,%ebp | |
175 movl 4(%esi),%eax | |
176 adcl %edx,%ebx | |
177 movl 16(%edi),%edx | |
178 adcl $0,%ecx | |
179 # mul a[1]*b[4] | |
180 mull %edx | |
181 addl %eax,%ebp | |
182 movl (%esi),%eax | |
183 adcl %edx,%ebx | |
184 movl 20(%edi),%edx | |
185 adcl $0,%ecx | |
186 # mul a[0]*b[5] | |
187 mull %edx | |
188 addl %eax,%ebp | |
189 movl 20(%esp),%eax | |
190 adcl %edx,%ebx | |
191 movl (%edi),%edx | |
192 adcl $0,%ecx | |
193 movl %ebp,20(%eax) | |
194 movl 24(%esi),%eax | |
195 # saved r[5] | |
196 # ################## Calculate word 6 | |
197 xorl %ebp,%ebp | |
198 # mul a[6]*b[0] | |
199 mull %edx | |
200 addl %eax,%ebx | |
201 movl 20(%esi),%eax | |
202 adcl %edx,%ecx | |
203 movl 4(%edi),%edx | |
204 adcl $0,%ebp | |
205 # mul a[5]*b[1] | |
206 mull %edx | |
207 addl %eax,%ebx | |
208 movl 16(%esi),%eax | |
209 adcl %edx,%ecx | |
210 movl 8(%edi),%edx | |
211 adcl $0,%ebp | |
212 # mul a[4]*b[2] | |
213 mull %edx | |
214 addl %eax,%ebx | |
215 movl 12(%esi),%eax | |
216 adcl %edx,%ecx | |
217 movl 12(%edi),%edx | |
218 adcl $0,%ebp | |
219 # mul a[3]*b[3] | |
220 mull %edx | |
221 addl %eax,%ebx | |
222 movl 8(%esi),%eax | |
223 adcl %edx,%ecx | |
224 movl 16(%edi),%edx | |
225 adcl $0,%ebp | |
226 # mul a[2]*b[4] | |
227 mull %edx | |
228 addl %eax,%ebx | |
229 movl 4(%esi),%eax | |
230 adcl %edx,%ecx | |
231 movl 20(%edi),%edx | |
232 adcl $0,%ebp | |
233 # mul a[1]*b[5] | |
234 mull %edx | |
235 addl %eax,%ebx | |
236 movl (%esi),%eax | |
237 adcl %edx,%ecx | |
238 movl 24(%edi),%edx | |
239 adcl $0,%ebp | |
240 # mul a[0]*b[6] | |
241 mull %edx | |
242 addl %eax,%ebx | |
243 movl 20(%esp),%eax | |
244 adcl %edx,%ecx | |
245 movl (%edi),%edx | |
246 adcl $0,%ebp | |
247 movl %ebx,24(%eax) | |
248 movl 28(%esi),%eax | |
249 # saved r[6] | |
250 # ################## Calculate word 7 | |
251 xorl %ebx,%ebx | |
252 # mul a[7]*b[0] | |
253 mull %edx | |
254 addl %eax,%ecx | |
255 movl 24(%esi),%eax | |
256 adcl %edx,%ebp | |
257 movl 4(%edi),%edx | |
258 adcl $0,%ebx | |
259 # mul a[6]*b[1] | |
260 mull %edx | |
261 addl %eax,%ecx | |
262 movl 20(%esi),%eax | |
263 adcl %edx,%ebp | |
264 movl 8(%edi),%edx | |
265 adcl $0,%ebx | |
266 # mul a[5]*b[2] | |
267 mull %edx | |
268 addl %eax,%ecx | |
269 movl 16(%esi),%eax | |
270 adcl %edx,%ebp | |
271 movl 12(%edi),%edx | |
272 adcl $0,%ebx | |
273 # mul a[4]*b[3] | |
274 mull %edx | |
275 addl %eax,%ecx | |
276 movl 12(%esi),%eax | |
277 adcl %edx,%ebp | |
278 movl 16(%edi),%edx | |
279 adcl $0,%ebx | |
280 # mul a[3]*b[4] | |
281 mull %edx | |
282 addl %eax,%ecx | |
283 movl 8(%esi),%eax | |
284 adcl %edx,%ebp | |
285 movl 20(%edi),%edx | |
286 adcl $0,%ebx | |
287 # mul a[2]*b[5] | |
288 mull %edx | |
289 addl %eax,%ecx | |
290 movl 4(%esi),%eax | |
291 adcl %edx,%ebp | |
292 movl 24(%edi),%edx | |
293 adcl $0,%ebx | |
294 # mul a[1]*b[6] | |
295 mull %edx | |
296 addl %eax,%ecx | |
297 movl (%esi),%eax | |
298 adcl %edx,%ebp | |
299 movl 28(%edi),%edx | |
300 adcl $0,%ebx | |
301 # mul a[0]*b[7] | |
302 mull %edx | |
303 addl %eax,%ecx | |
304 movl 20(%esp),%eax | |
305 adcl %edx,%ebp | |
306 movl 4(%edi),%edx | |
307 adcl $0,%ebx | |
308 movl %ecx,28(%eax) | |
309 movl 28(%esi),%eax | |
310 # saved r[7] | |
311 # ################## Calculate word 8 | |
312 xorl %ecx,%ecx | |
313 # mul a[7]*b[1] | |
314 mull %edx | |
315 addl %eax,%ebp | |
316 movl 24(%esi),%eax | |
317 adcl %edx,%ebx | |
318 movl 8(%edi),%edx | |
319 adcl $0,%ecx | |
320 # mul a[6]*b[2] | |
321 mull %edx | |
322 addl %eax,%ebp | |
323 movl 20(%esi),%eax | |
324 adcl %edx,%ebx | |
325 movl 12(%edi),%edx | |
326 adcl $0,%ecx | |
327 # mul a[5]*b[3] | |
328 mull %edx | |
329 addl %eax,%ebp | |
330 movl 16(%esi),%eax | |
331 adcl %edx,%ebx | |
332 movl 16(%edi),%edx | |
333 adcl $0,%ecx | |
334 # mul a[4]*b[4] | |
335 mull %edx | |
336 addl %eax,%ebp | |
337 movl 12(%esi),%eax | |
338 adcl %edx,%ebx | |
339 movl 20(%edi),%edx | |
340 adcl $0,%ecx | |
341 # mul a[3]*b[5] | |
342 mull %edx | |
343 addl %eax,%ebp | |
344 movl 8(%esi),%eax | |
345 adcl %edx,%ebx | |
346 movl 24(%edi),%edx | |
347 adcl $0,%ecx | |
348 # mul a[2]*b[6] | |
349 mull %edx | |
350 addl %eax,%ebp | |
351 movl 4(%esi),%eax | |
352 adcl %edx,%ebx | |
353 movl 28(%edi),%edx | |
354 adcl $0,%ecx | |
355 # mul a[1]*b[7] | |
356 mull %edx | |
357 addl %eax,%ebp | |
358 movl 20(%esp),%eax | |
359 adcl %edx,%ebx | |
360 movl 8(%edi),%edx | |
361 adcl $0,%ecx | |
362 movl %ebp,32(%eax) | |
363 movl 28(%esi),%eax | |
364 # saved r[8] | |
365 # ################## Calculate word 9 | |
366 xorl %ebp,%ebp | |
367 # mul a[7]*b[2] | |
368 mull %edx | |
369 addl %eax,%ebx | |
370 movl 24(%esi),%eax | |
371 adcl %edx,%ecx | |
372 movl 12(%edi),%edx | |
373 adcl $0,%ebp | |
374 # mul a[6]*b[3] | |
375 mull %edx | |
376 addl %eax,%ebx | |
377 movl 20(%esi),%eax | |
378 adcl %edx,%ecx | |
379 movl 16(%edi),%edx | |
380 adcl $0,%ebp | |
381 # mul a[5]*b[4] | |
382 mull %edx | |
383 addl %eax,%ebx | |
384 movl 16(%esi),%eax | |
385 adcl %edx,%ecx | |
386 movl 20(%edi),%edx | |
387 adcl $0,%ebp | |
388 # mul a[4]*b[5] | |
389 mull %edx | |
390 addl %eax,%ebx | |
391 movl 12(%esi),%eax | |
392 adcl %edx,%ecx | |
393 movl 24(%edi),%edx | |
394 adcl $0,%ebp | |
395 # mul a[3]*b[6] | |
396 mull %edx | |
397 addl %eax,%ebx | |
398 movl 8(%esi),%eax | |
399 adcl %edx,%ecx | |
400 movl 28(%edi),%edx | |
401 adcl $0,%ebp | |
402 # mul a[2]*b[7] | |
403 mull %edx | |
404 addl %eax,%ebx | |
405 movl 20(%esp),%eax | |
406 adcl %edx,%ecx | |
407 movl 12(%edi),%edx | |
408 adcl $0,%ebp | |
409 movl %ebx,36(%eax) | |
410 movl 28(%esi),%eax | |
411 # saved r[9] | |
412 # ################## Calculate word 10 | |
413 xorl %ebx,%ebx | |
414 # mul a[7]*b[3] | |
415 mull %edx | |
416 addl %eax,%ecx | |
417 movl 24(%esi),%eax | |
418 adcl %edx,%ebp | |
419 movl 16(%edi),%edx | |
420 adcl $0,%ebx | |
421 # mul a[6]*b[4] | |
422 mull %edx | |
423 addl %eax,%ecx | |
424 movl 20(%esi),%eax | |
425 adcl %edx,%ebp | |
426 movl 20(%edi),%edx | |
427 adcl $0,%ebx | |
428 # mul a[5]*b[5] | |
429 mull %edx | |
430 addl %eax,%ecx | |
431 movl 16(%esi),%eax | |
432 adcl %edx,%ebp | |
433 movl 24(%edi),%edx | |
434 adcl $0,%ebx | |
435 # mul a[4]*b[6] | |
436 mull %edx | |
437 addl %eax,%ecx | |
438 movl 12(%esi),%eax | |
439 adcl %edx,%ebp | |
440 movl 28(%edi),%edx | |
441 adcl $0,%ebx | |
442 # mul a[3]*b[7] | |
443 mull %edx | |
444 addl %eax,%ecx | |
445 movl 20(%esp),%eax | |
446 adcl %edx,%ebp | |
447 movl 16(%edi),%edx | |
448 adcl $0,%ebx | |
449 movl %ecx,40(%eax) | |
450 movl 28(%esi),%eax | |
451 # saved r[10] | |
452 # ################## Calculate word 11 | |
453 xorl %ecx,%ecx | |
454 # mul a[7]*b[4] | |
455 mull %edx | |
456 addl %eax,%ebp | |
457 movl 24(%esi),%eax | |
458 adcl %edx,%ebx | |
459 movl 20(%edi),%edx | |
460 adcl $0,%ecx | |
461 # mul a[6]*b[5] | |
462 mull %edx | |
463 addl %eax,%ebp | |
464 movl 20(%esi),%eax | |
465 adcl %edx,%ebx | |
466 movl 24(%edi),%edx | |
467 adcl $0,%ecx | |
468 # mul a[5]*b[6] | |
469 mull %edx | |
470 addl %eax,%ebp | |
471 movl 16(%esi),%eax | |
472 adcl %edx,%ebx | |
473 movl 28(%edi),%edx | |
474 adcl $0,%ecx | |
475 # mul a[4]*b[7] | |
476 mull %edx | |
477 addl %eax,%ebp | |
478 movl 20(%esp),%eax | |
479 adcl %edx,%ebx | |
480 movl 20(%edi),%edx | |
481 adcl $0,%ecx | |
482 movl %ebp,44(%eax) | |
483 movl 28(%esi),%eax | |
484 # saved r[11] | |
485 # ################## Calculate word 12 | |
486 xorl %ebp,%ebp | |
487 # mul a[7]*b[5] | |
488 mull %edx | |
489 addl %eax,%ebx | |
490 movl 24(%esi),%eax | |
491 adcl %edx,%ecx | |
492 movl 24(%edi),%edx | |
493 adcl $0,%ebp | |
494 # mul a[6]*b[6] | |
495 mull %edx | |
496 addl %eax,%ebx | |
497 movl 20(%esi),%eax | |
498 adcl %edx,%ecx | |
499 movl 28(%edi),%edx | |
500 adcl $0,%ebp | |
501 # mul a[5]*b[7] | |
502 mull %edx | |
503 addl %eax,%ebx | |
504 movl 20(%esp),%eax | |
505 adcl %edx,%ecx | |
506 movl 24(%edi),%edx | |
507 adcl $0,%ebp | |
508 movl %ebx,48(%eax) | |
509 movl 28(%esi),%eax | |
510 # saved r[12] | |
511 # ################## Calculate word 13 | |
512 xorl %ebx,%ebx | |
513 # mul a[7]*b[6] | |
514 mull %edx | |
515 addl %eax,%ecx | |
516 movl 24(%esi),%eax | |
517 adcl %edx,%ebp | |
518 movl 28(%edi),%edx | |
519 adcl $0,%ebx | |
520 # mul a[6]*b[7] | |
521 mull %edx | |
522 addl %eax,%ecx | |
523 movl 20(%esp),%eax | |
524 adcl %edx,%ebp | |
525 movl 28(%edi),%edx | |
526 adcl $0,%ebx | |
527 movl %ecx,52(%eax) | |
528 movl 28(%esi),%eax | |
529 # saved r[13] | |
530 # ################## Calculate word 14 | |
531 xorl %ecx,%ecx | |
532 # mul a[7]*b[7] | |
533 mull %edx | |
534 addl %eax,%ebp | |
535 movl 20(%esp),%eax | |
536 adcl %edx,%ebx | |
537 adcl $0,%ecx | |
538 movl %ebp,56(%eax) | |
539 # saved r[14] | |
540 # save r[15] | |
541 movl %ebx,60(%eax) | |
542 popl %ebx | |
543 popl %ebp | |
544 popl %edi | |
545 popl %esi | |
546 ret | |
547 .globl _bn_mul_comba4 | |
548 .private_extern _bn_mul_comba4 | |
549 .align 4 | |
550 _bn_mul_comba4: | |
551 L_bn_mul_comba4_begin: | |
552 pushl %esi | |
553 movl 12(%esp),%esi | |
554 pushl %edi | |
555 movl 20(%esp),%edi | |
556 pushl %ebp | |
557 pushl %ebx | |
558 xorl %ebx,%ebx | |
559 movl (%esi),%eax | |
560 xorl %ecx,%ecx | |
561 movl (%edi),%edx | |
562 # ################## Calculate word 0 | |
563 xorl %ebp,%ebp | |
564 # mul a[0]*b[0] | |
565 mull %edx | |
566 addl %eax,%ebx | |
567 movl 20(%esp),%eax | |
568 adcl %edx,%ecx | |
569 movl (%edi),%edx | |
570 adcl $0,%ebp | |
571 movl %ebx,(%eax) | |
572 movl 4(%esi),%eax | |
573 # saved r[0] | |
574 # ################## Calculate word 1 | |
575 xorl %ebx,%ebx | |
576 # mul a[1]*b[0] | |
577 mull %edx | |
578 addl %eax,%ecx | |
579 movl (%esi),%eax | |
580 adcl %edx,%ebp | |
581 movl 4(%edi),%edx | |
582 adcl $0,%ebx | |
583 # mul a[0]*b[1] | |
584 mull %edx | |
585 addl %eax,%ecx | |
586 movl 20(%esp),%eax | |
587 adcl %edx,%ebp | |
588 movl (%edi),%edx | |
589 adcl $0,%ebx | |
590 movl %ecx,4(%eax) | |
591 movl 8(%esi),%eax | |
592 # saved r[1] | |
593 # ################## Calculate word 2 | |
594 xorl %ecx,%ecx | |
595 # mul a[2]*b[0] | |
596 mull %edx | |
597 addl %eax,%ebp | |
598 movl 4(%esi),%eax | |
599 adcl %edx,%ebx | |
600 movl 4(%edi),%edx | |
601 adcl $0,%ecx | |
602 # mul a[1]*b[1] | |
603 mull %edx | |
604 addl %eax,%ebp | |
605 movl (%esi),%eax | |
606 adcl %edx,%ebx | |
607 movl 8(%edi),%edx | |
608 adcl $0,%ecx | |
609 # mul a[0]*b[2] | |
610 mull %edx | |
611 addl %eax,%ebp | |
612 movl 20(%esp),%eax | |
613 adcl %edx,%ebx | |
614 movl (%edi),%edx | |
615 adcl $0,%ecx | |
616 movl %ebp,8(%eax) | |
617 movl 12(%esi),%eax | |
618 # saved r[2] | |
619 # ################## Calculate word 3 | |
620 xorl %ebp,%ebp | |
621 # mul a[3]*b[0] | |
622 mull %edx | |
623 addl %eax,%ebx | |
624 movl 8(%esi),%eax | |
625 adcl %edx,%ecx | |
626 movl 4(%edi),%edx | |
627 adcl $0,%ebp | |
628 # mul a[2]*b[1] | |
629 mull %edx | |
630 addl %eax,%ebx | |
631 movl 4(%esi),%eax | |
632 adcl %edx,%ecx | |
633 movl 8(%edi),%edx | |
634 adcl $0,%ebp | |
635 # mul a[1]*b[2] | |
636 mull %edx | |
637 addl %eax,%ebx | |
638 movl (%esi),%eax | |
639 adcl %edx,%ecx | |
640 movl 12(%edi),%edx | |
641 adcl $0,%ebp | |
642 # mul a[0]*b[3] | |
643 mull %edx | |
644 addl %eax,%ebx | |
645 movl 20(%esp),%eax | |
646 adcl %edx,%ecx | |
647 movl 4(%edi),%edx | |
648 adcl $0,%ebp | |
649 movl %ebx,12(%eax) | |
650 movl 12(%esi),%eax | |
651 # saved r[3] | |
652 # ################## Calculate word 4 | |
653 xorl %ebx,%ebx | |
654 # mul a[3]*b[1] | |
655 mull %edx | |
656 addl %eax,%ecx | |
657 movl 8(%esi),%eax | |
658 adcl %edx,%ebp | |
659 movl 8(%edi),%edx | |
660 adcl $0,%ebx | |
661 # mul a[2]*b[2] | |
662 mull %edx | |
663 addl %eax,%ecx | |
664 movl 4(%esi),%eax | |
665 adcl %edx,%ebp | |
666 movl 12(%edi),%edx | |
667 adcl $0,%ebx | |
668 # mul a[1]*b[3] | |
669 mull %edx | |
670 addl %eax,%ecx | |
671 movl 20(%esp),%eax | |
672 adcl %edx,%ebp | |
673 movl 8(%edi),%edx | |
674 adcl $0,%ebx | |
675 movl %ecx,16(%eax) | |
676 movl 12(%esi),%eax | |
677 # saved r[4] | |
678 # ################## Calculate word 5 | |
679 xorl %ecx,%ecx | |
680 # mul a[3]*b[2] | |
681 mull %edx | |
682 addl %eax,%ebp | |
683 movl 8(%esi),%eax | |
684 adcl %edx,%ebx | |
685 movl 12(%edi),%edx | |
686 adcl $0,%ecx | |
687 # mul a[2]*b[3] | |
688 mull %edx | |
689 addl %eax,%ebp | |
690 movl 20(%esp),%eax | |
691 adcl %edx,%ebx | |
692 movl 12(%edi),%edx | |
693 adcl $0,%ecx | |
694 movl %ebp,20(%eax) | |
695 movl 12(%esi),%eax | |
696 # saved r[5] | |
697 # ################## Calculate word 6 | |
698 xorl %ebp,%ebp | |
699 # mul a[3]*b[3] | |
700 mull %edx | |
701 addl %eax,%ebx | |
702 movl 20(%esp),%eax | |
703 adcl %edx,%ecx | |
704 adcl $0,%ebp | |
705 movl %ebx,24(%eax) | |
706 # saved r[6] | |
707 # save r[7] | |
708 movl %ecx,28(%eax) | |
709 popl %ebx | |
710 popl %ebp | |
711 popl %edi | |
712 popl %esi | |
713 ret | |
714 .globl _bn_sqr_comba8 | |
715 .private_extern _bn_sqr_comba8 | |
716 .align 4 | |
717 _bn_sqr_comba8: | |
718 L_bn_sqr_comba8_begin: | |
719 pushl %esi | |
720 pushl %edi | |
721 pushl %ebp | |
722 pushl %ebx | |
723 movl 20(%esp),%edi | |
724 movl 24(%esp),%esi | |
725 xorl %ebx,%ebx | |
726 xorl %ecx,%ecx | |
727 movl (%esi),%eax | |
728 # ############### Calculate word 0 | |
729 xorl %ebp,%ebp | |
730 # sqr a[0]*a[0] | |
731 mull %eax | |
732 addl %eax,%ebx | |
733 adcl %edx,%ecx | |
734 movl (%esi),%edx | |
735 adcl $0,%ebp | |
736 movl %ebx,(%edi) | |
737 movl 4(%esi),%eax | |
738 # saved r[0] | |
739 # ############### Calculate word 1 | |
740 xorl %ebx,%ebx | |
741 # sqr a[1]*a[0] | |
742 mull %edx | |
743 addl %eax,%eax | |
744 adcl %edx,%edx | |
745 adcl $0,%ebx | |
746 addl %eax,%ecx | |
747 adcl %edx,%ebp | |
748 movl 8(%esi),%eax | |
749 adcl $0,%ebx | |
750 movl %ecx,4(%edi) | |
751 movl (%esi),%edx | |
752 # saved r[1] | |
753 # ############### Calculate word 2 | |
754 xorl %ecx,%ecx | |
755 # sqr a[2]*a[0] | |
756 mull %edx | |
757 addl %eax,%eax | |
758 adcl %edx,%edx | |
759 adcl $0,%ecx | |
760 addl %eax,%ebp | |
761 adcl %edx,%ebx | |
762 movl 4(%esi),%eax | |
763 adcl $0,%ecx | |
764 # sqr a[1]*a[1] | |
765 mull %eax | |
766 addl %eax,%ebp | |
767 adcl %edx,%ebx | |
768 movl (%esi),%edx | |
769 adcl $0,%ecx | |
770 movl %ebp,8(%edi) | |
771 movl 12(%esi),%eax | |
772 # saved r[2] | |
773 # ############### Calculate word 3 | |
774 xorl %ebp,%ebp | |
775 # sqr a[3]*a[0] | |
776 mull %edx | |
777 addl %eax,%eax | |
778 adcl %edx,%edx | |
779 adcl $0,%ebp | |
780 addl %eax,%ebx | |
781 adcl %edx,%ecx | |
782 movl 8(%esi),%eax | |
783 adcl $0,%ebp | |
784 movl 4(%esi),%edx | |
785 # sqr a[2]*a[1] | |
786 mull %edx | |
787 addl %eax,%eax | |
788 adcl %edx,%edx | |
789 adcl $0,%ebp | |
790 addl %eax,%ebx | |
791 adcl %edx,%ecx | |
792 movl 16(%esi),%eax | |
793 adcl $0,%ebp | |
794 movl %ebx,12(%edi) | |
795 movl (%esi),%edx | |
796 # saved r[3] | |
797 # ############### Calculate word 4 | |
798 xorl %ebx,%ebx | |
799 # sqr a[4]*a[0] | |
800 mull %edx | |
801 addl %eax,%eax | |
802 adcl %edx,%edx | |
803 adcl $0,%ebx | |
804 addl %eax,%ecx | |
805 adcl %edx,%ebp | |
806 movl 12(%esi),%eax | |
807 adcl $0,%ebx | |
808 movl 4(%esi),%edx | |
809 # sqr a[3]*a[1] | |
810 mull %edx | |
811 addl %eax,%eax | |
812 adcl %edx,%edx | |
813 adcl $0,%ebx | |
814 addl %eax,%ecx | |
815 adcl %edx,%ebp | |
816 movl 8(%esi),%eax | |
817 adcl $0,%ebx | |
818 # sqr a[2]*a[2] | |
819 mull %eax | |
820 addl %eax,%ecx | |
821 adcl %edx,%ebp | |
822 movl (%esi),%edx | |
823 adcl $0,%ebx | |
824 movl %ecx,16(%edi) | |
825 movl 20(%esi),%eax | |
826 # saved r[4] | |
827 # ############### Calculate word 5 | |
828 xorl %ecx,%ecx | |
829 # sqr a[5]*a[0] | |
830 mull %edx | |
831 addl %eax,%eax | |
832 adcl %edx,%edx | |
833 adcl $0,%ecx | |
834 addl %eax,%ebp | |
835 adcl %edx,%ebx | |
836 movl 16(%esi),%eax | |
837 adcl $0,%ecx | |
838 movl 4(%esi),%edx | |
839 # sqr a[4]*a[1] | |
840 mull %edx | |
841 addl %eax,%eax | |
842 adcl %edx,%edx | |
843 adcl $0,%ecx | |
844 addl %eax,%ebp | |
845 adcl %edx,%ebx | |
846 movl 12(%esi),%eax | |
847 adcl $0,%ecx | |
848 movl 8(%esi),%edx | |
849 # sqr a[3]*a[2] | |
850 mull %edx | |
851 addl %eax,%eax | |
852 adcl %edx,%edx | |
853 adcl $0,%ecx | |
854 addl %eax,%ebp | |
855 adcl %edx,%ebx | |
856 movl 24(%esi),%eax | |
857 adcl $0,%ecx | |
858 movl %ebp,20(%edi) | |
859 movl (%esi),%edx | |
860 # saved r[5] | |
861 # ############### Calculate word 6 | |
862 xorl %ebp,%ebp | |
863 # sqr a[6]*a[0] | |
864 mull %edx | |
865 addl %eax,%eax | |
866 adcl %edx,%edx | |
867 adcl $0,%ebp | |
868 addl %eax,%ebx | |
869 adcl %edx,%ecx | |
870 movl 20(%esi),%eax | |
871 adcl $0,%ebp | |
872 movl 4(%esi),%edx | |
873 # sqr a[5]*a[1] | |
874 mull %edx | |
875 addl %eax,%eax | |
876 adcl %edx,%edx | |
877 adcl $0,%ebp | |
878 addl %eax,%ebx | |
879 adcl %edx,%ecx | |
880 movl 16(%esi),%eax | |
881 adcl $0,%ebp | |
882 movl 8(%esi),%edx | |
883 # sqr a[4]*a[2] | |
884 mull %edx | |
885 addl %eax,%eax | |
886 adcl %edx,%edx | |
887 adcl $0,%ebp | |
888 addl %eax,%ebx | |
889 adcl %edx,%ecx | |
890 movl 12(%esi),%eax | |
891 adcl $0,%ebp | |
892 # sqr a[3]*a[3] | |
893 mull %eax | |
894 addl %eax,%ebx | |
895 adcl %edx,%ecx | |
896 movl (%esi),%edx | |
897 adcl $0,%ebp | |
898 movl %ebx,24(%edi) | |
899 movl 28(%esi),%eax | |
900 # saved r[6] | |
901 # ############### Calculate word 7 | |
902 xorl %ebx,%ebx | |
903 # sqr a[7]*a[0] | |
904 mull %edx | |
905 addl %eax,%eax | |
906 adcl %edx,%edx | |
907 adcl $0,%ebx | |
908 addl %eax,%ecx | |
909 adcl %edx,%ebp | |
910 movl 24(%esi),%eax | |
911 adcl $0,%ebx | |
912 movl 4(%esi),%edx | |
913 # sqr a[6]*a[1] | |
914 mull %edx | |
915 addl %eax,%eax | |
916 adcl %edx,%edx | |
917 adcl $0,%ebx | |
918 addl %eax,%ecx | |
919 adcl %edx,%ebp | |
920 movl 20(%esi),%eax | |
921 adcl $0,%ebx | |
922 movl 8(%esi),%edx | |
923 # sqr a[5]*a[2] | |
924 mull %edx | |
925 addl %eax,%eax | |
926 adcl %edx,%edx | |
927 adcl $0,%ebx | |
928 addl %eax,%ecx | |
929 adcl %edx,%ebp | |
930 movl 16(%esi),%eax | |
931 adcl $0,%ebx | |
932 movl 12(%esi),%edx | |
933 # sqr a[4]*a[3] | |
934 mull %edx | |
935 addl %eax,%eax | |
936 adcl %edx,%edx | |
937 adcl $0,%ebx | |
938 addl %eax,%ecx | |
939 adcl %edx,%ebp | |
940 movl 28(%esi),%eax | |
941 adcl $0,%ebx | |
942 movl %ecx,28(%edi) | |
943 movl 4(%esi),%edx | |
944 # saved r[7] | |
945 # ############### Calculate word 8 | |
946 xorl %ecx,%ecx | |
947 # sqr a[7]*a[1] | |
948 mull %edx | |
949 addl %eax,%eax | |
950 adcl %edx,%edx | |
951 adcl $0,%ecx | |
952 addl %eax,%ebp | |
953 adcl %edx,%ebx | |
954 movl 24(%esi),%eax | |
955 adcl $0,%ecx | |
956 movl 8(%esi),%edx | |
957 # sqr a[6]*a[2] | |
958 mull %edx | |
959 addl %eax,%eax | |
960 adcl %edx,%edx | |
961 adcl $0,%ecx | |
962 addl %eax,%ebp | |
963 adcl %edx,%ebx | |
964 movl 20(%esi),%eax | |
965 adcl $0,%ecx | |
966 movl 12(%esi),%edx | |
967 # sqr a[5]*a[3] | |
968 mull %edx | |
969 addl %eax,%eax | |
970 adcl %edx,%edx | |
971 adcl $0,%ecx | |
972 addl %eax,%ebp | |
973 adcl %edx,%ebx | |
974 movl 16(%esi),%eax | |
975 adcl $0,%ecx | |
976 # sqr a[4]*a[4] | |
977 mull %eax | |
978 addl %eax,%ebp | |
979 adcl %edx,%ebx | |
980 movl 8(%esi),%edx | |
981 adcl $0,%ecx | |
982 movl %ebp,32(%edi) | |
983 movl 28(%esi),%eax | |
984 # saved r[8] | |
985 # ############### Calculate word 9 | |
986 xorl %ebp,%ebp | |
987 # sqr a[7]*a[2] | |
988 mull %edx | |
989 addl %eax,%eax | |
990 adcl %edx,%edx | |
991 adcl $0,%ebp | |
992 addl %eax,%ebx | |
993 adcl %edx,%ecx | |
994 movl 24(%esi),%eax | |
995 adcl $0,%ebp | |
996 movl 12(%esi),%edx | |
997 # sqr a[6]*a[3] | |
998 mull %edx | |
999 addl %eax,%eax | |
1000 adcl %edx,%edx | |
1001 adcl $0,%ebp | |
1002 addl %eax,%ebx | |
1003 adcl %edx,%ecx | |
1004 movl 20(%esi),%eax | |
1005 adcl $0,%ebp | |
1006 movl 16(%esi),%edx | |
1007 # sqr a[5]*a[4] | |
1008 mull %edx | |
1009 addl %eax,%eax | |
1010 adcl %edx,%edx | |
1011 adcl $0,%ebp | |
1012 addl %eax,%ebx | |
1013 adcl %edx,%ecx | |
1014 movl 28(%esi),%eax | |
1015 adcl $0,%ebp | |
1016 movl %ebx,36(%edi) | |
1017 movl 12(%esi),%edx | |
1018 # saved r[9] | |
1019 # ############### Calculate word 10 | |
1020 xorl %ebx,%ebx | |
1021 # sqr a[7]*a[3] | |
1022 mull %edx | |
1023 addl %eax,%eax | |
1024 adcl %edx,%edx | |
1025 adcl $0,%ebx | |
1026 addl %eax,%ecx | |
1027 adcl %edx,%ebp | |
1028 movl 24(%esi),%eax | |
1029 adcl $0,%ebx | |
1030 movl 16(%esi),%edx | |
1031 # sqr a[6]*a[4] | |
1032 mull %edx | |
1033 addl %eax,%eax | |
1034 adcl %edx,%edx | |
1035 adcl $0,%ebx | |
1036 addl %eax,%ecx | |
1037 adcl %edx,%ebp | |
1038 movl 20(%esi),%eax | |
1039 adcl $0,%ebx | |
1040 # sqr a[5]*a[5] | |
1041 mull %eax | |
1042 addl %eax,%ecx | |
1043 adcl %edx,%ebp | |
1044 movl 16(%esi),%edx | |
1045 adcl $0,%ebx | |
1046 movl %ecx,40(%edi) | |
1047 movl 28(%esi),%eax | |
1048 # saved r[10] | |
1049 # ############### Calculate word 11 | |
1050 xorl %ecx,%ecx | |
1051 # sqr a[7]*a[4] | |
1052 mull %edx | |
1053 addl %eax,%eax | |
1054 adcl %edx,%edx | |
1055 adcl $0,%ecx | |
1056 addl %eax,%ebp | |
1057 adcl %edx,%ebx | |
1058 movl 24(%esi),%eax | |
1059 adcl $0,%ecx | |
1060 movl 20(%esi),%edx | |
1061 # sqr a[6]*a[5] | |
1062 mull %edx | |
1063 addl %eax,%eax | |
1064 adcl %edx,%edx | |
1065 adcl $0,%ecx | |
1066 addl %eax,%ebp | |
1067 adcl %edx,%ebx | |
1068 movl 28(%esi),%eax | |
1069 adcl $0,%ecx | |
1070 movl %ebp,44(%edi) | |
1071 movl 20(%esi),%edx | |
1072 # saved r[11] | |
1073 # ############### Calculate word 12 | |
1074 xorl %ebp,%ebp | |
1075 # sqr a[7]*a[5] | |
1076 mull %edx | |
1077 addl %eax,%eax | |
1078 adcl %edx,%edx | |
1079 adcl $0,%ebp | |
1080 addl %eax,%ebx | |
1081 adcl %edx,%ecx | |
1082 movl 24(%esi),%eax | |
1083 adcl $0,%ebp | |
1084 # sqr a[6]*a[6] | |
1085 mull %eax | |
1086 addl %eax,%ebx | |
1087 adcl %edx,%ecx | |
1088 movl 24(%esi),%edx | |
1089 adcl $0,%ebp | |
1090 movl %ebx,48(%edi) | |
1091 movl 28(%esi),%eax | |
1092 # saved r[12] | |
1093 # ############### Calculate word 13 | |
1094 xorl %ebx,%ebx | |
1095 # sqr a[7]*a[6] | |
1096 mull %edx | |
1097 addl %eax,%eax | |
1098 adcl %edx,%edx | |
1099 adcl $0,%ebx | |
1100 addl %eax,%ecx | |
1101 adcl %edx,%ebp | |
1102 movl 28(%esi),%eax | |
1103 adcl $0,%ebx | |
1104 movl %ecx,52(%edi) | |
1105 # saved r[13] | |
1106 # ############### Calculate word 14 | |
1107 xorl %ecx,%ecx | |
1108 # sqr a[7]*a[7] | |
1109 mull %eax | |
1110 addl %eax,%ebp | |
1111 adcl %edx,%ebx | |
1112 adcl $0,%ecx | |
1113 movl %ebp,56(%edi) | |
1114 # saved r[14] | |
1115 movl %ebx,60(%edi) | |
1116 popl %ebx | |
1117 popl %ebp | |
1118 popl %edi | |
1119 popl %esi | |
1120 ret | |
1121 .globl _bn_sqr_comba4 | |
1122 .private_extern _bn_sqr_comba4 | |
1123 .align 4 | |
1124 _bn_sqr_comba4: | |
1125 L_bn_sqr_comba4_begin: | |
1126 pushl %esi | |
1127 pushl %edi | |
1128 pushl %ebp | |
1129 pushl %ebx | |
1130 movl 20(%esp),%edi | |
1131 movl 24(%esp),%esi | |
1132 xorl %ebx,%ebx | |
1133 xorl %ecx,%ecx | |
1134 movl (%esi),%eax | |
1135 # ############### Calculate word 0 | |
1136 xorl %ebp,%ebp | |
1137 # sqr a[0]*a[0] | |
1138 mull %eax | |
1139 addl %eax,%ebx | |
1140 adcl %edx,%ecx | |
1141 movl (%esi),%edx | |
1142 adcl $0,%ebp | |
1143 movl %ebx,(%edi) | |
1144 movl 4(%esi),%eax | |
1145 # saved r[0] | |
1146 # ############### Calculate word 1 | |
1147 xorl %ebx,%ebx | |
1148 # sqr a[1]*a[0] | |
1149 mull %edx | |
1150 addl %eax,%eax | |
1151 adcl %edx,%edx | |
1152 adcl $0,%ebx | |
1153 addl %eax,%ecx | |
1154 adcl %edx,%ebp | |
1155 movl 8(%esi),%eax | |
1156 adcl $0,%ebx | |
1157 movl %ecx,4(%edi) | |
1158 movl (%esi),%edx | |
1159 # saved r[1] | |
1160 # ############### Calculate word 2 | |
1161 xorl %ecx,%ecx | |
1162 # sqr a[2]*a[0] | |
1163 mull %edx | |
1164 addl %eax,%eax | |
1165 adcl %edx,%edx | |
1166 adcl $0,%ecx | |
1167 addl %eax,%ebp | |
1168 adcl %edx,%ebx | |
1169 movl 4(%esi),%eax | |
1170 adcl $0,%ecx | |
1171 # sqr a[1]*a[1] | |
1172 mull %eax | |
1173 addl %eax,%ebp | |
1174 adcl %edx,%ebx | |
1175 movl (%esi),%edx | |
1176 adcl $0,%ecx | |
1177 movl %ebp,8(%edi) | |
1178 movl 12(%esi),%eax | |
1179 # saved r[2] | |
1180 # ############### Calculate word 3 | |
1181 xorl %ebp,%ebp | |
1182 # sqr a[3]*a[0] | |
1183 mull %edx | |
1184 addl %eax,%eax | |
1185 adcl %edx,%edx | |
1186 adcl $0,%ebp | |
1187 addl %eax,%ebx | |
1188 adcl %edx,%ecx | |
1189 movl 8(%esi),%eax | |
1190 adcl $0,%ebp | |
1191 movl 4(%esi),%edx | |
1192 # sqr a[2]*a[1] | |
1193 mull %edx | |
1194 addl %eax,%eax | |
1195 adcl %edx,%edx | |
1196 adcl $0,%ebp | |
1197 addl %eax,%ebx | |
1198 adcl %edx,%ecx | |
1199 movl 12(%esi),%eax | |
1200 adcl $0,%ebp | |
1201 movl %ebx,12(%edi) | |
1202 movl 4(%esi),%edx | |
1203 # saved r[3] | |
1204 # ############### Calculate word 4 | |
1205 xorl %ebx,%ebx | |
1206 # sqr a[3]*a[1] | |
1207 mull %edx | |
1208 addl %eax,%eax | |
1209 adcl %edx,%edx | |
1210 adcl $0,%ebx | |
1211 addl %eax,%ecx | |
1212 adcl %edx,%ebp | |
1213 movl 8(%esi),%eax | |
1214 adcl $0,%ebx | |
1215 # sqr a[2]*a[2] | |
1216 mull %eax | |
1217 addl %eax,%ecx | |
1218 adcl %edx,%ebp | |
1219 movl 8(%esi),%edx | |
1220 adcl $0,%ebx | |
1221 movl %ecx,16(%edi) | |
1222 movl 12(%esi),%eax | |
1223 # saved r[4] | |
1224 # ############### Calculate word 5 | |
1225 xorl %ecx,%ecx | |
1226 # sqr a[3]*a[2] | |
1227 mull %edx | |
1228 addl %eax,%eax | |
1229 adcl %edx,%edx | |
1230 adcl $0,%ecx | |
1231 addl %eax,%ebp | |
1232 adcl %edx,%ebx | |
1233 movl 12(%esi),%eax | |
1234 adcl $0,%ecx | |
1235 movl %ebp,20(%edi) | |
1236 # saved r[5] | |
1237 # ############### Calculate word 6 | |
1238 xorl %ebp,%ebp | |
1239 # sqr a[3]*a[3] | |
1240 mull %eax | |
1241 addl %eax,%ebx | |
1242 adcl %edx,%ecx | |
1243 adcl $0,%ebp | |
1244 movl %ebx,24(%edi) | |
1245 # saved r[6] | |
1246 movl %ecx,28(%edi) | |
1247 popl %ebx | |
1248 popl %ebp | |
1249 popl %edi | |
1250 popl %esi | |
1251 ret | |
1252 #endif | |
OLD | NEW |