ppc-mont.S revision 1.1
1.machine	"any"
2.text
3
4.globl	bn_mul_mont_int
5.type	bn_mul_mont_int,@function
6.section	".opd","aw"
7.align	3
8bn_mul_mont_int:
9.quad	.bn_mul_mont_int,.TOC.@tocbase,0
10.previous
11
12.align	4
13.bn_mul_mont_int:
14	cmpwi	8,4
15	mr	9,3
16	li	3,0
17	bltlr
18	slwi	8,8,3
19	li	12,-4096
20	addi	3,8,352
21	subf	3,3,1
22	and	3,3,12
23	subf	3,1,3
24	mr	12,1
25	srwi	8,8,3
26	stdux	1,1,3
27
28	std	20,-96(12)
29	std	21,-88(12)
30	std	22,-80(12)
31	std	23,-72(12)
32	std	24,-64(12)
33	std	25,-56(12)
34	std	26,-48(12)
35	std	27,-40(12)
36	std	28,-32(12)
37	std	29,-24(12)
38	std	30,-16(12)
39	std	31,-8(12)
40
41	ld	7,0(7)
42	addi	8,8,-2
43
44	ld	23,0(5)
45	ld	10,0(4)
46	addi	22,1,64
47	mulld	25,10,23
48	mulhdu	26,10,23
49
50	ld	10,8(4)
51	ld	11,0(6)
52
53	mulld	24,25,7
54
55	mulld	29,10,23
56	mulhdu	30,10,23
57
58	mulld	27,11,24
59	mulhdu	28,11,24
60	ld	11,8(6)
61	addc	27,27,25
62	addze	28,28
63
64	mulld	31,11,24
65	mulhdu	0,11,24
66
67	mtctr	8
68	li	21,16
69.align	4
70.L1st:
71	ldx	10,4,21
72	addc	25,29,26
73	ldx	11,6,21
74	addze	26,30
75	mulld	29,10,23
76	addc	27,31,28
77	mulhdu	30,10,23
78	addze	28,0
79	mulld	31,11,24
80	addc	27,27,25
81	mulhdu	0,11,24
82	addze	28,28
83	std	27,0(22)
84
85	addi	21,21,8
86	addi	22,22,8
87	bc	16,0,.L1st
88
89	addc	25,29,26
90	addze	26,30
91
92	addc	27,31,28
93	addze	28,0
94	addc	27,27,25
95	addze	28,28
96	std	27,0(22)
97
98	li	3,0
99	addc	28,28,26
100	addze	3,3
101	std	28,8(22)
102
103	li	20,8
104.align	4
105.Louter:
106	ldx	23,5,20
107	ld	10,0(4)
108	addi	22,1,64
109	ld	12,64(1)
110	mulld	25,10,23
111	mulhdu	26,10,23
112	ld	10,8(4)
113	ld	11,0(6)
114	addc	25,25,12
115	mulld	29,10,23
116	addze	26,26
117	mulld	24,25,7
118	mulhdu	30,10,23
119	mulld	27,11,24
120	mulhdu	28,11,24
121	ld	11,8(6)
122	addc	27,27,25
123	mulld	31,11,24
124	addze	28,28
125	mulhdu	0,11,24
126
127	mtctr	8
128	li	21,16
129.align	4
130.Linner:
131	ldx	10,4,21
132	addc	25,29,26
133	ld	12,8(22)
134	addze	26,30
135	ldx	11,6,21
136	addc	27,31,28
137	mulld	29,10,23
138	addze	28,0
139	mulhdu	30,10,23
140	addc	25,25,12
141	mulld	31,11,24
142	addze	26,26
143	mulhdu	0,11,24
144	addc	27,27,25
145	addi	21,21,8
146	addze	28,28
147	std	27,0(22)
148	addi	22,22,8
149	bc	16,0,.Linner
150
151	ld	12,8(22)
152	addc	25,29,26
153	addze	26,30
154	addc	25,25,12
155	addze	26,26
156
157	addc	27,31,28
158	addze	28,0
159	addc	27,27,25
160	addze	28,28
161	std	27,0(22)
162
163	addic	3,3,-1
164	li	3,0
165	adde	28,28,26
166	addze	3,3
167	std	28,8(22)
168
169	slwi	12,8,3
170	cmpld	20,12
171	addi	20,20,8
172	ble	.Louter
173
174	addi	8,8,2
175	subfc	21,21,21
176	addi	22,1,64
177	mtctr	8
178
179.align	4
180.Lsub:	ldx	12,22,21
181	ldx	11,6,21
182	subfe	10,11,12
183	stdx	10,9,21
184	addi	21,21,8
185	bc	16,0,.Lsub
186
187	li	21,0
188	mtctr	8
189	subfe	3,21,3
190	and	4,22,3
191	andc	6,9,3
192	or	4,4,6
193
194.align	4
195.Lcopy:
196	ldx	12,4,21
197	stdx	12,9,21
198	stdx	21,22,21
199	addi	21,21,8
200	bc	16,0,.Lcopy
201
202	ld	12,0(1)
203	li	3,1
204	ld	20,-96(12)
205	ld	21,-88(12)
206	ld	22,-80(12)
207	ld	23,-72(12)
208	ld	24,-64(12)
209	ld	25,-56(12)
210	ld	26,-48(12)
211	ld	27,-40(12)
212	ld	28,-32(12)
213	ld	29,-24(12)
214	ld	30,-16(12)
215	ld	31,-8(12)
216	mr	1,12
217	blr
218.long	0
219.byte	0,12,4,0,0x80,12,6,0
220.long	0
221
222
223.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,32,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
224.align	2
225