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