Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/crypto/openssl/powerpc64/aes-gcm-ppc.S
39482 views
1
/* Do not modify. This file is auto-generated from aes-gcm-ppc.pl. */
2
.machine "any"
3
.abiversion 2
4
.text
5
6
7
8
9
10
.macro .Loop_aes_middle4x
11
xxlor 19+32, 1, 1
12
xxlor 20+32, 2, 2
13
xxlor 21+32, 3, 3
14
xxlor 22+32, 4, 4
15
16
.long 0x11EF9D08
17
.long 0x12109D08
18
.long 0x12319D08
19
.long 0x12529D08
20
21
.long 0x11EFA508
22
.long 0x1210A508
23
.long 0x1231A508
24
.long 0x1252A508
25
26
.long 0x11EFAD08
27
.long 0x1210AD08
28
.long 0x1231AD08
29
.long 0x1252AD08
30
31
.long 0x11EFB508
32
.long 0x1210B508
33
.long 0x1231B508
34
.long 0x1252B508
35
36
xxlor 19+32, 5, 5
37
xxlor 20+32, 6, 6
38
xxlor 21+32, 7, 7
39
xxlor 22+32, 8, 8
40
41
.long 0x11EF9D08
42
.long 0x12109D08
43
.long 0x12319D08
44
.long 0x12529D08
45
46
.long 0x11EFA508
47
.long 0x1210A508
48
.long 0x1231A508
49
.long 0x1252A508
50
51
.long 0x11EFAD08
52
.long 0x1210AD08
53
.long 0x1231AD08
54
.long 0x1252AD08
55
56
.long 0x11EFB508
57
.long 0x1210B508
58
.long 0x1231B508
59
.long 0x1252B508
60
61
xxlor 23+32, 9, 9
62
.long 0x11EFBD08
63
.long 0x1210BD08
64
.long 0x1231BD08
65
.long 0x1252BD08
66
.endm
67
68
69
70
71
72
.macro .Loop_aes_middle8x
73
xxlor 23+32, 1, 1
74
xxlor 24+32, 2, 2
75
xxlor 25+32, 3, 3
76
xxlor 26+32, 4, 4
77
78
.long 0x11EFBD08
79
.long 0x1210BD08
80
.long 0x1231BD08
81
.long 0x1252BD08
82
.long 0x1273BD08
83
.long 0x1294BD08
84
.long 0x12B5BD08
85
.long 0x12D6BD08
86
87
.long 0x11EFC508
88
.long 0x1210C508
89
.long 0x1231C508
90
.long 0x1252C508
91
.long 0x1273C508
92
.long 0x1294C508
93
.long 0x12B5C508
94
.long 0x12D6C508
95
96
.long 0x11EFCD08
97
.long 0x1210CD08
98
.long 0x1231CD08
99
.long 0x1252CD08
100
.long 0x1273CD08
101
.long 0x1294CD08
102
.long 0x12B5CD08
103
.long 0x12D6CD08
104
105
.long 0x11EFD508
106
.long 0x1210D508
107
.long 0x1231D508
108
.long 0x1252D508
109
.long 0x1273D508
110
.long 0x1294D508
111
.long 0x12B5D508
112
.long 0x12D6D508
113
114
xxlor 23+32, 5, 5
115
xxlor 24+32, 6, 6
116
xxlor 25+32, 7, 7
117
xxlor 26+32, 8, 8
118
119
.long 0x11EFBD08
120
.long 0x1210BD08
121
.long 0x1231BD08
122
.long 0x1252BD08
123
.long 0x1273BD08
124
.long 0x1294BD08
125
.long 0x12B5BD08
126
.long 0x12D6BD08
127
128
.long 0x11EFC508
129
.long 0x1210C508
130
.long 0x1231C508
131
.long 0x1252C508
132
.long 0x1273C508
133
.long 0x1294C508
134
.long 0x12B5C508
135
.long 0x12D6C508
136
137
.long 0x11EFCD08
138
.long 0x1210CD08
139
.long 0x1231CD08
140
.long 0x1252CD08
141
.long 0x1273CD08
142
.long 0x1294CD08
143
.long 0x12B5CD08
144
.long 0x12D6CD08
145
146
.long 0x11EFD508
147
.long 0x1210D508
148
.long 0x1231D508
149
.long 0x1252D508
150
.long 0x1273D508
151
.long 0x1294D508
152
.long 0x12B5D508
153
.long 0x12D6D508
154
155
xxlor 23+32, 9, 9
156
.long 0x11EFBD08
157
.long 0x1210BD08
158
.long 0x1231BD08
159
.long 0x1252BD08
160
.long 0x1273BD08
161
.long 0x1294BD08
162
.long 0x12B5BD08
163
.long 0x12D6BD08
164
.endm
165
166
167
168
169
ppc_aes_gcm_ghash:
170
vxor 15, 15, 0
171
172
xxlxor 29, 29, 29
173
174
.long 0x12EC7CC8
175
.long 0x130984C8
176
.long 0x13268CC8
177
.long 0x134394C8
178
179
vxor 23, 23, 24
180
vxor 23, 23, 25
181
vxor 23, 23, 26
182
183
.long 0x130D7CC8
184
.long 0x132A84C8
185
.long 0x13478CC8
186
.long 0x136494C8
187
188
vxor 24, 24, 25
189
vxor 24, 24, 26
190
vxor 24, 24, 27
191
192
193
.long 0x139714C8
194
195
xxlor 29+32, 29, 29
196
vsldoi 26, 24, 29, 8
197
vsldoi 29, 29, 24, 8
198
vxor 23, 23, 26
199
200
vsldoi 23, 23, 23, 8
201
vxor 23, 23, 28
202
203
.long 0x130E7CC8
204
.long 0x132B84C8
205
.long 0x13488CC8
206
.long 0x136594C8
207
208
vxor 24, 24, 25
209
vxor 24, 24, 26
210
vxor 24, 24, 27
211
212
vxor 24, 24, 29
213
214
215
vsldoi 27, 23, 23, 8
216
.long 0x12F714C8
217
vxor 27, 27, 24
218
vxor 23, 23, 27
219
220
xxlor 32, 23+32, 23+32
221
222
blr
223
224
225
226
227
228
.macro ppc_aes_gcm_ghash2_4x
229
230
vxor 15, 15, 0
231
232
xxlxor 29, 29, 29
233
234
.long 0x12EC7CC8
235
.long 0x130984C8
236
.long 0x13268CC8
237
.long 0x134394C8
238
239
vxor 23, 23, 24
240
vxor 23, 23, 25
241
vxor 23, 23, 26
242
243
.long 0x130D7CC8
244
.long 0x132A84C8
245
.long 0x13478CC8
246
.long 0x136494C8
247
248
vxor 24, 24, 25
249
vxor 24, 24, 26
250
251
252
.long 0x139714C8
253
254
xxlor 29+32, 29, 29
255
256
vxor 24, 24, 27
257
vsldoi 26, 24, 29, 8
258
vsldoi 29, 29, 24, 8
259
vxor 23, 23, 26
260
261
vsldoi 23, 23, 23, 8
262
vxor 23, 23, 28
263
264
.long 0x130E7CC8
265
.long 0x132B84C8
266
.long 0x13488CC8
267
.long 0x136594C8
268
269
vxor 24, 24, 25
270
vxor 24, 24, 26
271
vxor 24, 24, 27
272
273
vxor 24, 24, 29
274
275
276
vsldoi 27, 23, 23, 8
277
.long 0x12F714C8
278
vxor 27, 27, 24
279
vxor 27, 23, 27
280
281
282
.long 0x1309A4C8
283
.long 0x1326ACC8
284
.long 0x1343B4C8
285
vxor 19, 19, 27
286
.long 0x12EC9CC8
287
288
vxor 23, 23, 24
289
vxor 23, 23, 25
290
vxor 23, 23, 26
291
292
.long 0x130D9CC8
293
.long 0x132AA4C8
294
.long 0x1347ACC8
295
.long 0x1364B4C8
296
297
vxor 24, 24, 25
298
vxor 24, 24, 26
299
300
301
.long 0x139714C8
302
303
xxlor 29+32, 29, 29
304
305
vxor 24, 24, 27
306
vsldoi 26, 24, 29, 8
307
vsldoi 29, 29, 24, 8
308
vxor 23, 23, 26
309
310
vsldoi 23, 23, 23, 8
311
vxor 23, 23, 28
312
313
.long 0x130E9CC8
314
.long 0x132BA4C8
315
.long 0x1348ACC8
316
.long 0x1365B4C8
317
318
vxor 24, 24, 25
319
vxor 24, 24, 26
320
vxor 24, 24, 27
321
322
vxor 24, 24, 29
323
324
325
vsldoi 27, 23, 23, 8
326
.long 0x12F714C8
327
vxor 27, 27, 24
328
vxor 23, 23, 27
329
330
xxlor 32, 23+32, 23+32
331
332
.endm
333
334
335
336
337
.macro ppc_update_hash_1x
338
vxor 28, 28, 0
339
340
vxor 19, 19, 19
341
342
.long 0x12C3E4C8
343
.long 0x12E4E4C8
344
.long 0x1305E4C8
345
346
.long 0x137614C8
347
348
vsldoi 25, 23, 19, 8
349
vsldoi 26, 19, 23, 8
350
vxor 22, 22, 25
351
vxor 24, 24, 26
352
353
vsldoi 22, 22, 22, 8
354
vxor 22, 22, 27
355
356
vsldoi 20, 22, 22, 8
357
.long 0x12D614C8
358
vxor 20, 20, 24
359
vxor 22, 22, 20
360
361
vor 0,22,22
362
363
.endm
364
365
366
367
368
369
370
371
372
373
374
375
376
377
.global ppc_aes_gcm_encrypt
378
.align 5
379
ppc_aes_gcm_encrypt:
380
_ppc_aes_gcm_encrypt:
381
382
stdu 1,-512(1)
383
mflr 0
384
385
std 14,112(1)
386
std 15,120(1)
387
std 16,128(1)
388
std 17,136(1)
389
std 18,144(1)
390
std 19,152(1)
391
std 20,160(1)
392
std 21,168(1)
393
li 9, 256
394
stvx 20, 9, 1
395
addi 9, 9, 16
396
stvx 21, 9, 1
397
addi 9, 9, 16
398
stvx 22, 9, 1
399
addi 9, 9, 16
400
stvx 23, 9, 1
401
addi 9, 9, 16
402
stvx 24, 9, 1
403
addi 9, 9, 16
404
stvx 25, 9, 1
405
addi 9, 9, 16
406
stvx 26, 9, 1
407
addi 9, 9, 16
408
stvx 27, 9, 1
409
addi 9, 9, 16
410
stvx 28, 9, 1
411
addi 9, 9, 16
412
stvx 29, 9, 1
413
addi 9, 9, 16
414
stvx 30, 9, 1
415
addi 9, 9, 16
416
stvx 31, 9, 1
417
std 0, 528(1)
418
419
420
lxvb16x 32, 0, 8
421
422
423
li 10, 32
424
lxvd2x 2+32, 10, 8
425
li 10, 48
426
lxvd2x 3+32, 10, 8
427
li 10, 64
428
lxvd2x 4+32, 10, 8
429
li 10, 80
430
lxvd2x 5+32, 10, 8
431
432
li 10, 96
433
lxvd2x 6+32, 10, 8
434
li 10, 112
435
lxvd2x 7+32, 10, 8
436
li 10, 128
437
lxvd2x 8+32, 10, 8
438
439
li 10, 144
440
lxvd2x 9+32, 10, 8
441
li 10, 160
442
lxvd2x 10+32, 10, 8
443
li 10, 176
444
lxvd2x 11+32, 10, 8
445
446
li 10, 192
447
lxvd2x 12+32, 10, 8
448
li 10, 208
449
lxvd2x 13+32, 10, 8
450
li 10, 224
451
lxvd2x 14+32, 10, 8
452
453
454
lxvb16x 30+32, 0, 7
455
456
mr 12, 5
457
li 11, 0
458
459
460
vxor 31, 31, 31
461
vspltisb 22,1
462
vsldoi 31, 31, 22,1
463
464
465
lxv 0, 0(6)
466
lxv 1, 0x10(6)
467
lxv 2, 0x20(6)
468
lxv 3, 0x30(6)
469
lxv 4, 0x40(6)
470
lxv 5, 0x50(6)
471
lxv 6, 0x60(6)
472
lxv 7, 0x70(6)
473
lxv 8, 0x80(6)
474
lxv 9, 0x90(6)
475
lxv 10, 0xa0(6)
476
477
478
lwz 9,240(6)
479
480
481
482
xxlor 32+29, 0, 0
483
vxor 15, 30, 29
484
485
cmpdi 9, 10
486
beq .Loop_aes_gcm_8x
487
488
489
lxv 11, 0xb0(6)
490
lxv 12, 0xc0(6)
491
492
cmpdi 9, 12
493
beq .Loop_aes_gcm_8x
494
495
496
lxv 13, 0xd0(6)
497
lxv 14, 0xe0(6)
498
cmpdi 9, 14
499
beq .Loop_aes_gcm_8x
500
501
b aes_gcm_out
502
503
.align 5
504
.Loop_aes_gcm_8x:
505
mr 14, 3
506
mr 9, 4
507
508
509
li 10, 128
510
divdu 10, 5, 10
511
cmpdi 10, 0
512
beq .Loop_last_block
513
514
.long 0x13DEF8C0
515
vxor 16, 30, 29
516
.long 0x13DEF8C0
517
vxor 17, 30, 29
518
.long 0x13DEF8C0
519
vxor 18, 30, 29
520
.long 0x13DEF8C0
521
vxor 19, 30, 29
522
.long 0x13DEF8C0
523
vxor 20, 30, 29
524
.long 0x13DEF8C0
525
vxor 21, 30, 29
526
.long 0x13DEF8C0
527
vxor 22, 30, 29
528
529
mtctr 10
530
531
li 15, 16
532
li 16, 32
533
li 17, 48
534
li 18, 64
535
li 19, 80
536
li 20, 96
537
li 21, 112
538
539
lwz 10, 240(6)
540
541
.Loop_8x_block:
542
543
lxvb16x 15, 0, 14
544
lxvb16x 16, 15, 14
545
lxvb16x 17, 16, 14
546
lxvb16x 18, 17, 14
547
lxvb16x 19, 18, 14
548
lxvb16x 20, 19, 14
549
lxvb16x 21, 20, 14
550
lxvb16x 22, 21, 14
551
addi 14, 14, 128
552
553
.Loop_aes_middle8x
554
555
xxlor 23+32, 10, 10
556
557
cmpdi 10, 10
558
beq Do_next_ghash
559
560
561
xxlor 24+32, 11, 11
562
563
.long 0x11EFBD08
564
.long 0x1210BD08
565
.long 0x1231BD08
566
.long 0x1252BD08
567
.long 0x1273BD08
568
.long 0x1294BD08
569
.long 0x12B5BD08
570
.long 0x12D6BD08
571
572
.long 0x11EFC508
573
.long 0x1210C508
574
.long 0x1231C508
575
.long 0x1252C508
576
.long 0x1273C508
577
.long 0x1294C508
578
.long 0x12B5C508
579
.long 0x12D6C508
580
581
xxlor 23+32, 12, 12
582
583
cmpdi 10, 12
584
beq Do_next_ghash
585
586
587
xxlor 24+32, 13, 13
588
589
.long 0x11EFBD08
590
.long 0x1210BD08
591
.long 0x1231BD08
592
.long 0x1252BD08
593
.long 0x1273BD08
594
.long 0x1294BD08
595
.long 0x12B5BD08
596
.long 0x12D6BD08
597
598
.long 0x11EFC508
599
.long 0x1210C508
600
.long 0x1231C508
601
.long 0x1252C508
602
.long 0x1273C508
603
.long 0x1294C508
604
.long 0x12B5C508
605
.long 0x12D6C508
606
607
xxlor 23+32, 14, 14
608
609
cmpdi 10, 14
610
beq Do_next_ghash
611
b aes_gcm_out
612
613
Do_next_ghash:
614
615
616
617
.long 0x11EFBD09
618
.long 0x1210BD09
619
620
xxlxor 47, 47, 15
621
stxvb16x 47, 0, 9
622
xxlxor 48, 48, 16
623
stxvb16x 48, 15, 9
624
625
.long 0x1231BD09
626
.long 0x1252BD09
627
628
xxlxor 49, 49, 17
629
stxvb16x 49, 16, 9
630
xxlxor 50, 50, 18
631
stxvb16x 50, 17, 9
632
633
.long 0x1273BD09
634
.long 0x1294BD09
635
636
xxlxor 51, 51, 19
637
stxvb16x 51, 18, 9
638
xxlxor 52, 52, 20
639
stxvb16x 52, 19, 9
640
641
.long 0x12B5BD09
642
.long 0x12D6BD09
643
644
xxlxor 53, 53, 21
645
stxvb16x 53, 20, 9
646
xxlxor 54, 54, 22
647
stxvb16x 54, 21, 9
648
649
addi 9, 9, 128
650
651
652
ppc_aes_gcm_ghash2_4x
653
654
xxlor 27+32, 0, 0
655
.long 0x13DEF8C0
656
vor 29,30,30
657
vxor 15, 30, 27
658
.long 0x13DEF8C0
659
vxor 16, 30, 27
660
.long 0x13DEF8C0
661
vxor 17, 30, 27
662
.long 0x13DEF8C0
663
vxor 18, 30, 27
664
.long 0x13DEF8C0
665
vxor 19, 30, 27
666
.long 0x13DEF8C0
667
vxor 20, 30, 27
668
.long 0x13DEF8C0
669
vxor 21, 30, 27
670
.long 0x13DEF8C0
671
vxor 22, 30, 27
672
673
addi 12, 12, -128
674
addi 11, 11, 128
675
676
bdnz .Loop_8x_block
677
678
vor 30,29,29
679
680
.Loop_last_block:
681
cmpdi 12, 0
682
beq aes_gcm_out
683
684
685
li 10, 16
686
divdu 10, 12, 10
687
688
mtctr 10
689
690
lwz 10, 240(6)
691
692
cmpdi 12, 16
693
blt Final_block
694
695
.macro .Loop_aes_middle_1x
696
xxlor 19+32, 1, 1
697
xxlor 20+32, 2, 2
698
xxlor 21+32, 3, 3
699
xxlor 22+32, 4, 4
700
701
.long 0x11EF9D08
702
.long 0x11EFA508
703
.long 0x11EFAD08
704
.long 0x11EFB508
705
706
xxlor 19+32, 5, 5
707
xxlor 20+32, 6, 6
708
xxlor 21+32, 7, 7
709
xxlor 22+32, 8, 8
710
711
.long 0x11EF9D08
712
.long 0x11EFA508
713
.long 0x11EFAD08
714
.long 0x11EFB508
715
716
xxlor 19+32, 9, 9
717
.long 0x11EF9D08
718
.endm
719
720
Next_rem_block:
721
lxvb16x 15, 0, 14
722
723
.Loop_aes_middle_1x
724
725
xxlor 23+32, 10, 10
726
727
cmpdi 10, 10
728
beq Do_next_1x
729
730
731
xxlor 24+32, 11, 11
732
733
.long 0x11EFBD08
734
.long 0x11EFC508
735
736
xxlor 23+32, 12, 12
737
738
cmpdi 10, 12
739
beq Do_next_1x
740
741
742
xxlor 24+32, 13, 13
743
744
.long 0x11EFBD08
745
.long 0x11EFC508
746
747
xxlor 23+32, 14, 14
748
749
cmpdi 10, 14
750
beq Do_next_1x
751
752
Do_next_1x:
753
.long 0x11EFBD09
754
755
xxlxor 47, 47, 15
756
stxvb16x 47, 0, 9
757
addi 14, 14, 16
758
addi 9, 9, 16
759
760
vor 28,15,15
761
ppc_update_hash_1x
762
763
addi 12, 12, -16
764
addi 11, 11, 16
765
xxlor 19+32, 0, 0
766
.long 0x13DEF8C0
767
vxor 15, 30, 19
768
769
bdnz Next_rem_block
770
771
cmpdi 12, 0
772
beq aes_gcm_out
773
774
Final_block:
775
.Loop_aes_middle_1x
776
777
xxlor 23+32, 10, 10
778
779
cmpdi 10, 10
780
beq Do_final_1x
781
782
783
xxlor 24+32, 11, 11
784
785
.long 0x11EFBD08
786
.long 0x11EFC508
787
788
xxlor 23+32, 12, 12
789
790
cmpdi 10, 12
791
beq Do_final_1x
792
793
794
xxlor 24+32, 13, 13
795
796
.long 0x11EFBD08
797
.long 0x11EFC508
798
799
xxlor 23+32, 14, 14
800
801
cmpdi 10, 14
802
beq Do_final_1x
803
804
Do_final_1x:
805
.long 0x11EFBD09
806
807
lxvb16x 15, 0, 14
808
xxlxor 47, 47, 15
809
810
811
li 15, 16
812
sub 15, 15, 12
813
814
vspltisb 16,-1
815
vspltisb 17,0
816
li 10, 192
817
stvx 16, 10, 1
818
addi 10, 10, 16
819
stvx 17, 10, 1
820
821
addi 10, 1, 192
822
lxvb16x 16, 15, 10
823
xxland 47, 47, 16
824
825
vor 28,15,15
826
ppc_update_hash_1x
827
828
829
bl Write_partial_block
830
831
b aes_gcm_out
832
833
834
835
836
837
838
839
Write_partial_block:
840
li 10, 192
841
stxvb16x 15+32, 10, 1
842
843
844
addi 10, 9, -1
845
addi 16, 1, 191
846
847
mtctr 12
848
li 15, 0
849
850
Write_last_byte:
851
lbzu 14, 1(16)
852
stbu 14, 1(10)
853
bdnz Write_last_byte
854
blr
855
856
aes_gcm_out:
857
858
stxvb16x 32, 0, 8
859
add 3, 11, 12
860
861
li 9, 256
862
lvx 20, 9, 1
863
addi 9, 9, 16
864
lvx 21, 9, 1
865
addi 9, 9, 16
866
lvx 22, 9, 1
867
addi 9, 9, 16
868
lvx 23, 9, 1
869
addi 9, 9, 16
870
lvx 24, 9, 1
871
addi 9, 9, 16
872
lvx 25, 9, 1
873
addi 9, 9, 16
874
lvx 26, 9, 1
875
addi 9, 9, 16
876
lvx 27, 9, 1
877
addi 9, 9, 16
878
lvx 28, 9, 1
879
addi 9, 9, 16
880
lvx 29, 9, 1
881
addi 9, 9, 16
882
lvx 30, 9, 1
883
addi 9, 9, 16
884
lvx 31, 9, 1
885
886
ld 0, 528(1)
887
ld 14,112(1)
888
ld 15,120(1)
889
ld 16,128(1)
890
ld 17,136(1)
891
ld 18,144(1)
892
ld 19,152(1)
893
ld 20,160(1)
894
ld 21,168(1)
895
896
mtlr 0
897
addi 1, 1, 512
898
blr
899
900
901
902
903
.global ppc_aes_gcm_decrypt
904
.align 5
905
ppc_aes_gcm_decrypt:
906
_ppc_aes_gcm_decrypt:
907
908
stdu 1,-512(1)
909
mflr 0
910
911
std 14,112(1)
912
std 15,120(1)
913
std 16,128(1)
914
std 17,136(1)
915
std 18,144(1)
916
std 19,152(1)
917
std 20,160(1)
918
std 21,168(1)
919
li 9, 256
920
stvx 20, 9, 1
921
addi 9, 9, 16
922
stvx 21, 9, 1
923
addi 9, 9, 16
924
stvx 22, 9, 1
925
addi 9, 9, 16
926
stvx 23, 9, 1
927
addi 9, 9, 16
928
stvx 24, 9, 1
929
addi 9, 9, 16
930
stvx 25, 9, 1
931
addi 9, 9, 16
932
stvx 26, 9, 1
933
addi 9, 9, 16
934
stvx 27, 9, 1
935
addi 9, 9, 16
936
stvx 28, 9, 1
937
addi 9, 9, 16
938
stvx 29, 9, 1
939
addi 9, 9, 16
940
stvx 30, 9, 1
941
addi 9, 9, 16
942
stvx 31, 9, 1
943
std 0, 528(1)
944
945
946
lxvb16x 32, 0, 8
947
948
949
li 10, 32
950
lxvd2x 2+32, 10, 8
951
li 10, 48
952
lxvd2x 3+32, 10, 8
953
li 10, 64
954
lxvd2x 4+32, 10, 8
955
li 10, 80
956
lxvd2x 5+32, 10, 8
957
958
li 10, 96
959
lxvd2x 6+32, 10, 8
960
li 10, 112
961
lxvd2x 7+32, 10, 8
962
li 10, 128
963
lxvd2x 8+32, 10, 8
964
965
li 10, 144
966
lxvd2x 9+32, 10, 8
967
li 10, 160
968
lxvd2x 10+32, 10, 8
969
li 10, 176
970
lxvd2x 11+32, 10, 8
971
972
li 10, 192
973
lxvd2x 12+32, 10, 8
974
li 10, 208
975
lxvd2x 13+32, 10, 8
976
li 10, 224
977
lxvd2x 14+32, 10, 8
978
979
980
lxvb16x 30+32, 0, 7
981
982
mr 12, 5
983
li 11, 0
984
985
986
vxor 31, 31, 31
987
vspltisb 22,1
988
vsldoi 31, 31, 22,1
989
990
991
lxv 0, 0(6)
992
lxv 1, 0x10(6)
993
lxv 2, 0x20(6)
994
lxv 3, 0x30(6)
995
lxv 4, 0x40(6)
996
lxv 5, 0x50(6)
997
lxv 6, 0x60(6)
998
lxv 7, 0x70(6)
999
lxv 8, 0x80(6)
1000
lxv 9, 0x90(6)
1001
lxv 10, 0xa0(6)
1002
1003
1004
lwz 9,240(6)
1005
1006
1007
1008
xxlor 32+29, 0, 0
1009
vxor 15, 30, 29
1010
1011
cmpdi 9, 10
1012
beq .Loop_aes_gcm_8x_dec
1013
1014
1015
lxv 11, 0xb0(6)
1016
lxv 12, 0xc0(6)
1017
1018
cmpdi 9, 12
1019
beq .Loop_aes_gcm_8x_dec
1020
1021
1022
lxv 13, 0xd0(6)
1023
lxv 14, 0xe0(6)
1024
cmpdi 9, 14
1025
beq .Loop_aes_gcm_8x_dec
1026
1027
b aes_gcm_out
1028
1029
.align 5
1030
.Loop_aes_gcm_8x_dec:
1031
mr 14, 3
1032
mr 9, 4
1033
1034
1035
li 10, 128
1036
divdu 10, 5, 10
1037
cmpdi 10, 0
1038
beq .Loop_last_block_dec
1039
1040
.long 0x13DEF8C0
1041
vxor 16, 30, 29
1042
.long 0x13DEF8C0
1043
vxor 17, 30, 29
1044
.long 0x13DEF8C0
1045
vxor 18, 30, 29
1046
.long 0x13DEF8C0
1047
vxor 19, 30, 29
1048
.long 0x13DEF8C0
1049
vxor 20, 30, 29
1050
.long 0x13DEF8C0
1051
vxor 21, 30, 29
1052
.long 0x13DEF8C0
1053
vxor 22, 30, 29
1054
1055
mtctr 10
1056
1057
li 15, 16
1058
li 16, 32
1059
li 17, 48
1060
li 18, 64
1061
li 19, 80
1062
li 20, 96
1063
li 21, 112
1064
1065
lwz 10, 240(6)
1066
1067
.Loop_8x_block_dec:
1068
1069
lxvb16x 15, 0, 14
1070
lxvb16x 16, 15, 14
1071
lxvb16x 17, 16, 14
1072
lxvb16x 18, 17, 14
1073
lxvb16x 19, 18, 14
1074
lxvb16x 20, 19, 14
1075
lxvb16x 21, 20, 14
1076
lxvb16x 22, 21, 14
1077
addi 14, 14, 128
1078
1079
.Loop_aes_middle8x
1080
1081
xxlor 23+32, 10, 10
1082
1083
cmpdi 10, 10
1084
beq Do_last_aes_dec
1085
1086
1087
xxlor 24+32, 11, 11
1088
1089
.long 0x11EFBD08
1090
.long 0x1210BD08
1091
.long 0x1231BD08
1092
.long 0x1252BD08
1093
.long 0x1273BD08
1094
.long 0x1294BD08
1095
.long 0x12B5BD08
1096
.long 0x12D6BD08
1097
1098
.long 0x11EFC508
1099
.long 0x1210C508
1100
.long 0x1231C508
1101
.long 0x1252C508
1102
.long 0x1273C508
1103
.long 0x1294C508
1104
.long 0x12B5C508
1105
.long 0x12D6C508
1106
1107
xxlor 23+32, 12, 12
1108
1109
cmpdi 10, 12
1110
beq Do_last_aes_dec
1111
1112
1113
xxlor 24+32, 13, 13
1114
1115
.long 0x11EFBD08
1116
.long 0x1210BD08
1117
.long 0x1231BD08
1118
.long 0x1252BD08
1119
.long 0x1273BD08
1120
.long 0x1294BD08
1121
.long 0x12B5BD08
1122
.long 0x12D6BD08
1123
1124
.long 0x11EFC508
1125
.long 0x1210C508
1126
.long 0x1231C508
1127
.long 0x1252C508
1128
.long 0x1273C508
1129
.long 0x1294C508
1130
.long 0x12B5C508
1131
.long 0x12D6C508
1132
1133
xxlor 23+32, 14, 14
1134
1135
cmpdi 10, 14
1136
beq Do_last_aes_dec
1137
b aes_gcm_out
1138
1139
Do_last_aes_dec:
1140
1141
1142
1143
.long 0x11EFBD09
1144
.long 0x1210BD09
1145
1146
xxlxor 47, 47, 15
1147
stxvb16x 47, 0, 9
1148
xxlxor 48, 48, 16
1149
stxvb16x 48, 15, 9
1150
1151
.long 0x1231BD09
1152
.long 0x1252BD09
1153
1154
xxlxor 49, 49, 17
1155
stxvb16x 49, 16, 9
1156
xxlxor 50, 50, 18
1157
stxvb16x 50, 17, 9
1158
1159
.long 0x1273BD09
1160
.long 0x1294BD09
1161
1162
xxlxor 51, 51, 19
1163
stxvb16x 51, 18, 9
1164
xxlxor 52, 52, 20
1165
stxvb16x 52, 19, 9
1166
1167
.long 0x12B5BD09
1168
.long 0x12D6BD09
1169
1170
xxlxor 53, 53, 21
1171
stxvb16x 53, 20, 9
1172
xxlxor 54, 54, 22
1173
stxvb16x 54, 21, 9
1174
1175
addi 9, 9, 128
1176
1177
xxlor 15+32, 15, 15
1178
xxlor 16+32, 16, 16
1179
xxlor 17+32, 17, 17
1180
xxlor 18+32, 18, 18
1181
xxlor 19+32, 19, 19
1182
xxlor 20+32, 20, 20
1183
xxlor 21+32, 21, 21
1184
xxlor 22+32, 22, 22
1185
1186
1187
ppc_aes_gcm_ghash2_4x
1188
1189
xxlor 27+32, 0, 0
1190
.long 0x13DEF8C0
1191
vor 29,30,30
1192
vxor 15, 30, 27
1193
.long 0x13DEF8C0
1194
vxor 16, 30, 27
1195
.long 0x13DEF8C0
1196
vxor 17, 30, 27
1197
.long 0x13DEF8C0
1198
vxor 18, 30, 27
1199
.long 0x13DEF8C0
1200
vxor 19, 30, 27
1201
.long 0x13DEF8C0
1202
vxor 20, 30, 27
1203
.long 0x13DEF8C0
1204
vxor 21, 30, 27
1205
.long 0x13DEF8C0
1206
vxor 22, 30, 27
1207
addi 12, 12, -128
1208
addi 11, 11, 128
1209
1210
bdnz .Loop_8x_block_dec
1211
1212
vor 30,29,29
1213
1214
.Loop_last_block_dec:
1215
cmpdi 12, 0
1216
beq aes_gcm_out
1217
1218
1219
li 10, 16
1220
divdu 10, 12, 10
1221
1222
mtctr 10
1223
1224
lwz 10,240(6)
1225
1226
cmpdi 12, 16
1227
blt Final_block_dec
1228
1229
Next_rem_block_dec:
1230
lxvb16x 15, 0, 14
1231
1232
.Loop_aes_middle_1x
1233
1234
xxlor 23+32, 10, 10
1235
1236
cmpdi 10, 10
1237
beq Do_next_1x_dec
1238
1239
1240
xxlor 24+32, 11, 11
1241
1242
.long 0x11EFBD08
1243
.long 0x11EFC508
1244
1245
xxlor 23+32, 12, 12
1246
1247
cmpdi 10, 12
1248
beq Do_next_1x_dec
1249
1250
1251
xxlor 24+32, 13, 13
1252
1253
.long 0x11EFBD08
1254
.long 0x11EFC508
1255
1256
xxlor 23+32, 14, 14
1257
1258
cmpdi 10, 14
1259
beq Do_next_1x_dec
1260
1261
Do_next_1x_dec:
1262
.long 0x11EFBD09
1263
1264
xxlxor 47, 47, 15
1265
stxvb16x 47, 0, 9
1266
addi 14, 14, 16
1267
addi 9, 9, 16
1268
1269
xxlor 28+32, 15, 15
1270
ppc_update_hash_1x
1271
1272
addi 12, 12, -16
1273
addi 11, 11, 16
1274
xxlor 19+32, 0, 0
1275
.long 0x13DEF8C0
1276
vxor 15, 30, 19
1277
1278
bdnz Next_rem_block_dec
1279
1280
cmpdi 12, 0
1281
beq aes_gcm_out
1282
1283
Final_block_dec:
1284
.Loop_aes_middle_1x
1285
1286
xxlor 23+32, 10, 10
1287
1288
cmpdi 10, 10
1289
beq Do_final_1x_dec
1290
1291
1292
xxlor 24+32, 11, 11
1293
1294
.long 0x11EFBD08
1295
.long 0x11EFC508
1296
1297
xxlor 23+32, 12, 12
1298
1299
cmpdi 10, 12
1300
beq Do_final_1x_dec
1301
1302
1303
xxlor 24+32, 13, 13
1304
1305
.long 0x11EFBD08
1306
.long 0x11EFC508
1307
1308
xxlor 23+32, 14, 14
1309
1310
cmpdi 10, 14
1311
beq Do_final_1x_dec
1312
1313
Do_final_1x_dec:
1314
.long 0x11EFBD09
1315
1316
lxvb16x 15, 0, 14
1317
xxlxor 47, 47, 15
1318
1319
1320
li 15, 16
1321
sub 15, 15, 12
1322
1323
vspltisb 16,-1
1324
vspltisb 17,0
1325
li 10, 192
1326
stvx 16, 10, 1
1327
addi 10, 10, 16
1328
stvx 17, 10, 1
1329
1330
addi 10, 1, 192
1331
lxvb16x 16, 15, 10
1332
xxland 47, 47, 16
1333
1334
xxlor 28+32, 15, 15
1335
ppc_update_hash_1x
1336
1337
1338
bl Write_partial_block
1339
1340
b aes_gcm_out
1341
1342