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