1/* $FreeBSD$ */
2/* Do not modify. This file is auto-generated from ghashp8-ppc.pl. */
3.machine	"any"
4
5.text
6
7.globl	gcm_init_p8
8.type	gcm_init_p8,@function
9.align	5
10gcm_init_p8:
11	li	0,-4096
12	li	8,0x10
13	mfspr	12,256
14	li	9,0x20
15	mtspr	256,0
16	li	10,0x30
17	.long	0x7D202699
18
19	vspltisb	8,-16
20	vspltisb	5,1
21	vaddubm	8,8,8
22	vxor	4,4,4
23	vor	8,8,5
24	vsldoi	8,8,4,15
25	vsldoi	6,4,5,1
26	vaddubm	8,8,8
27	vspltisb	7,7
28	vor	8,8,6
29	vspltb	6,9,0
30	vsl	9,9,5
31	vsrab	6,6,7
32	vand	6,6,8
33	vxor	3,9,6
34
35	vsldoi	9,3,3,8
36	vsldoi	8,4,8,8
37	vsldoi	11,4,9,8
38	vsldoi	10,9,4,8
39
40	.long	0x7D001F99
41	.long	0x7D681F99
42	li	8,0x40
43	.long	0x7D291F99
44	li	9,0x50
45	.long	0x7D4A1F99
46	li	10,0x60
47
48	.long	0x10035CC8
49	.long	0x10234CC8
50	.long	0x104354C8
51
52	.long	0x10E044C8
53
54	vsldoi	5,1,4,8
55	vsldoi	6,4,1,8
56	vxor	0,0,5
57	vxor	2,2,6
58
59	vsldoi	0,0,0,8
60	vxor	0,0,7
61
62	vsldoi	6,0,0,8
63	.long	0x100044C8
64	vxor	6,6,2
65	vxor	16,0,6
66
67	vsldoi	17,16,16,8
68	vsldoi	19,4,17,8
69	vsldoi	18,17,4,8
70
71	.long	0x7E681F99
72	li	8,0x70
73	.long	0x7E291F99
74	li	9,0x80
75	.long	0x7E4A1F99
76	li	10,0x90
77	.long	0x10039CC8
78	.long	0x11B09CC8
79	.long	0x10238CC8
80	.long	0x11D08CC8
81	.long	0x104394C8
82	.long	0x11F094C8
83
84	.long	0x10E044C8
85	.long	0x114D44C8
86
87	vsldoi	5,1,4,8
88	vsldoi	6,4,1,8
89	vsldoi	11,14,4,8
90	vsldoi	9,4,14,8
91	vxor	0,0,5
92	vxor	2,2,6
93	vxor	13,13,11
94	vxor	15,15,9
95
96	vsldoi	0,0,0,8
97	vsldoi	13,13,13,8
98	vxor	0,0,7
99	vxor	13,13,10
100
101	vsldoi	6,0,0,8
102	vsldoi	9,13,13,8
103	.long	0x100044C8
104	.long	0x11AD44C8
105	vxor	6,6,2
106	vxor	9,9,15
107	vxor	0,0,6
108	vxor	13,13,9
109
110	vsldoi	9,0,0,8
111	vsldoi	17,13,13,8
112	vsldoi	11,4,9,8
113	vsldoi	10,9,4,8
114	vsldoi	19,4,17,8
115	vsldoi	18,17,4,8
116
117	.long	0x7D681F99
118	li	8,0xa0
119	.long	0x7D291F99
120	li	9,0xb0
121	.long	0x7D4A1F99
122	li	10,0xc0
123	.long	0x7E681F99
124	.long	0x7E291F99
125	.long	0x7E4A1F99
126
127	mtspr	256,12
128	blr
129.long	0
130.byte	0,12,0x14,0,0,0,2,0
131.long	0
132.size	gcm_init_p8,.-gcm_init_p8
133.globl	gcm_gmult_p8
134.type	gcm_gmult_p8,@function
135.align	5
136gcm_gmult_p8:
137	lis	0,0xfff8
138	li	8,0x10
139	mfspr	12,256
140	li	9,0x20
141	mtspr	256,0
142	li	10,0x30
143	.long	0x7C601E99
144
145	.long	0x7D682699
146
147	.long	0x7D292699
148
149	.long	0x7D4A2699
150
151	.long	0x7D002699
152
153	vxor	4,4,4
154
155	.long	0x10035CC8
156	.long	0x10234CC8
157	.long	0x104354C8
158
159	.long	0x10E044C8
160
161	vsldoi	5,1,4,8
162	vsldoi	6,4,1,8
163	vxor	0,0,5
164	vxor	2,2,6
165
166	vsldoi	0,0,0,8
167	vxor	0,0,7
168
169	vsldoi	6,0,0,8
170	.long	0x100044C8
171	vxor	6,6,2
172	vxor	0,0,6
173
174
175	.long	0x7C001F99
176
177	mtspr	256,12
178	blr
179.long	0
180.byte	0,12,0x14,0,0,0,2,0
181.long	0
182.size	gcm_gmult_p8,.-gcm_gmult_p8
183
184.globl	gcm_ghash_p8
185.type	gcm_ghash_p8,@function
186.align	5
187gcm_ghash_p8:
188	li	0,-4096
189	li	8,0x10
190	mfspr	12,256
191	li	9,0x20
192	mtspr	256,0
193	li	10,0x30
194	.long	0x7C001E99
195
196	.long	0x7D682699
197	li	8,0x40
198
199	.long	0x7D292699
200	li	9,0x50
201
202	.long	0x7D4A2699
203	li	10,0x60
204
205	.long	0x7D002699
206
207	vxor	4,4,4
208
209	cmplwi	6,64
210	bge	.Lgcm_ghash_p8_4x
211
212	.long	0x7C602E99
213	addi	5,5,16
214	subic.	6,6,16
215
216	vxor	3,3,0
217	beq	.Lshort
218
219	.long	0x7E682699
220	li	8,16
221	.long	0x7E292699
222	add	9,5,6
223	.long	0x7E4A2699
224	b	.Loop_2x
225
226.align	5
227.Loop_2x:
228	.long	0x7E002E99
229
230
231	subic	6,6,32
232	.long	0x10039CC8
233	.long	0x11B05CC8
234	subfe	0,0,0
235	.long	0x10238CC8
236	.long	0x11D04CC8
237	and	0,0,6
238	.long	0x104394C8
239	.long	0x11F054C8
240	add	5,5,0
241
242	vxor	0,0,13
243	vxor	1,1,14
244
245	.long	0x10E044C8
246
247	vsldoi	5,1,4,8
248	vsldoi	6,4,1,8
249	vxor	2,2,15
250	vxor	0,0,5
251	vxor	2,2,6
252
253	vsldoi	0,0,0,8
254	vxor	0,0,7
255	.long	0x7C682E99
256	addi	5,5,32
257
258	vsldoi	6,0,0,8
259	.long	0x100044C8
260
261	vxor	6,6,2
262	vxor	3,3,6
263	vxor	3,3,0
264	.long	0x7c092840
265	bgt	.Loop_2x
266
267	cmplwi	6,0
268	bne	.Leven
269
270.Lshort:
271	.long	0x10035CC8
272	.long	0x10234CC8
273	.long	0x104354C8
274
275	.long	0x10E044C8
276
277	vsldoi	5,1,4,8
278	vsldoi	6,4,1,8
279	vxor	0,0,5
280	vxor	2,2,6
281
282	vsldoi	0,0,0,8
283	vxor	0,0,7
284
285	vsldoi	6,0,0,8
286	.long	0x100044C8
287	vxor	6,6,2
288
289.Leven:
290	vxor	0,0,6
291
292	.long	0x7C001F99
293
294	mtspr	256,12
295	blr
296.long	0
297.byte	0,12,0x14,0,0,0,4,0
298.long	0
299.align	5
300.gcm_ghash_p8_4x:
301.Lgcm_ghash_p8_4x:
302	stwu	1,-232(1)
303	li	10,39
304	li	11,55
305	stvx	20,10,1
306	addi	10,10,32
307	stvx	21,11,1
308	addi	11,11,32
309	stvx	22,10,1
310	addi	10,10,32
311	stvx	23,11,1
312	addi	11,11,32
313	stvx	24,10,1
314	addi	10,10,32
315	stvx	25,11,1
316	addi	11,11,32
317	stvx	26,10,1
318	addi	10,10,32
319	stvx	27,11,1
320	addi	11,11,32
321	stvx	28,10,1
322	addi	10,10,32
323	stvx	29,11,1
324	addi	11,11,32
325	stvx	30,10,1
326	li	10,0x60
327	stvx	31,11,1
328	li	0,-1
329	stw	12,228(1)
330	mtspr	256,0
331
332	lvsl	5,0,8
333
334	li	8,0x70
335	.long	0x7E292699
336	li	9,0x80
337	vspltisb	6,8
338
339	li	10,0x90
340	.long	0x7EE82699
341	li	8,0xa0
342	.long	0x7F092699
343	li	9,0xb0
344	.long	0x7F2A2699
345	li	10,0xc0
346	.long	0x7FA82699
347	li	8,0x10
348	.long	0x7FC92699
349	li	9,0x20
350	.long	0x7FEA2699
351	li	10,0x30
352
353	vsldoi	7,4,6,8
354	vaddubm	18,5,7
355	vaddubm	19,6,18
356
357	srwi	6,6,4
358
359	.long	0x7C602E99
360	.long	0x7E082E99
361	subic.	6,6,8
362	.long	0x7EC92E99
363	.long	0x7F8A2E99
364	addi	5,5,0x40
365
366
367
368
369
370	vxor	2,3,0
371
372	.long	0x11B0BCC8
373	.long	0x11D0C4C8
374	.long	0x11F0CCC8
375
376	vperm	11,17,9,18
377	vperm	5,22,28,19
378	vperm	10,17,9,19
379	vperm	6,22,28,18
380	.long	0x12B68CC8
381	.long	0x12855CC8
382	.long	0x137C4CC8
383	.long	0x134654C8
384
385	vxor	21,21,14
386	vxor	20,20,13
387	vxor	27,27,21
388	vxor	26,26,15
389
390	blt	.Ltail_4x
391
392.Loop_4x:
393	.long	0x7C602E99
394	.long	0x7E082E99
395	subic.	6,6,4
396	.long	0x7EC92E99
397	.long	0x7F8A2E99
398	addi	5,5,0x40
399
400
401
402
403
404	.long	0x1002ECC8
405	.long	0x1022F4C8
406	.long	0x1042FCC8
407	.long	0x11B0BCC8
408	.long	0x11D0C4C8
409	.long	0x11F0CCC8
410
411	vxor	0,0,20
412	vxor	1,1,27
413	vxor	2,2,26
414	vperm	5,22,28,19
415	vperm	6,22,28,18
416
417	.long	0x10E044C8
418	.long	0x12855CC8
419	.long	0x134654C8
420
421	vsldoi	5,1,4,8
422	vsldoi	6,4,1,8
423	vxor	0,0,5
424	vxor	2,2,6
425
426	vsldoi	0,0,0,8
427	vxor	0,0,7
428
429	vsldoi	6,0,0,8
430	.long	0x12B68CC8
431	.long	0x137C4CC8
432	.long	0x100044C8
433
434	vxor	20,20,13
435	vxor	26,26,15
436	vxor	2,2,3
437	vxor	21,21,14
438	vxor	2,2,6
439	vxor	27,27,21
440	vxor	2,2,0
441	bge	.Loop_4x
442
443.Ltail_4x:
444	.long	0x1002ECC8
445	.long	0x1022F4C8
446	.long	0x1042FCC8
447
448	vxor	0,0,20
449	vxor	1,1,27
450
451	.long	0x10E044C8
452
453	vsldoi	5,1,4,8
454	vsldoi	6,4,1,8
455	vxor	2,2,26
456	vxor	0,0,5
457	vxor	2,2,6
458
459	vsldoi	0,0,0,8
460	vxor	0,0,7
461
462	vsldoi	6,0,0,8
463	.long	0x100044C8
464	vxor	6,6,2
465	vxor	0,0,6
466
467	addic.	6,6,4
468	beq	.Ldone_4x
469
470	.long	0x7C602E99
471	cmplwi	6,2
472	li	6,-4
473	blt	.Lone
474	.long	0x7E082E99
475	beq	.Ltwo
476
477.Lthree:
478	.long	0x7EC92E99
479
480
481
482
483	vxor	2,3,0
484	vor	29,23,23
485	vor	30,24,24
486	vor	31,25,25
487
488	vperm	5,16,22,19
489	vperm	6,16,22,18
490	.long	0x12B08CC8
491	.long	0x13764CC8
492	.long	0x12855CC8
493	.long	0x134654C8
494
495	vxor	27,27,21
496	b	.Ltail_4x
497
498.align	4
499.Ltwo:
500
501
502
503	vxor	2,3,0
504	vperm	5,4,16,19
505	vperm	6,4,16,18
506
507	vsldoi	29,4,17,8
508	vor	30,17,17
509	vsldoi	31,17,4,8
510
511	.long	0x12855CC8
512	.long	0x13704CC8
513	.long	0x134654C8
514
515	b	.Ltail_4x
516
517.align	4
518.Lone:
519
520
521	vsldoi	29,4,9,8
522	vor	30,9,9
523	vsldoi	31,9,4,8
524
525	vxor	2,3,0
526	vxor	20,20,20
527	vxor	27,27,27
528	vxor	26,26,26
529
530	b	.Ltail_4x
531
532.Ldone_4x:
533
534	.long	0x7C001F99
535
536	li	10,39
537	li	11,55
538	mtspr	256,12
539	lvx	20,10,1
540	addi	10,10,32
541	lvx	21,11,1
542	addi	11,11,32
543	lvx	22,10,1
544	addi	10,10,32
545	lvx	23,11,1
546	addi	11,11,32
547	lvx	24,10,1
548	addi	10,10,32
549	lvx	25,11,1
550	addi	11,11,32
551	lvx	26,10,1
552	addi	10,10,32
553	lvx	27,11,1
554	addi	11,11,32
555	lvx	28,10,1
556	addi	10,10,32
557	lvx	29,11,1
558	addi	11,11,32
559	lvx	30,10,1
560	lvx	31,11,1
561	addi	1,1,232
562	blr
563.long	0
564.byte	0,12,0x04,0,0x80,0,4,0
565.long	0
566.size	gcm_ghash_p8,.-gcm_ghash_p8
567
568.byte	71,72,65,83,72,32,102,111,114,32,80,111,119,101,114,73,83,65,32,50,46,48,55,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
569.align	2
570.align	2
571