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