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