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