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