1 .machine	"any"
2 .csect	.text[PR],7
3 
4 .globl	.bn_mul_mont_int
5 .align	5
6 .bn_mul_mont_int:
7 	mr	9,3
8 	li	3,0
9 	slwi	8,8,3
10 	li	12,-4096
11 	addi	3,8,352
12 	subf	3,3,1
13 	and	3,3,12
14 	subf	3,1,3
15 	mr	12,1
16 	srwi	8,8,3
17 	stdux	1,1,3
18 
19 	std	20,-96(12)
20 	std	21,-88(12)
21 	std	22,-80(12)
22 	std	23,-72(12)
23 	std	24,-64(12)
24 	std	25,-56(12)
25 	std	26,-48(12)
26 	std	27,-40(12)
27 	std	28,-32(12)
28 	std	29,-24(12)
29 	std	30,-16(12)
30 	std	31,-8(12)
31 
32 	ld	7,0(7)
33 	addi	8,8,-2
34 
35 	ld	23,0(5)
36 	ld	10,0(4)
37 	addi	22,1,64
38 	mulld	25,10,23
39 	mulhdu	26,10,23
40 
41 	ld	10,8(4)
42 	ld	11,0(6)
43 
44 	mulld	24,25,7
45 
46 	mulld	29,10,23
47 	mulhdu	30,10,23
48 
49 	mulld	27,11,24
50 	mulhdu	28,11,24
51 	ld	11,8(6)
52 	addc	27,27,25
53 	addze	28,28
54 
55 	mulld	31,11,24
56 	mulhdu	0,11,24
57 
58 	mtctr	8
59 	li	21,16
60 .align	4
61 L1st:
62 	ldx	10,4,21
63 	addc	25,29,26
64 	ldx	11,6,21
65 	addze	26,30
66 	mulld	29,10,23
67 	addc	27,31,28
68 	mulhdu	30,10,23
69 	addze	28,0
70 	mulld	31,11,24
71 	addc	27,27,25
72 	mulhdu	0,11,24
73 	addze	28,28
74 	std	27,0(22)
75 
76 	addi	21,21,8
77 	addi	22,22,8
78 	bc	16,0,L1st
79 
80 	addc	25,29,26
81 	addze	26,30
82 
83 	addc	27,31,28
84 	addze	28,0
85 	addc	27,27,25
86 	addze	28,28
87 	std	27,0(22)
88 
89 	li	3,0
90 	addc	28,28,26
91 	addze	3,3
92 	std	28,8(22)
93 
94 	li	20,8
95 .align	4
96 Louter:
97 	ldx	23,5,20
98 	ld	10,0(4)
99 	addi	22,1,64
100 	ld	12,64(1)
101 	mulld	25,10,23
102 	mulhdu	26,10,23
103 	ld	10,8(4)
104 	ld	11,0(6)
105 	addc	25,25,12
106 	mulld	29,10,23
107 	addze	26,26
108 	mulld	24,25,7
109 	mulhdu	30,10,23
110 	mulld	27,11,24
111 	mulhdu	28,11,24
112 	ld	11,8(6)
113 	addc	27,27,25
114 	mulld	31,11,24
115 	addze	28,28
116 	mulhdu	0,11,24
117 
118 	mtctr	8
119 	li	21,16
120 .align	4
121 Linner:
122 	ldx	10,4,21
123 	addc	25,29,26
124 	ld	12,8(22)
125 	addze	26,30
126 	ldx	11,6,21
127 	addc	27,31,28
128 	mulld	29,10,23
129 	addze	28,0
130 	mulhdu	30,10,23
131 	addc	25,25,12
132 	mulld	31,11,24
133 	addze	26,26
134 	mulhdu	0,11,24
135 	addc	27,27,25
136 	addi	21,21,8
137 	addze	28,28
138 	std	27,0(22)
139 	addi	22,22,8
140 	bc	16,0,Linner
141 
142 	ld	12,8(22)
143 	addc	25,29,26
144 	addze	26,30
145 	addc	25,25,12
146 	addze	26,26
147 
148 	addc	27,31,28
149 	addze	28,0
150 	addc	27,27,25
151 	addze	28,28
152 	std	27,0(22)
153 
154 	addic	3,3,-1
155 	li	3,0
156 	adde	28,28,26
157 	addze	3,3
158 	std	28,8(22)
159 
160 	slwi	12,8,3
161 	cmpld	20,12
162 	addi	20,20,8
163 	ble	Louter
164 
165 	addi	8,8,2
166 	subfc	21,21,21
167 	addi	22,1,64
168 	mtctr	8
169 
170 .align	4
171 Lsub:	ldx	12,22,21
172 	ldx	11,6,21
173 	subfe	10,11,12
174 	stdx	10,9,21
175 	addi	21,21,8
176 	bc	16,0,Lsub
177 
178 	li	21,0
179 	mtctr	8
180 	subfe	3,21,3
181 
182 .align	4
183 Lcopy:
184 	ldx	12,22,21
185 	ldx	10,9,21
186 	and	12,12,3
187 	andc	10,10,3
188 	stdx	21,22,21
189 	or	10,10,12
190 	stdx	10,9,21
191 	addi	21,21,8
192 	bc	16,0,Lcopy
193 
194 	ld	12,0(1)
195 	li	3,1
196 	ld	20,-96(12)
197 	ld	21,-88(12)
198 	ld	22,-80(12)
199 	ld	23,-72(12)
200 	ld	24,-64(12)
201 	ld	25,-56(12)
202 	ld	26,-48(12)
203 	ld	27,-40(12)
204 	ld	28,-32(12)
205 	ld	29,-24(12)
206 	ld	30,-16(12)
207 	ld	31,-8(12)
208 	mr	1,12
209 	blr
210 .long	0
211 .byte	0,12,4,0,0x80,12,6,0
212 .long	0
213 
214 .globl	.bn_mul4x_mont_int
215 .align	5
216 .bn_mul4x_mont_int:
217 	andi.	0,8,7
218 	bne	Lmul4x_do
219 	cmpld	4,5
220 	bne	Lmul4x_do
221 	b	Lsqr8x_do
222 Lmul4x_do:
223 	slwi	8,8,3
224 	mr	9,1
225 	li	10,-32*8
226 	sub	10,10,8
227 	stdux	1,1,10
228 
229 	std	14,-8*18(9)
230 	std	15,-8*17(9)
231 	std	16,-8*16(9)
232 	std	17,-8*15(9)
233 	std	18,-8*14(9)
234 	std	19,-8*13(9)
235 	std	20,-8*12(9)
236 	std	21,-8*11(9)
237 	std	22,-8*10(9)
238 	std	23,-8*9(9)
239 	std	24,-8*8(9)
240 	std	25,-8*7(9)
241 	std	26,-8*6(9)
242 	std	27,-8*5(9)
243 	std	28,-8*4(9)
244 	std	29,-8*3(9)
245 	std	30,-8*2(9)
246 	std	31,-8*1(9)
247 
248 	subi	4,4,8
249 	subi	6,6,8
250 	subi	3,3,8
251 	ld	7,0(7)
252 
253 	add	14,5,8
254 	add	30,4,8
255 	subi	14,14,8*4
256 
257 	ld	27,8*0(5)
258 	li	22,0
259 	ld	9,8*1(4)
260 	li	23,0
261 	ld	10,8*2(4)
262 	li	24,0
263 	ld	11,8*3(4)
264 	li	25,0
265 	ldu	12,8*4(4)
266 	ld	18,8*1(6)
267 	ld	19,8*2(6)
268 	ld	20,8*3(6)
269 	ldu	21,8*4(6)
270 
271 	std	3,8*6(1)
272 	std	14,8*7(1)
273 	li	3,0
274 	addic	29,1,8*7
275 	li	31,0
276 	li	0,0
277 	b	Loop_mul4x_1st_reduction
278 
279 .align	5
280 Loop_mul4x_1st_reduction:
281 	mulld	14,9,27
282 	addze	3,3
283 	mulld	15,10,27
284 	addi	31,31,8
285 	mulld	16,11,27
286 	andi.	31,31,8*4-1
287 	mulld	17,12,27
288 	addc	22,22,14
289 	mulhdu	14,9,27
290 	adde	23,23,15
291 	mulhdu	15,10,27
292 	adde	24,24,16
293 	mulld	28,22,7
294 	adde	25,25,17
295 	mulhdu	16,11,27
296 	addze	26,0
297 	mulhdu	17,12,27
298 	ldx	27,5,31
299 	addc	23,23,14
300 
301 	stdu	28,8(29)
302 	adde	24,24,15
303 	mulld	15,19,28
304 	adde	25,25,16
305 	mulld	16,20,28
306 	adde	26,26,17
307 	mulld	17,21,28
308 
309 
310 
311 
312 
313 
314 
315 
316 
317 
318 	addic	22,22,-1
319 	mulhdu	14,18,28
320 	adde	22,23,15
321 	mulhdu	15,19,28
322 	adde	23,24,16
323 	mulhdu	16,20,28
324 	adde	24,25,17
325 	mulhdu	17,21,28
326 	adde	25,26,3
327 	addze	3,0
328 	addc	22,22,14
329 	adde	23,23,15
330 	adde	24,24,16
331 	adde	25,25,17
332 
333 	bne	Loop_mul4x_1st_reduction
334 
335 	cmpld	30,4
336 	beq	Lmul4x4_post_condition
337 
338 	ld	9,8*1(4)
339 	ld	10,8*2(4)
340 	ld	11,8*3(4)
341 	ldu	12,8*4(4)
342 	ld	28,8*8(1)
343 	ld	18,8*1(6)
344 	ld	19,8*2(6)
345 	ld	20,8*3(6)
346 	ldu	21,8*4(6)
347 	b	Loop_mul4x_1st_tail
348 
349 .align	5
350 Loop_mul4x_1st_tail:
351 	mulld	14,9,27
352 	addze	3,3
353 	mulld	15,10,27
354 	addi	31,31,8
355 	mulld	16,11,27
356 	andi.	31,31,8*4-1
357 	mulld	17,12,27
358 	addc	22,22,14
359 	mulhdu	14,9,27
360 	adde	23,23,15
361 	mulhdu	15,10,27
362 	adde	24,24,16
363 	mulhdu	16,11,27
364 	adde	25,25,17
365 	mulhdu	17,12,27
366 	addze	26,0
367 	ldx	27,5,31
368 	addc	23,23,14
369 	mulld	14,18,28
370 	adde	24,24,15
371 	mulld	15,19,28
372 	adde	25,25,16
373 	mulld	16,20,28
374 	adde	26,26,17
375 	mulld	17,21,28
376 	addc	22,22,14
377 	mulhdu	14,18,28
378 	adde	23,23,15
379 	mulhdu	15,19,28
380 	adde	24,24,16
381 	mulhdu	16,20,28
382 	adde	25,25,17
383 	adde	26,26,3
384 	mulhdu	17,21,28
385 	addze	3,0
386 	addi	28,1,8*8
387 	ldx	28,28,31
388 	stdu	22,8(29)
389 	addc	22,23,14
390 	adde	23,24,15
391 	adde	24,25,16
392 	adde	25,26,17
393 
394 	bne	Loop_mul4x_1st_tail
395 
396 	sub	15,30,8
397 	cmpld	30,4
398 	beq	Lmul4x_proceed
399 
400 	ld	9,8*1(4)
401 	ld	10,8*2(4)
402 	ld	11,8*3(4)
403 	ldu	12,8*4(4)
404 	ld	18,8*1(6)
405 	ld	19,8*2(6)
406 	ld	20,8*3(6)
407 	ldu	21,8*4(6)
408 	b	Loop_mul4x_1st_tail
409 
410 .align	5
411 Lmul4x_proceed:
412 	ldu	27,8*4(5)
413 	addze	3,3
414 	ld	9,8*1(15)
415 	ld	10,8*2(15)
416 	ld	11,8*3(15)
417 	ld	12,8*4(15)
418 	addi	4,15,8*4
419 	sub	6,6,8
420 
421 	std	22,8*1(29)
422 	std	23,8*2(29)
423 	std	24,8*3(29)
424 	std	25,8*4(29)
425 	std	3,8*5(29)
426 	ld	22,8*12(1)
427 	ld	23,8*13(1)
428 	ld	24,8*14(1)
429 	ld	25,8*15(1)
430 
431 	ld	18,8*1(6)
432 	ld	19,8*2(6)
433 	ld	20,8*3(6)
434 	ldu	21,8*4(6)
435 	addic	29,1,8*7
436 	li	3,0
437 	b	Loop_mul4x_reduction
438 
439 .align	5
440 Loop_mul4x_reduction:
441 	mulld	14,9,27
442 	addze	3,3
443 	mulld	15,10,27
444 	addi	31,31,8
445 	mulld	16,11,27
446 	andi.	31,31,8*4-1
447 	mulld	17,12,27
448 	addc	22,22,14
449 	mulhdu	14,9,27
450 	adde	23,23,15
451 	mulhdu	15,10,27
452 	adde	24,24,16
453 	mulld	28,22,7
454 	adde	25,25,17
455 	mulhdu	16,11,27
456 	addze	26,0
457 	mulhdu	17,12,27
458 	ldx	27,5,31
459 	addc	23,23,14
460 
461 	stdu	28,8(29)
462 	adde	24,24,15
463 	mulld	15,19,28
464 	adde	25,25,16
465 	mulld	16,20,28
466 	adde	26,26,17
467 	mulld	17,21,28
468 
469 	addic	22,22,-1
470 	mulhdu	14,18,28
471 	adde	22,23,15
472 	mulhdu	15,19,28
473 	adde	23,24,16
474 	mulhdu	16,20,28
475 	adde	24,25,17
476 	mulhdu	17,21,28
477 	adde	25,26,3
478 	addze	3,0
479 	addc	22,22,14
480 	adde	23,23,15
481 	adde	24,24,16
482 	adde	25,25,17
483 
484 	bne	Loop_mul4x_reduction
485 
486 	ld	14,8*5(29)
487 	addze	3,3
488 	ld	15,8*6(29)
489 	ld	16,8*7(29)
490 	ld	17,8*8(29)
491 	ld	9,8*1(4)
492 	ld	10,8*2(4)
493 	ld	11,8*3(4)
494 	ldu	12,8*4(4)
495 	addc	22,22,14
496 	adde	23,23,15
497 	adde	24,24,16
498 	adde	25,25,17
499 
500 
501 	ld	28,8*8(1)
502 	ld	18,8*1(6)
503 	ld	19,8*2(6)
504 	ld	20,8*3(6)
505 	ldu	21,8*4(6)
506 	b	Loop_mul4x_tail
507 
508 .align	5
509 Loop_mul4x_tail:
510 	mulld	14,9,27
511 	addze	3,3
512 	mulld	15,10,27
513 	addi	31,31,8
514 	mulld	16,11,27
515 	andi.	31,31,8*4-1
516 	mulld	17,12,27
517 	addc	22,22,14
518 	mulhdu	14,9,27
519 	adde	23,23,15
520 	mulhdu	15,10,27
521 	adde	24,24,16
522 	mulhdu	16,11,27
523 	adde	25,25,17
524 	mulhdu	17,12,27
525 	addze	26,0
526 	ldx	27,5,31
527 	addc	23,23,14
528 	mulld	14,18,28
529 	adde	24,24,15
530 	mulld	15,19,28
531 	adde	25,25,16
532 	mulld	16,20,28
533 	adde	26,26,17
534 	mulld	17,21,28
535 	addc	22,22,14
536 	mulhdu	14,18,28
537 	adde	23,23,15
538 	mulhdu	15,19,28
539 	adde	24,24,16
540 	mulhdu	16,20,28
541 	adde	25,25,17
542 	mulhdu	17,21,28
543 	adde	26,26,3
544 	addi	28,1,8*8
545 	ldx	28,28,31
546 	addze	3,0
547 	stdu	22,8(29)
548 	addc	22,23,14
549 	adde	23,24,15
550 	adde	24,25,16
551 	adde	25,26,17
552 
553 	bne	Loop_mul4x_tail
554 
555 	ld	14,8*5(29)
556 	sub	15,6,8
557 	addze	3,3
558 	cmpld	30,4
559 	beq	Loop_mul4x_break
560 
561 	ld	15,8*6(29)
562 	ld	16,8*7(29)
563 	ld	17,8*8(29)
564 	ld	9,8*1(4)
565 	ld	10,8*2(4)
566 	ld	11,8*3(4)
567 	ldu	12,8*4(4)
568 	addc	22,22,14
569 	adde	23,23,15
570 	adde	24,24,16
571 	adde	25,25,17
572 
573 
574 	ld	18,8*1(6)
575 	ld	19,8*2(6)
576 	ld	20,8*3(6)
577 	ldu	21,8*4(6)
578 	b	Loop_mul4x_tail
579 
580 .align	5
581 Loop_mul4x_break:
582 	ld	16,8*6(1)
583 	ld	17,8*7(1)
584 	addc	9,22,14
585 	ld	22,8*12(1)
586 	addze	10,23
587 	ld	23,8*13(1)
588 	addze	11,24
589 	ld	24,8*14(1)
590 	addze	12,25
591 	ld	25,8*15(1)
592 	addze	3,3
593 	std	9,8*1(29)
594 	sub	4,30,8
595 	std	10,8*2(29)
596 	std	11,8*3(29)
597 	std	12,8*4(29)
598 	std	3,8*5(29)
599 
600 	ld	18,8*1(15)
601 	ld	19,8*2(15)
602 	ld	20,8*3(15)
603 	ld	21,8*4(15)
604 	addi	6,15,8*4
605 	cmpld	5,17
606 	beq	Lmul4x_post
607 
608 	ldu	27,8*4(5)
609 	ld	9,8*1(4)
610 	ld	10,8*2(4)
611 	ld	11,8*3(4)
612 	ldu	12,8*4(4)
613 	li	3,0
614 	addic	29,1,8*7
615 	b	Loop_mul4x_reduction
616 
617 .align	5
618 Lmul4x_post:
619 
620 
621 
622 
623 	srwi	31,8,5
624 	mr	5,16
625 	subi	31,31,1
626 	mr	30,16
627 	subfc	14,18,22
628 	addi	29,1,8*15
629 	subfe	15,19,23
630 
631 	mtctr	31
632 Lmul4x_sub:
633 	ld	18,8*1(6)
634 	ld	22,8*1(29)
635 	subfe	16,20,24
636 	ld	19,8*2(6)
637 	ld	23,8*2(29)
638 	subfe	17,21,25
639 	ld	20,8*3(6)
640 	ld	24,8*3(29)
641 	ldu	21,8*4(6)
642 	ldu	25,8*4(29)
643 	std	14,8*1(5)
644 	std	15,8*2(5)
645 	subfe	14,18,22
646 	std	16,8*3(5)
647 	stdu	17,8*4(5)
648 	subfe	15,19,23
649 	bc	16,0,Lmul4x_sub
650 
651 	ld	9,8*1(30)
652 	std	14,8*1(5)
653 	ld	14,8*12(1)
654 	subfe	16,20,24
655 	ld	10,8*2(30)
656 	std	15,8*2(5)
657 	ld	15,8*13(1)
658 	subfe	17,21,25
659 	subfe	3,0,3
660 	addi	29,1,8*12
661 	ld	11,8*3(30)
662 	std	16,8*3(5)
663 	ld	16,8*14(1)
664 	ld	12,8*4(30)
665 	std	17,8*4(5)
666 	ld	17,8*15(1)
667 
668 	mtctr	31
669 Lmul4x_cond_copy:
670 	and	14,14,3
671 	andc	9,9,3
672 	std	0,8*0(29)
673 	and	15,15,3
674 	andc	10,10,3
675 	std	0,8*1(29)
676 	and	16,16,3
677 	andc	11,11,3
678 	std	0,8*2(29)
679 	and	17,17,3
680 	andc	12,12,3
681 	std	0,8*3(29)
682 	or	22,14,9
683 	ld	9,8*5(30)
684 	ld	14,8*4(29)
685 	or	23,15,10
686 	ld	10,8*6(30)
687 	ld	15,8*5(29)
688 	or	24,16,11
689 	ld	11,8*7(30)
690 	ld	16,8*6(29)
691 	or	25,17,12
692 	ld	12,8*8(30)
693 	ld	17,8*7(29)
694 	addi	29,29,8*4
695 	std	22,8*1(30)
696 	std	23,8*2(30)
697 	std	24,8*3(30)
698 	stdu	25,8*4(30)
699 	bc	16,0,Lmul4x_cond_copy
700 
701 	ld	5,0(1)
702 	and	14,14,3
703 	andc	9,9,3
704 	std	0,8*0(29)
705 	and	15,15,3
706 	andc	10,10,3
707 	std	0,8*1(29)
708 	and	16,16,3
709 	andc	11,11,3
710 	std	0,8*2(29)
711 	and	17,17,3
712 	andc	12,12,3
713 	std	0,8*3(29)
714 	or	22,14,9
715 	or	23,15,10
716 	std	0,8*4(29)
717 	or	24,16,11
718 	or	25,17,12
719 	std	22,8*1(30)
720 	std	23,8*2(30)
721 	std	24,8*3(30)
722 	std	25,8*4(30)
723 
724 	b	Lmul4x_done
725 
726 .align	4
727 Lmul4x4_post_condition:
728 	ld	4,8*6(1)
729 	ld	5,0(1)
730 	addze	3,3
731 
732 	subfc	9,18,22
733 	subfe	10,19,23
734 	subfe	11,20,24
735 	subfe	12,21,25
736 	subfe	3,0,3
737 
738 	and	18,18,3
739 	and	19,19,3
740 	addc	9,9,18
741 	and	20,20,3
742 	adde	10,10,19
743 	and	21,21,3
744 	adde	11,11,20
745 	adde	12,12,21
746 
747 	std	9,8*1(4)
748 	std	10,8*2(4)
749 	std	11,8*3(4)
750 	std	12,8*4(4)
751 
752 Lmul4x_done:
753 	std	0,8*8(1)
754 	std	0,8*9(1)
755 	std	0,8*10(1)
756 	std	0,8*11(1)
757 	li	3,1
758 	ld	14,-8*18(5)
759 	ld	15,-8*17(5)
760 	ld	16,-8*16(5)
761 	ld	17,-8*15(5)
762 	ld	18,-8*14(5)
763 	ld	19,-8*13(5)
764 	ld	20,-8*12(5)
765 	ld	21,-8*11(5)
766 	ld	22,-8*10(5)
767 	ld	23,-8*9(5)
768 	ld	24,-8*8(5)
769 	ld	25,-8*7(5)
770 	ld	26,-8*6(5)
771 	ld	27,-8*5(5)
772 	ld	28,-8*4(5)
773 	ld	29,-8*3(5)
774 	ld	30,-8*2(5)
775 	ld	31,-8*1(5)
776 	mr	1,5
777 	blr
778 .long	0
779 .byte	0,12,4,0x20,0x80,18,6,0
780 .long	0
781 
782 .align	5
783 __bn_sqr8x_mont:
784 Lsqr8x_do:
785 	mr	9,1
786 	slwi	10,8,4
787 	li	11,-32*8
788 	sub	10,11,10
789 	slwi	8,8,3
790 	stdux	1,1,10
791 
792 	std	14,-8*18(9)
793 	std	15,-8*17(9)
794 	std	16,-8*16(9)
795 	std	17,-8*15(9)
796 	std	18,-8*14(9)
797 	std	19,-8*13(9)
798 	std	20,-8*12(9)
799 	std	21,-8*11(9)
800 	std	22,-8*10(9)
801 	std	23,-8*9(9)
802 	std	24,-8*8(9)
803 	std	25,-8*7(9)
804 	std	26,-8*6(9)
805 	std	27,-8*5(9)
806 	std	28,-8*4(9)
807 	std	29,-8*3(9)
808 	std	30,-8*2(9)
809 	std	31,-8*1(9)
810 
811 	subi	4,4,8
812 	subi	18,6,8
813 	subi	3,3,8
814 	ld	7,0(7)
815 	li	0,0
816 
817 	add	6,4,8
818 	ld	9,8*1(4)
819 
820 	ld	10,8*2(4)
821 	li	23,0
822 	ld	11,8*3(4)
823 	li	24,0
824 	ld	12,8*4(4)
825 	li	25,0
826 	ld	14,8*5(4)
827 	li	26,0
828 	ld	15,8*6(4)
829 	li	27,0
830 	ld	16,8*7(4)
831 	li	28,0
832 	ldu	17,8*8(4)
833 	li	29,0
834 
835 	addi	5,1,8*11
836 	subic.	30,8,8*8
837 	b	Lsqr8x_zero_start
838 
839 .align	5
840 Lsqr8x_zero:
841 	subic.	30,30,8*8
842 	std	0,8*1(5)
843 	std	0,8*2(5)
844 	std	0,8*3(5)
845 	std	0,8*4(5)
846 	std	0,8*5(5)
847 	std	0,8*6(5)
848 	std	0,8*7(5)
849 	std	0,8*8(5)
850 Lsqr8x_zero_start:
851 	std	0,8*9(5)
852 	std	0,8*10(5)
853 	std	0,8*11(5)
854 	std	0,8*12(5)
855 	std	0,8*13(5)
856 	std	0,8*14(5)
857 	std	0,8*15(5)
858 	stdu	0,8*16(5)
859 	bne	Lsqr8x_zero
860 
861 	std	3,8*6(1)
862 	std	18,8*7(1)
863 	std	7,8*8(1)
864 	std	5,8*9(1)
865 	std	0,8*10(1)
866 	addi	5,1,8*11
867 
868 
869 .align	5
870 Lsqr8x_outer_loop:
871 
872 
873 
874 
875 
876 
877 
878 
879 
880 
881 
882 
883 
884 
885 
886 
887 
888 
889 
890 
891 
892 
893 
894 
895 
896 
897 
898 
899 
900 	mulld	18,10,9
901 	mulld	19,11,9
902 	mulld	20,12,9
903 	mulld	21,14,9
904 	addc	23,23,18
905 	mulld	18,15,9
906 	adde	24,24,19
907 	mulld	19,16,9
908 	adde	25,25,20
909 	mulld	20,17,9
910 	adde	26,26,21
911 	mulhdu	21,10,9
912 	adde	27,27,18
913 	mulhdu	18,11,9
914 	adde	28,28,19
915 	mulhdu	19,12,9
916 	adde	29,29,20
917 	mulhdu	20,14,9
918 	std	22,8*1(5)
919 	addze	22,0
920 	std	23,8*2(5)
921 	addc	24,24,21
922 	mulhdu	21,15,9
923 	adde	25,25,18
924 	mulhdu	18,16,9
925 	adde	26,26,19
926 	mulhdu	19,17,9
927 	adde	27,27,20
928 	mulld	20,11,10
929 	adde	28,28,21
930 	mulld	21,12,10
931 	adde	29,29,18
932 	mulld	18,14,10
933 	adde	22,22,19
934 
935 	mulld	19,15,10
936 	addc	25,25,20
937 	mulld	20,16,10
938 	adde	26,26,21
939 	mulld	21,17,10
940 	adde	27,27,18
941 	mulhdu	18,11,10
942 	adde	28,28,19
943 	mulhdu	19,12,10
944 	adde	29,29,20
945 	mulhdu	20,14,10
946 	adde	22,22,21
947 	mulhdu	21,15,10
948 	std	24,8*3(5)
949 	addze	23,0
950 	std	25,8*4(5)
951 	addc	26,26,18
952 	mulhdu	18,16,10
953 	adde	27,27,19
954 	mulhdu	19,17,10
955 	adde	28,28,20
956 	mulld	20,12,11
957 	adde	29,29,21
958 	mulld	21,14,11
959 	adde	22,22,18
960 	mulld	18,15,11
961 	adde	23,23,19
962 
963 	mulld	19,16,11
964 	addc	27,27,20
965 	mulld	20,17,11
966 	adde	28,28,21
967 	mulhdu	21,12,11
968 	adde	29,29,18
969 	mulhdu	18,14,11
970 	adde	22,22,19
971 	mulhdu	19,15,11
972 	adde	23,23,20
973 	mulhdu	20,16,11
974 	std	26,8*5(5)
975 	addze	24,0
976 	std	27,8*6(5)
977 	addc	28,28,21
978 	mulhdu	21,17,11
979 	adde	29,29,18
980 	mulld	18,14,12
981 	adde	22,22,19
982 	mulld	19,15,12
983 	adde	23,23,20
984 	mulld	20,16,12
985 	adde	24,24,21
986 
987 	mulld	21,17,12
988 	addc	29,29,18
989 	mulhdu	18,14,12
990 	adde	22,22,19
991 	mulhdu	19,15,12
992 	adde	23,23,20
993 	mulhdu	20,16,12
994 	adde	24,24,21
995 	mulhdu	21,17,12
996 	std	28,8*7(5)
997 	addze	25,0
998 	stdu	29,8*8(5)
999 	addc	22,22,18
1000 	mulld	18,15,14
1001 	adde	23,23,19
1002 	mulld	19,16,14
1003 	adde	24,24,20
1004 	mulld	20,17,14
1005 	adde	25,25,21
1006 
1007 	mulhdu	21,15,14
1008 	addc	23,23,18
1009 	mulhdu	18,16,14
1010 	adde	24,24,19
1011 	mulhdu	19,17,14
1012 	adde	25,25,20
1013 	mulld	20,16,15
1014 	addze	26,0
1015 	addc	24,24,21
1016 	mulld	21,17,15
1017 	adde	25,25,18
1018 	mulhdu	18,16,15
1019 	adde	26,26,19
1020 
1021 	mulhdu	19,17,15
1022 	addc	25,25,20
1023 	mulld	20,17,16
1024 	adde	26,26,21
1025 	mulhdu	21,17,16
1026 	addze	27,0
1027 	addc	26,26,18
1028 	cmpld	6,4
1029 	adde	27,27,19
1030 
1031 	addc	27,27,20
1032 	sub	18,6,8
1033 	addze	28,0
1034 	add	28,28,21
1035 
1036 	beq	Lsqr8x_outer_break
1037 
1038 	mr	7,9
1039 	ld	9,8*1(5)
1040 	ld	10,8*2(5)
1041 	ld	11,8*3(5)
1042 	ld	12,8*4(5)
1043 	ld	14,8*5(5)
1044 	ld	15,8*6(5)
1045 	ld	16,8*7(5)
1046 	ld	17,8*8(5)
1047 	addc	22,22,9
1048 	ld	9,8*1(4)
1049 	adde	23,23,10
1050 	ld	10,8*2(4)
1051 	adde	24,24,11
1052 	ld	11,8*3(4)
1053 	adde	25,25,12
1054 	ld	12,8*4(4)
1055 	adde	26,26,14
1056 	ld	14,8*5(4)
1057 	adde	27,27,15
1058 	ld	15,8*6(4)
1059 	adde	28,28,16
1060 	ld	16,8*7(4)
1061 	subi	3,4,8*7
1062 	addze	29,17
1063 	ldu	17,8*8(4)
1064 
1065 	li	30,0
1066 	b	Lsqr8x_mul
1067 
1068 
1069 
1070 
1071 
1072 
1073 
1074 
1075 
1076 
1077 
1078 
1079 
1080 
1081 
1082 
1083 
1084 
1085 
1086 
1087 
1088 
1089 
1090 .align	5
1091 Lsqr8x_mul:
1092 	mulld	18,9,7
1093 	addze	31,0
1094 	mulld	19,10,7
1095 	addi	30,30,8
1096 	mulld	20,11,7
1097 	andi.	30,30,8*8-1
1098 	mulld	21,12,7
1099 	addc	22,22,18
1100 	mulld	18,14,7
1101 	adde	23,23,19
1102 	mulld	19,15,7
1103 	adde	24,24,20
1104 	mulld	20,16,7
1105 	adde	25,25,21
1106 	mulld	21,17,7
1107 	adde	26,26,18
1108 	mulhdu	18,9,7
1109 	adde	27,27,19
1110 	mulhdu	19,10,7
1111 	adde	28,28,20
1112 	mulhdu	20,11,7
1113 	adde	29,29,21
1114 	mulhdu	21,12,7
1115 	addze	31,31
1116 	stdu	22,8(5)
1117 	addc	22,23,18
1118 	mulhdu	18,14,7
1119 	adde	23,24,19
1120 	mulhdu	19,15,7
1121 	adde	24,25,20
1122 	mulhdu	20,16,7
1123 	adde	25,26,21
1124 	mulhdu	21,17,7
1125 	ldx	7,3,30
1126 	adde	26,27,18
1127 	adde	27,28,19
1128 	adde	28,29,20
1129 	adde	29,31,21
1130 
1131 	bne	Lsqr8x_mul
1132 
1133 
1134 	cmpld	4,6
1135 	beq	Lsqr8x_break
1136 
1137 	ld	9,8*1(5)
1138 	ld	10,8*2(5)
1139 	ld	11,8*3(5)
1140 	ld	12,8*4(5)
1141 	ld	14,8*5(5)
1142 	ld	15,8*6(5)
1143 	ld	16,8*7(5)
1144 	ld	17,8*8(5)
1145 	addc	22,22,9
1146 	ld	9,8*1(4)
1147 	adde	23,23,10
1148 	ld	10,8*2(4)
1149 	adde	24,24,11
1150 	ld	11,8*3(4)
1151 	adde	25,25,12
1152 	ld	12,8*4(4)
1153 	adde	26,26,14
1154 	ld	14,8*5(4)
1155 	adde	27,27,15
1156 	ld	15,8*6(4)
1157 	adde	28,28,16
1158 	ld	16,8*7(4)
1159 	adde	29,29,17
1160 	ldu	17,8*8(4)
1161 
1162 	b	Lsqr8x_mul
1163 
1164 .align	5
1165 Lsqr8x_break:
1166 	ld	9,8*8(3)
1167 	addi	4,3,8*15
1168 	ld	10,8*9(3)
1169 	sub.	18,6,4
1170 	ld	11,8*10(3)
1171 	sub	19,5,18
1172 	ld	12,8*11(3)
1173 	ld	14,8*12(3)
1174 	ld	15,8*13(3)
1175 	ld	16,8*14(3)
1176 	ld	17,8*15(3)
1177 	beq	Lsqr8x_outer_loop
1178 
1179 	std	22,8*1(5)
1180 	ld	22,8*1(19)
1181 	std	23,8*2(5)
1182 	ld	23,8*2(19)
1183 	std	24,8*3(5)
1184 	ld	24,8*3(19)
1185 	std	25,8*4(5)
1186 	ld	25,8*4(19)
1187 	std	26,8*5(5)
1188 	ld	26,8*5(19)
1189 	std	27,8*6(5)
1190 	ld	27,8*6(19)
1191 	std	28,8*7(5)
1192 	ld	28,8*7(19)
1193 	std	29,8*8(5)
1194 	ld	29,8*8(19)
1195 	mr	5,19
1196 	b	Lsqr8x_outer_loop
1197 
1198 .align	5
1199 Lsqr8x_outer_break:
1200 
1201 
1202 	ld	10,8*1(18)
1203 	ld	12,8*2(18)
1204 	ld	15,8*3(18)
1205 	ld	17,8*4(18)
1206 	addi	4,18,8*4
1207 
1208 	ld	19,8*13(1)
1209 	ld	20,8*14(1)
1210 	ld	21,8*15(1)
1211 	ld	18,8*16(1)
1212 
1213 	std	22,8*1(5)
1214 	srwi	30,8,5
1215 	std	23,8*2(5)
1216 	subi	30,30,1
1217 	std	24,8*3(5)
1218 	std	25,8*4(5)
1219 	std	26,8*5(5)
1220 	std	27,8*6(5)
1221 	std	28,8*7(5)
1222 
1223 	addi	5,1,8*11
1224 	mulld	22,10,10
1225 	mulhdu	10,10,10
1226 	add	23,19,19
1227 	srdi	19,19,64-1
1228 	mulld	11,12,12
1229 	mulhdu	12,12,12
1230 	addc	23,23,10
1231 	add	24,20,20
1232 	srdi	20,20,64-1
1233 	add	25,21,21
1234 	srdi	21,21,64-1
1235 	or	24,24,19
1236 
1237 	mtctr	30
1238 Lsqr4x_shift_n_add:
1239 	mulld	14,15,15
1240 	mulhdu	15,15,15
1241 	ld	19,8*6(5)
1242 	ld	10,8*1(4)
1243 	adde	24,24,11
1244 	add	26,18,18
1245 	srdi	18,18,64-1
1246 	or	25,25,20
1247 	ld	20,8*7(5)
1248 	adde	25,25,12
1249 	ld	12,8*2(4)
1250 	add	27,19,19
1251 	srdi	19,19,64-1
1252 	or	26,26,21
1253 	ld	21,8*8(5)
1254 	mulld	16,17,17
1255 	mulhdu	17,17,17
1256 	adde	26,26,14
1257 	add	28,20,20
1258 	srdi	20,20,64-1
1259 	or	27,27,18
1260 	ld	18,8*9(5)
1261 	adde	27,27,15
1262 	ld	15,8*3(4)
1263 	add	29,21,21
1264 	srdi	21,21,64-1
1265 	or	28,28,19
1266 	ld	19,8*10(5)
1267 	mulld	9,10,10
1268 	mulhdu	10,10,10
1269 	adde	28,28,16
1270 	std	22,8*1(5)
1271 	add	22,18,18
1272 	srdi	18,18,64-1
1273 	or	29,29,20
1274 	ld	20,8*11(5)
1275 	adde	29,29,17
1276 	ldu	17,8*4(4)
1277 	std	23,8*2(5)
1278 	add	23,19,19
1279 	srdi	19,19,64-1
1280 	or	22,22,21
1281 	ld	21,8*12(5)
1282 	mulld	11,12,12
1283 	mulhdu	12,12,12
1284 	adde	22,22,9
1285 	std	24,8*3(5)
1286 	add	24,20,20
1287 	srdi	20,20,64-1
1288 	or	23,23,18
1289 	ld	18,8*13(5)
1290 	adde	23,23,10
1291 	std	25,8*4(5)
1292 	std	26,8*5(5)
1293 	std	27,8*6(5)
1294 	std	28,8*7(5)
1295 	stdu	29,8*8(5)
1296 	add	25,21,21
1297 	srdi	21,21,64-1
1298 	or	24,24,19
1299 	bc	16,0,Lsqr4x_shift_n_add
1300 	ld	4,8*7(1)
1301 	ld	7,8*8(1)
1302 
1303 	mulld	14,15,15
1304 	mulhdu	15,15,15
1305 	std	22,8*1(5)
1306 	ld	22,8*12(1)
1307 	ld	19,8*6(5)
1308 	adde	24,24,11
1309 	add	26,18,18
1310 	srdi	18,18,64-1
1311 	or	25,25,20
1312 	ld	20,8*7(5)
1313 	adde	25,25,12
1314 	add	27,19,19
1315 	srdi	19,19,64-1
1316 	or	26,26,21
1317 	mulld	16,17,17
1318 	mulhdu	17,17,17
1319 	adde	26,26,14
1320 	add	28,20,20
1321 	srdi	20,20,64-1
1322 	or	27,27,18
1323 	std	23,8*2(5)
1324 	ld	23,8*13(1)
1325 	adde	27,27,15
1326 	or	28,28,19
1327 	ld	9,8*1(4)
1328 	ld	10,8*2(4)
1329 	adde	28,28,16
1330 	ld	11,8*3(4)
1331 	ld	12,8*4(4)
1332 	adde	29,17,20
1333 	ld	14,8*5(4)
1334 	ld	15,8*6(4)
1335 
1336 
1337 
1338 	mulld	31,7,22
1339 	li	30,8
1340 	ld	16,8*7(4)
1341 	add	6,4,8
1342 	ldu	17,8*8(4)
1343 	std	24,8*3(5)
1344 	ld	24,8*14(1)
1345 	std	25,8*4(5)
1346 	ld	25,8*15(1)
1347 	std	26,8*5(5)
1348 	ld	26,8*16(1)
1349 	std	27,8*6(5)
1350 	ld	27,8*17(1)
1351 	std	28,8*7(5)
1352 	ld	28,8*18(1)
1353 	std	29,8*8(5)
1354 	ld	29,8*19(1)
1355 	addi	5,1,8*11
1356 	mtctr	30
1357 	b	Lsqr8x_reduction
1358 
1359 .align	5
1360 Lsqr8x_reduction:
1361 
1362 	mulld	19,10,31
1363 	mulld	20,11,31
1364 	stdu	31,8(5)
1365 	mulld	21,12,31
1366 
1367 	addic	22,22,-1
1368 	mulld	18,14,31
1369 	adde	22,23,19
1370 	mulld	19,15,31
1371 	adde	23,24,20
1372 	mulld	20,16,31
1373 	adde	24,25,21
1374 	mulld	21,17,31
1375 	adde	25,26,18
1376 	mulhdu	18,9,31
1377 	adde	26,27,19
1378 	mulhdu	19,10,31
1379 	adde	27,28,20
1380 	mulhdu	20,11,31
1381 	adde	28,29,21
1382 	mulhdu	21,12,31
1383 	addze	29,0
1384 	addc	22,22,18
1385 	mulhdu	18,14,31
1386 	adde	23,23,19
1387 	mulhdu	19,15,31
1388 	adde	24,24,20
1389 	mulhdu	20,16,31
1390 	adde	25,25,21
1391 	mulhdu	21,17,31
1392 	mulld	31,7,22
1393 	adde	26,26,18
1394 	adde	27,27,19
1395 	adde	28,28,20
1396 	adde	29,29,21
1397 	bc	16,0,Lsqr8x_reduction
1398 
1399 	ld	18,8*1(5)
1400 	ld	19,8*2(5)
1401 	ld	20,8*3(5)
1402 	ld	21,8*4(5)
1403 	subi	3,5,8*7
1404 	cmpld	6,4
1405 	addc	22,22,18
1406 	ld	18,8*5(5)
1407 	adde	23,23,19
1408 	ld	19,8*6(5)
1409 	adde	24,24,20
1410 	ld	20,8*7(5)
1411 	adde	25,25,21
1412 	ld	21,8*8(5)
1413 	adde	26,26,18
1414 	adde	27,27,19
1415 	adde	28,28,20
1416 	adde	29,29,21
1417 
1418 	beq	Lsqr8x8_post_condition
1419 
1420 	ld	7,8*0(3)
1421 	ld	9,8*1(4)
1422 	ld	10,8*2(4)
1423 	ld	11,8*3(4)
1424 	ld	12,8*4(4)
1425 	ld	14,8*5(4)
1426 	ld	15,8*6(4)
1427 	ld	16,8*7(4)
1428 	ldu	17,8*8(4)
1429 	li	30,0
1430 
1431 .align	5
1432 Lsqr8x_tail:
1433 	mulld	18,9,7
1434 	addze	31,0
1435 	mulld	19,10,7
1436 	addi	30,30,8
1437 	mulld	20,11,7
1438 	andi.	30,30,8*8-1
1439 	mulld	21,12,7
1440 	addc	22,22,18
1441 	mulld	18,14,7
1442 	adde	23,23,19
1443 	mulld	19,15,7
1444 	adde	24,24,20
1445 	mulld	20,16,7
1446 	adde	25,25,21
1447 	mulld	21,17,7
1448 	adde	26,26,18
1449 	mulhdu	18,9,7
1450 	adde	27,27,19
1451 	mulhdu	19,10,7
1452 	adde	28,28,20
1453 	mulhdu	20,11,7
1454 	adde	29,29,21
1455 	mulhdu	21,12,7
1456 	addze	31,31
1457 	stdu	22,8(5)
1458 	addc	22,23,18
1459 	mulhdu	18,14,7
1460 	adde	23,24,19
1461 	mulhdu	19,15,7
1462 	adde	24,25,20
1463 	mulhdu	20,16,7
1464 	adde	25,26,21
1465 	mulhdu	21,17,7
1466 	ldx	7,3,30
1467 	adde	26,27,18
1468 	adde	27,28,19
1469 	adde	28,29,20
1470 	adde	29,31,21
1471 
1472 	bne	Lsqr8x_tail
1473 
1474 
1475 	ld	9,8*1(5)
1476 	ld	31,8*10(1)
1477 	cmpld	6,4
1478 	ld	10,8*2(5)
1479 	sub	20,6,8
1480 	ld	11,8*3(5)
1481 	ld	12,8*4(5)
1482 	ld	14,8*5(5)
1483 	ld	15,8*6(5)
1484 	ld	16,8*7(5)
1485 	ld	17,8*8(5)
1486 	beq	Lsqr8x_tail_break
1487 
1488 	addc	22,22,9
1489 	ld	9,8*1(4)
1490 	adde	23,23,10
1491 	ld	10,8*2(4)
1492 	adde	24,24,11
1493 	ld	11,8*3(4)
1494 	adde	25,25,12
1495 	ld	12,8*4(4)
1496 	adde	26,26,14
1497 	ld	14,8*5(4)
1498 	adde	27,27,15
1499 	ld	15,8*6(4)
1500 	adde	28,28,16
1501 	ld	16,8*7(4)
1502 	adde	29,29,17
1503 	ldu	17,8*8(4)
1504 
1505 	b	Lsqr8x_tail
1506 
1507 .align	5
1508 Lsqr8x_tail_break:
1509 	ld	7,8*8(1)
1510 	ld	21,8*9(1)
1511 	addi	30,5,8*8
1512 
1513 	addic	31,31,-1
1514 	adde	18,22,9
1515 	ld	22,8*8(3)
1516 	ld	9,8*1(20)
1517 	adde	19,23,10
1518 	ld	23,8*9(3)
1519 	ld	10,8*2(20)
1520 	adde	24,24,11
1521 	ld	11,8*3(20)
1522 	adde	25,25,12
1523 	ld	12,8*4(20)
1524 	adde	26,26,14
1525 	ld	14,8*5(20)
1526 	adde	27,27,15
1527 	ld	15,8*6(20)
1528 	adde	28,28,16
1529 	ld	16,8*7(20)
1530 	adde	29,29,17
1531 	ld	17,8*8(20)
1532 	addi	4,20,8*8
1533 	addze	20,0
1534 	mulld	31,7,22
1535 	std	18,8*1(5)
1536 	cmpld	30,21
1537 	std	19,8*2(5)
1538 	li	30,8
1539 	std	24,8*3(5)
1540 	ld	24,8*10(3)
1541 	std	25,8*4(5)
1542 	ld	25,8*11(3)
1543 	std	26,8*5(5)
1544 	ld	26,8*12(3)
1545 	std	27,8*6(5)
1546 	ld	27,8*13(3)
1547 	std	28,8*7(5)
1548 	ld	28,8*14(3)
1549 	std	29,8*8(5)
1550 	ld	29,8*15(3)
1551 	std	20,8*10(1)
1552 	addi	5,3,8*7
1553 	mtctr	30
1554 	bne	Lsqr8x_reduction
1555 
1556 
1557 
1558 
1559 
1560 
1561 	ld	3,8*6(1)
1562 	srwi	30,8,6
1563 	mr	7,5
1564 	addi	5,5,8*8
1565 	subi	30,30,1
1566 	subfc	18,9,22
1567 	subfe	19,10,23
1568 	mr	31,20
1569 	mr	6,3
1570 
1571 	mtctr	30
1572 	b	Lsqr8x_sub
1573 
1574 .align	5
1575 Lsqr8x_sub:
1576 	ld	9,8*1(4)
1577 	ld	22,8*1(5)
1578 	ld	10,8*2(4)
1579 	ld	23,8*2(5)
1580 	subfe	20,11,24
1581 	ld	11,8*3(4)
1582 	ld	24,8*3(5)
1583 	subfe	21,12,25
1584 	ld	12,8*4(4)
1585 	ld	25,8*4(5)
1586 	std	18,8*1(3)
1587 	subfe	18,14,26
1588 	ld	14,8*5(4)
1589 	ld	26,8*5(5)
1590 	std	19,8*2(3)
1591 	subfe	19,15,27
1592 	ld	15,8*6(4)
1593 	ld	27,8*6(5)
1594 	std	20,8*3(3)
1595 	subfe	20,16,28
1596 	ld	16,8*7(4)
1597 	ld	28,8*7(5)
1598 	std	21,8*4(3)
1599 	subfe	21,17,29
1600 	ldu	17,8*8(4)
1601 	ldu	29,8*8(5)
1602 	std	18,8*5(3)
1603 	subfe	18,9,22
1604 	std	19,8*6(3)
1605 	subfe	19,10,23
1606 	std	20,8*7(3)
1607 	stdu	21,8*8(3)
1608 	bc	16,0,Lsqr8x_sub
1609 
1610 	srwi	30,8,5
1611 	ld	9,8*1(6)
1612 	ld	22,8*1(7)
1613 	subi	30,30,1
1614 	ld	10,8*2(6)
1615 	ld	23,8*2(7)
1616 	subfe	20,11,24
1617 	ld	11,8*3(6)
1618 	ld	24,8*3(7)
1619 	subfe	21,12,25
1620 	ld	12,8*4(6)
1621 	ldu	25,8*4(7)
1622 	std	18,8*1(3)
1623 	subfe	18,14,26
1624 	std	19,8*2(3)
1625 	subfe	19,15,27
1626 	std	20,8*3(3)
1627 	subfe	20,16,28
1628 	std	21,8*4(3)
1629 	subfe	21,17,29
1630 	std	18,8*5(3)
1631 	subfe	31,0,31
1632 	std	19,8*6(3)
1633 	std	20,8*7(3)
1634 	std	21,8*8(3)
1635 
1636 	addi	5,1,8*11
1637 	mtctr	30
1638 
1639 Lsqr4x_cond_copy:
1640 	andc	9,9,31
1641 	std	0,-8*3(7)
1642 	and	22,22,31
1643 	std	0,-8*2(7)
1644 	andc	10,10,31
1645 	std	0,-8*1(7)
1646 	and	23,23,31
1647 	std	0,-8*0(7)
1648 	andc	11,11,31
1649 	std	0,8*1(5)
1650 	and	24,24,31
1651 	std	0,8*2(5)
1652 	andc	12,12,31
1653 	std	0,8*3(5)
1654 	and	25,25,31
1655 	stdu	0,8*4(5)
1656 	or	18,9,22
1657 	ld	9,8*5(6)
1658 	ld	22,8*1(7)
1659 	or	19,10,23
1660 	ld	10,8*6(6)
1661 	ld	23,8*2(7)
1662 	or	20,11,24
1663 	ld	11,8*7(6)
1664 	ld	24,8*3(7)
1665 	or	21,12,25
1666 	ld	12,8*8(6)
1667 	ldu	25,8*4(7)
1668 	std	18,8*1(6)
1669 	std	19,8*2(6)
1670 	std	20,8*3(6)
1671 	stdu	21,8*4(6)
1672 	bc	16,0,Lsqr4x_cond_copy
1673 
1674 	ld	4,0(1)
1675 	andc	9,9,31
1676 	and	22,22,31
1677 	andc	10,10,31
1678 	and	23,23,31
1679 	andc	11,11,31
1680 	and	24,24,31
1681 	andc	12,12,31
1682 	and	25,25,31
1683 	or	18,9,22
1684 	or	19,10,23
1685 	or	20,11,24
1686 	or	21,12,25
1687 	std	18,8*1(6)
1688 	std	19,8*2(6)
1689 	std	20,8*3(6)
1690 	std	21,8*4(6)
1691 
1692 	b	Lsqr8x_done
1693 
1694 .align	5
1695 Lsqr8x8_post_condition:
1696 	ld	3,8*6(1)
1697 	ld	4,0(1)
1698 	addze	31,0
1699 
1700 
1701 	subfc	22,9,22
1702 	subfe	23,10,23
1703 	std	0,8*12(1)
1704 	std	0,8*13(1)
1705 	subfe	24,11,24
1706 	std	0,8*14(1)
1707 	std	0,8*15(1)
1708 	subfe	25,12,25
1709 	std	0,8*16(1)
1710 	std	0,8*17(1)
1711 	subfe	26,14,26
1712 	std	0,8*18(1)
1713 	std	0,8*19(1)
1714 	subfe	27,15,27
1715 	std	0,8*20(1)
1716 	std	0,8*21(1)
1717 	subfe	28,16,28
1718 	std	0,8*22(1)
1719 	std	0,8*23(1)
1720 	subfe	29,17,29
1721 	std	0,8*24(1)
1722 	std	0,8*25(1)
1723 	subfe	31,0,31
1724 	std	0,8*26(1)
1725 	std	0,8*27(1)
1726 
1727 	and	9,9,31
1728 	and	10,10,31
1729 	addc	22,22,9
1730 	and	11,11,31
1731 	adde	23,23,10
1732 	and	12,12,31
1733 	adde	24,24,11
1734 	and	14,14,31
1735 	adde	25,25,12
1736 	and	15,15,31
1737 	adde	26,26,14
1738 	and	16,16,31
1739 	adde	27,27,15
1740 	and	17,17,31
1741 	adde	28,28,16
1742 	adde	29,29,17
1743 	std	22,8*1(3)
1744 	std	23,8*2(3)
1745 	std	24,8*3(3)
1746 	std	25,8*4(3)
1747 	std	26,8*5(3)
1748 	std	27,8*6(3)
1749 	std	28,8*7(3)
1750 	std	29,8*8(3)
1751 
1752 Lsqr8x_done:
1753 	std	0,8*8(1)
1754 	std	0,8*10(1)
1755 
1756 	ld	14,-8*18(4)
1757 	li	3,1
1758 	ld	15,-8*17(4)
1759 	ld	16,-8*16(4)
1760 	ld	17,-8*15(4)
1761 	ld	18,-8*14(4)
1762 	ld	19,-8*13(4)
1763 	ld	20,-8*12(4)
1764 	ld	21,-8*11(4)
1765 	ld	22,-8*10(4)
1766 	ld	23,-8*9(4)
1767 	ld	24,-8*8(4)
1768 	ld	25,-8*7(4)
1769 	ld	26,-8*6(4)
1770 	ld	27,-8*5(4)
1771 	ld	28,-8*4(4)
1772 	ld	29,-8*3(4)
1773 	ld	30,-8*2(4)
1774 	ld	31,-8*1(4)
1775 	mr	1,4
1776 	blr
1777 .long	0
1778 .byte	0,12,4,0x20,0x80,18,6,0
1779 .long	0
1780 
1781 .byte	77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,80,80,67,44,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
1782 .align	2
1783