xref: /freebsd/sys/crypto/openssl/powerpc/poly1305-ppc.S (revision 2a63c3be158216222d89a073dcbd6a72ee4aab5a)
1/* Do not modify. This file is auto-generated from poly1305-ppc.pl. */
2.machine	"any"
3.text
4.globl	poly1305_init_int
5.type	poly1305_init_int,@function
6.align	4
7poly1305_init_int:
8	xor	0,0,0
9	stw	0,0(3)
10	stw	0,4(3)
11	stw	0,8(3)
12	stw	0,12(3)
13	stw	0,16(3)
14
15	.long	0x7c040040
16	beq-	.Lno_key
17	li	8,4
18	lwbrx	7,0,4
19	li	9,8
20	lwbrx	8,8,4
21	li	10,12
22	lwbrx	9,9,4
23	lwbrx	10,10,4
24	lis	0,0xf000
25	li	12,-4
26	andc	12,12,0
27
28	andc	7,7,0
29	and	8,8,12
30	and	9,9,12
31	and	10,10,12
32
33	stw	7,32(3)
34	stw	8,36(3)
35	stw	9,40(3)
36	stw	10,44(3)
37
38.Lno_key:
39	xor	3,3,3
40	blr
41.long	0
42.byte	0,12,0x14,0,0,0,2,0
43.size	poly1305_init_int,.-poly1305_init_int
44
45.globl	poly1305_blocks
46.type	poly1305_blocks,@function
47.align	4
48poly1305_blocks:
49	srwi.	5,5,4
50	beq-	.Labort
51
52	stwu	1,-96(1)
53	mflr	0
54	stw	14,24(1)
55	stw	15,28(1)
56	stw	16,32(1)
57	stw	17,36(1)
58	stw	18,40(1)
59	stw	19,44(1)
60	stw	20,48(1)
61	stw	21,52(1)
62	stw	22,56(1)
63	stw	23,60(1)
64	stw	24,64(1)
65	stw	25,68(1)
66	stw	26,72(1)
67	stw	27,76(1)
68	stw	28,80(1)
69	stw	29,84(1)
70	stw	30,88(1)
71	stw	31,92(1)
72	stw	0,100(1)
73
74	lwz	12,32(3)
75	lwz	14,36(3)
76	lwz	15,40(3)
77	lwz	16,44(3)
78
79	lwz	7,0(3)
80	lwz	8,4(3)
81	lwz	9,8(3)
82	lwz	10,12(3)
83	lwz	11,16(3)
84
85	srwi	17,14,2
86	srwi	18,15,2
87	srwi	19,16,2
88	add	17,17,14
89	add	18,18,15
90	add	19,19,16
91	mtctr	5
92	li	0,3
93	b	.Loop
94
95.align	4
96.Loop:
97	li	29,4
98	lwbrx	28,0,4
99	li	30,8
100	lwbrx	29,29,4
101	li	31,12
102	lwbrx	30,30,4
103	lwbrx	31,31,4
104	addi	4,4,16
105
106	addc	7,7,28
107	adde	8,8,29
108	adde	9,9,30
109
110	mullw	28,7,12
111	mulhwu	24,7,12
112
113	mullw	29,7,14
114	mulhwu	25,7,14
115
116	mullw	30,7,15
117	mulhwu	26,7,15
118
119	adde	10,10,31
120	adde	11,11,6
121
122	mullw	31,7,16
123	mulhwu	27,7,16
124
125	mullw	20,8,19
126	mulhwu	21,8,19
127
128	mullw	22,8,12
129	mulhwu	23,8,12
130	addc	28,28,20
131	adde	24,24,21
132
133	mullw	20,8,14
134	mulhwu	21,8,14
135	addc	29,29,22
136	adde	25,25,23
137
138	mullw	22,8,15
139	mulhwu	23,8,15
140	addc	30,30,20
141	adde	26,26,21
142
143	mullw	20,9,18
144	mulhwu	21,9,18
145	addc	31,31,22
146	adde	27,27,23
147
148	mullw	22,9,19
149	mulhwu	23,9,19
150	addc	28,28,20
151	adde	24,24,21
152
153	mullw	20,9,12
154	mulhwu	21,9,12
155	addc	29,29,22
156	adde	25,25,23
157
158	mullw	22,9,14
159	mulhwu	23,9,14
160	addc	30,30,20
161	adde	26,26,21
162
163	mullw	20,10,17
164	mulhwu	21,10,17
165	addc	31,31,22
166	adde	27,27,23
167
168	mullw	22,10,18
169	mulhwu	23,10,18
170	addc	28,28,20
171	adde	24,24,21
172
173	mullw	20,10,19
174	mulhwu	21,10,19
175	addc	29,29,22
176	adde	25,25,23
177
178	mullw	22,10,12
179	mulhwu	23,10,12
180	addc	30,30,20
181	adde	26,26,21
182
183	mullw	20,11,17
184	addc	31,31,22
185	adde	27,27,23
186	addc	29,29,20
187
188	mullw	21,11,18
189	addze	25,25
190	addc	30,30,21
191	addze	26,26
192
193	mullw	22,11,19
194	addc	31,31,22
195	addze	27,27
196
197	mullw	11,11,12
198
199	addc	8,29,24
200	adde	9,30,25
201	adde	10,31,26
202	adde	11,11,27
203
204	andc	24,11,0
205	and	11,11,0
206	srwi	25,24,2
207	add	24,24,25
208	addc	7,28,24
209	addze	8,8
210	addze	9,9
211	addze	10,10
212	addze	11,11
213
214	bdnz	.Loop
215
216	stw	7,0(3)
217	stw	8,4(3)
218	stw	9,8(3)
219	stw	10,12(3)
220	stw	11,16(3)
221
222	lwz	14,24(1)
223	lwz	15,28(1)
224	lwz	16,32(1)
225	lwz	17,36(1)
226	lwz	18,40(1)
227	lwz	19,44(1)
228	lwz	20,48(1)
229	lwz	21,52(1)
230	lwz	22,56(1)
231	lwz	23,60(1)
232	lwz	24,64(1)
233	lwz	25,68(1)
234	lwz	26,72(1)
235	lwz	27,76(1)
236	lwz	28,80(1)
237	lwz	29,84(1)
238	lwz	30,88(1)
239	lwz	31,92(1)
240	addi	1,1,96
241.Labort:
242	blr
243.long	0
244.byte	0,12,4,1,0x80,18,4,0
245.size	poly1305_blocks,.-poly1305_blocks
246
247.globl	poly1305_emit
248.type	poly1305_emit,@function
249.align	4
250poly1305_emit:
251	stwu	1,-96(1)
252	mflr	0
253	stw	28,80(1)
254	stw	29,84(1)
255	stw	30,88(1)
256	stw	31,92(1)
257	stw	0,100(1)
258
259	lwz	7,0(3)
260	lwz	8,4(3)
261	lwz	9,8(3)
262	lwz	10,12(3)
263	lwz	11,16(3)
264
265	addic	28,7,5
266	addze	29,8
267	addze	30,9
268	addze	31,10
269	addze	0,11
270
271	srwi	0,0,2
272	neg	0,0
273
274	andc	7,7,0
275	and	28,28,0
276	andc	8,8,0
277	and	29,29,0
278	or	7,7,28
279	lwz	28,0(5)
280	andc	9,9,0
281	and	30,30,0
282	or	8,8,29
283	lwz	29,4(5)
284	andc	10,10,0
285	and	31,31,0
286	or	9,9,30
287	lwz	30,8(5)
288	or	10,10,31
289	lwz	31,12(5)
290
291	addc	7,7,28
292	adde	8,8,29
293	adde	9,9,30
294	adde	10,10,31
295	li	29,4
296	stwbrx	7,0,4
297	li	30,8
298	stwbrx	8,29,4
299	li	31,12
300	stwbrx	9,30,4
301	stwbrx	10,31,4
302	lwz	28,80(1)
303	lwz	29,84(1)
304	lwz	30,88(1)
305	lwz	31,92(1)
306	addi	1,1,96
307	blr
308.long	0
309.byte	0,12,4,1,0x80,4,3,0
310.size	poly1305_emit,.-poly1305_emit
311.byte	80,111,108,121,49,51,48,53,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
312.align	2
313