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