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