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