Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/crypto/openssl/powerpc/chacha-ppc.S
39482 views
1
/* Do not modify. This file is auto-generated from chacha-ppc.pl. */
2
.machine "any"
3
.text
4
5
.globl ChaCha20_ctr32_int
6
.type ChaCha20_ctr32_int,@function
7
.align 5
8
ChaCha20_ctr32_int:
9
__ChaCha20_ctr32_int:
10
cmplwi 5,0
11
.long 0x4DC20020
12
13
stwu 1,-160(1)
14
mflr 0
15
16
stw 14,88(1)
17
stw 15,92(1)
18
stw 16,96(1)
19
stw 17,100(1)
20
stw 18,104(1)
21
stw 19,108(1)
22
stw 20,112(1)
23
stw 21,116(1)
24
stw 22,120(1)
25
stw 23,124(1)
26
stw 24,128(1)
27
stw 25,132(1)
28
stw 26,136(1)
29
stw 27,140(1)
30
stw 28,144(1)
31
stw 29,148(1)
32
stw 30,152(1)
33
stw 31,156(1)
34
stw 0,164(1)
35
36
lwz 11,0(7)
37
lwz 12,4(7)
38
lwz 14,8(7)
39
lwz 15,12(7)
40
41
bl __ChaCha20_1x
42
43
lwz 0,164(1)
44
lwz 14,88(1)
45
lwz 15,92(1)
46
lwz 16,96(1)
47
lwz 17,100(1)
48
lwz 18,104(1)
49
lwz 19,108(1)
50
lwz 20,112(1)
51
lwz 21,116(1)
52
lwz 22,120(1)
53
lwz 23,124(1)
54
lwz 24,128(1)
55
lwz 25,132(1)
56
lwz 26,136(1)
57
lwz 27,140(1)
58
lwz 28,144(1)
59
lwz 29,148(1)
60
lwz 30,152(1)
61
lwz 31,156(1)
62
mtlr 0
63
addi 1,1,160
64
blr
65
.long 0
66
.byte 0,12,4,1,0x80,18,5,0
67
.long 0
68
.size ChaCha20_ctr32_int,.-ChaCha20_ctr32_int
69
70
.align 5
71
__ChaCha20_1x:
72
.Loop_outer:
73
lis 16,0x6170
74
lis 17,0x3320
75
lis 18,0x7962
76
lis 19,0x6b20
77
ori 16,16,0x7865
78
ori 17,17,0x646e
79
ori 18,18,0x2d32
80
ori 19,19,0x6574
81
82
li 0,10
83
lwz 20,0(6)
84
lwz 21,4(6)
85
lwz 22,8(6)
86
lwz 23,12(6)
87
lwz 24,16(6)
88
mr 28,11
89
lwz 25,20(6)
90
mr 29,12
91
lwz 26,24(6)
92
mr 30,14
93
lwz 27,28(6)
94
mr 31,15
95
96
mr 7,20
97
mr 8,21
98
mr 9,22
99
mr 10,23
100
101
mtctr 0
102
.Loop:
103
add 16,16,20
104
add 17,17,21
105
add 18,18,22
106
add 19,19,23
107
xor 28,28,16
108
xor 29,29,17
109
xor 30,30,18
110
xor 31,31,19
111
rotlwi 28,28,16
112
rotlwi 29,29,16
113
rotlwi 30,30,16
114
rotlwi 31,31,16
115
add 24,24,28
116
add 25,25,29
117
add 26,26,30
118
add 27,27,31
119
xor 20,20,24
120
xor 21,21,25
121
xor 22,22,26
122
xor 23,23,27
123
rotlwi 20,20,12
124
rotlwi 21,21,12
125
rotlwi 22,22,12
126
rotlwi 23,23,12
127
add 16,16,20
128
add 17,17,21
129
add 18,18,22
130
add 19,19,23
131
xor 28,28,16
132
xor 29,29,17
133
xor 30,30,18
134
xor 31,31,19
135
rotlwi 28,28,8
136
rotlwi 29,29,8
137
rotlwi 30,30,8
138
rotlwi 31,31,8
139
add 24,24,28
140
add 25,25,29
141
add 26,26,30
142
add 27,27,31
143
xor 20,20,24
144
xor 21,21,25
145
xor 22,22,26
146
xor 23,23,27
147
rotlwi 20,20,7
148
rotlwi 21,21,7
149
rotlwi 22,22,7
150
rotlwi 23,23,7
151
add 16,16,21
152
add 17,17,22
153
add 18,18,23
154
add 19,19,20
155
xor 31,31,16
156
xor 28,28,17
157
xor 29,29,18
158
xor 30,30,19
159
rotlwi 31,31,16
160
rotlwi 28,28,16
161
rotlwi 29,29,16
162
rotlwi 30,30,16
163
add 26,26,31
164
add 27,27,28
165
add 24,24,29
166
add 25,25,30
167
xor 21,21,26
168
xor 22,22,27
169
xor 23,23,24
170
xor 20,20,25
171
rotlwi 21,21,12
172
rotlwi 22,22,12
173
rotlwi 23,23,12
174
rotlwi 20,20,12
175
add 16,16,21
176
add 17,17,22
177
add 18,18,23
178
add 19,19,20
179
xor 31,31,16
180
xor 28,28,17
181
xor 29,29,18
182
xor 30,30,19
183
rotlwi 31,31,8
184
rotlwi 28,28,8
185
rotlwi 29,29,8
186
rotlwi 30,30,8
187
add 26,26,31
188
add 27,27,28
189
add 24,24,29
190
add 25,25,30
191
xor 21,21,26
192
xor 22,22,27
193
xor 23,23,24
194
xor 20,20,25
195
rotlwi 21,21,7
196
rotlwi 22,22,7
197
rotlwi 23,23,7
198
rotlwi 20,20,7
199
bdnz .Loop
200
201
subic 5,5,64
202
addi 16,16,0x7865
203
addi 17,17,0x646e
204
addi 18,18,0x2d32
205
addi 19,19,0x6574
206
addis 16,16,0x6170
207
addis 17,17,0x3320
208
addis 18,18,0x7962
209
addis 19,19,0x6b20
210
211
subfe. 0,0,0
212
add 20,20,7
213
lwz 7,16(6)
214
add 21,21,8
215
lwz 8,20(6)
216
add 22,22,9
217
lwz 9,24(6)
218
add 23,23,10
219
lwz 10,28(6)
220
add 24,24,7
221
add 25,25,8
222
add 26,26,9
223
add 27,27,10
224
225
add 28,28,11
226
add 29,29,12
227
add 30,30,14
228
add 31,31,15
229
addi 11,11,1
230
mr 7,16
231
rotlwi 16,16,8
232
rlwimi 16,7,24,0,7
233
rlwimi 16,7,24,16,23
234
mr 8,17
235
rotlwi 17,17,8
236
rlwimi 17,8,24,0,7
237
rlwimi 17,8,24,16,23
238
mr 9,18
239
rotlwi 18,18,8
240
rlwimi 18,9,24,0,7
241
rlwimi 18,9,24,16,23
242
mr 10,19
243
rotlwi 19,19,8
244
rlwimi 19,10,24,0,7
245
rlwimi 19,10,24,16,23
246
mr 7,20
247
rotlwi 20,20,8
248
rlwimi 20,7,24,0,7
249
rlwimi 20,7,24,16,23
250
mr 8,21
251
rotlwi 21,21,8
252
rlwimi 21,8,24,0,7
253
rlwimi 21,8,24,16,23
254
mr 9,22
255
rotlwi 22,22,8
256
rlwimi 22,9,24,0,7
257
rlwimi 22,9,24,16,23
258
mr 10,23
259
rotlwi 23,23,8
260
rlwimi 23,10,24,0,7
261
rlwimi 23,10,24,16,23
262
mr 7,24
263
rotlwi 24,24,8
264
rlwimi 24,7,24,0,7
265
rlwimi 24,7,24,16,23
266
mr 8,25
267
rotlwi 25,25,8
268
rlwimi 25,8,24,0,7
269
rlwimi 25,8,24,16,23
270
mr 9,26
271
rotlwi 26,26,8
272
rlwimi 26,9,24,0,7
273
rlwimi 26,9,24,16,23
274
mr 10,27
275
rotlwi 27,27,8
276
rlwimi 27,10,24,0,7
277
rlwimi 27,10,24,16,23
278
mr 7,28
279
rotlwi 28,28,8
280
rlwimi 28,7,24,0,7
281
rlwimi 28,7,24,16,23
282
mr 8,29
283
rotlwi 29,29,8
284
rlwimi 29,8,24,0,7
285
rlwimi 29,8,24,16,23
286
mr 9,30
287
rotlwi 30,30,8
288
rlwimi 30,9,24,0,7
289
rlwimi 30,9,24,16,23
290
mr 10,31
291
rotlwi 31,31,8
292
rlwimi 31,10,24,0,7
293
rlwimi 31,10,24,16,23
294
bne .Ltail
295
296
lwz 7,0(4)
297
lwz 8,4(4)
298
cmplwi 5,0
299
lwz 9,8(4)
300
lwz 10,12(4)
301
xor 16,16,7
302
lwz 7,16(4)
303
xor 17,17,8
304
lwz 8,20(4)
305
xor 18,18,9
306
lwz 9,24(4)
307
xor 19,19,10
308
lwz 10,28(4)
309
xor 20,20,7
310
lwz 7,32(4)
311
xor 21,21,8
312
lwz 8,36(4)
313
xor 22,22,9
314
lwz 9,40(4)
315
xor 23,23,10
316
lwz 10,44(4)
317
xor 24,24,7
318
lwz 7,48(4)
319
xor 25,25,8
320
lwz 8,52(4)
321
xor 26,26,9
322
lwz 9,56(4)
323
xor 27,27,10
324
lwz 10,60(4)
325
xor 28,28,7
326
stw 16,0(3)
327
xor 29,29,8
328
stw 17,4(3)
329
xor 30,30,9
330
stw 18,8(3)
331
xor 31,31,10
332
stw 19,12(3)
333
stw 20,16(3)
334
stw 21,20(3)
335
stw 22,24(3)
336
stw 23,28(3)
337
stw 24,32(3)
338
stw 25,36(3)
339
stw 26,40(3)
340
stw 27,44(3)
341
stw 28,48(3)
342
stw 29,52(3)
343
stw 30,56(3)
344
addi 4,4,64
345
stw 31,60(3)
346
addi 3,3,64
347
348
bne .Loop_outer
349
350
blr
351
352
.align 4
353
.Ltail:
354
addi 5,5,64
355
subi 4,4,1
356
subi 3,3,1
357
addi 7,1,24-1
358
mtctr 5
359
360
stw 16,24(1)
361
stw 17,28(1)
362
stw 18,32(1)
363
stw 19,36(1)
364
stw 20,40(1)
365
stw 21,44(1)
366
stw 22,48(1)
367
stw 23,52(1)
368
stw 24,56(1)
369
stw 25,60(1)
370
stw 26,64(1)
371
stw 27,68(1)
372
stw 28,72(1)
373
stw 29,76(1)
374
stw 30,80(1)
375
stw 31,84(1)
376
377
.Loop_tail:
378
lbzu 11,1(4)
379
lbzu 16,1(7)
380
xor 12,11,16
381
stbu 12,1(3)
382
bdnz .Loop_tail
383
384
stw 1,24(1)
385
stw 1,28(1)
386
stw 1,32(1)
387
stw 1,36(1)
388
stw 1,40(1)
389
stw 1,44(1)
390
stw 1,48(1)
391
stw 1,52(1)
392
stw 1,56(1)
393
stw 1,60(1)
394
stw 1,64(1)
395
stw 1,68(1)
396
stw 1,72(1)
397
stw 1,76(1)
398
stw 1,80(1)
399
stw 1,84(1)
400
401
blr
402
.long 0
403
.byte 0,12,0x14,0,0,0,0,0
404
405
.globl ChaCha20_ctr32_vmx
406
.type ChaCha20_ctr32_vmx,@function
407
.align 5
408
ChaCha20_ctr32_vmx:
409
cmplwi 5,256
410
blt __ChaCha20_ctr32_int
411
412
stwu 1,-320(1)
413
mflr 0
414
li 10,103
415
li 11,119
416
mfspr 12,256
417
stvx 23,10,1
418
addi 10,10,32
419
stvx 24,11,1
420
addi 11,11,32
421
stvx 25,10,1
422
addi 10,10,32
423
stvx 26,11,1
424
addi 11,11,32
425
stvx 27,10,1
426
addi 10,10,32
427
stvx 28,11,1
428
addi 11,11,32
429
stvx 29,10,1
430
addi 10,10,32
431
stvx 30,11,1
432
stvx 31,10,1
433
stw 12,244(1)
434
stw 14,248(1)
435
stw 15,252(1)
436
stw 16,256(1)
437
stw 17,260(1)
438
stw 18,264(1)
439
stw 19,268(1)
440
stw 20,272(1)
441
stw 21,276(1)
442
stw 22,280(1)
443
stw 23,284(1)
444
stw 24,288(1)
445
stw 25,292(1)
446
stw 26,296(1)
447
stw 27,300(1)
448
stw 28,304(1)
449
stw 29,308(1)
450
stw 30,312(1)
451
stw 31,316(1)
452
li 12,-4096+511
453
stw 0, 324(1)
454
mtspr 256,12
455
456
bl .Lconsts
457
li 16,16
458
li 17,32
459
li 18,48
460
li 19,64
461
li 20,31
462
li 21,15
463
464
lvx 13,0,6
465
lvsl 29,0,6
466
lvx 14,16,6
467
lvx 27,20,6
468
469
lvx 15,0,7
470
lvsl 30,0,7
471
lvx 28,21,7
472
473
lvx 12,0,12
474
lvx 17,16,12
475
lvx 18,17,12
476
lvx 19,18,12
477
lvx 23,19,12
478
479
vperm 13,13,14,29
480
vperm 14,14,27,29
481
vperm 15,15,28,30
482
483
lwz 11,0(7)
484
lwz 12,4(7)
485
vadduwm 15,15,17
486
lwz 14,8(7)
487
vadduwm 16,15,17
488
lwz 15,12(7)
489
vadduwm 17,16,17
490
491
vxor 29,29,29
492
vspltisw 26,-1
493
lvsl 24,0,4
494
lvsr 25,0,3
495
vperm 26,29,26,25
496
497
lvsl 29,0,16
498
vspltisb 30,3
499
vxor 29,29,30
500
vxor 25,25,30
501
vperm 24,24,24,29
502
503
li 0,10
504
b .Loop_outer_vmx
505
506
.align 4
507
.Loop_outer_vmx:
508
lis 16,0x6170
509
lis 17,0x3320
510
vor 0,12,12
511
lis 18,0x7962
512
lis 19,0x6b20
513
vor 4,12,12
514
ori 16,16,0x7865
515
ori 17,17,0x646e
516
vor 8,12,12
517
ori 18,18,0x2d32
518
ori 19,19,0x6574
519
vor 1,13,13
520
521
lwz 20,0(6)
522
vor 5,13,13
523
lwz 21,4(6)
524
vor 9,13,13
525
lwz 22,8(6)
526
vor 2,14,14
527
lwz 23,12(6)
528
vor 6,14,14
529
lwz 24,16(6)
530
vor 10,14,14
531
mr 28,11
532
lwz 25,20(6)
533
vor 3,15,15
534
mr 29,12
535
lwz 26,24(6)
536
vor 7,16,16
537
mr 30,14
538
lwz 27,28(6)
539
vor 11,17,17
540
mr 31,15
541
542
mr 7,20
543
mr 8,21
544
mr 9,22
545
mr 10,23
546
547
vspltisw 27,12
548
vspltisw 28,7
549
550
mtctr 0
551
nop
552
.Loop_vmx:
553
vadduwm 0,0,1
554
vadduwm 4,4,5
555
vadduwm 8,8,9
556
add 16,16,20
557
add 17,17,21
558
add 18,18,22
559
vxor 3,3,0
560
vxor 7,7,4
561
vxor 11,11,8
562
add 19,19,23
563
xor 28,28,16
564
xor 29,29,17
565
vperm 3,3,3,19
566
vperm 7,7,7,19
567
vperm 11,11,11,19
568
xor 30,30,18
569
xor 31,31,19
570
rotlwi 28,28,16
571
vadduwm 2,2,3
572
vadduwm 6,6,7
573
vadduwm 10,10,11
574
rotlwi 29,29,16
575
rotlwi 30,30,16
576
rotlwi 31,31,16
577
vxor 1,1,2
578
vxor 5,5,6
579
vxor 9,9,10
580
add 24,24,28
581
add 25,25,29
582
add 26,26,30
583
vrlw 1,1,27
584
vrlw 5,5,27
585
vrlw 9,9,27
586
add 27,27,31
587
xor 20,20,24
588
xor 21,21,25
589
vadduwm 0,0,1
590
vadduwm 4,4,5
591
vadduwm 8,8,9
592
xor 22,22,26
593
xor 23,23,27
594
rotlwi 20,20,12
595
vxor 3,3,0
596
vxor 7,7,4
597
vxor 11,11,8
598
rotlwi 21,21,12
599
rotlwi 22,22,12
600
rotlwi 23,23,12
601
vperm 3,3,3,23
602
vperm 7,7,7,23
603
vperm 11,11,11,23
604
add 16,16,20
605
add 17,17,21
606
add 18,18,22
607
vadduwm 2,2,3
608
vadduwm 6,6,7
609
vadduwm 10,10,11
610
add 19,19,23
611
xor 28,28,16
612
xor 29,29,17
613
vxor 1,1,2
614
vxor 5,5,6
615
vxor 9,9,10
616
xor 30,30,18
617
xor 31,31,19
618
rotlwi 28,28,8
619
vrlw 1,1,28
620
vrlw 5,5,28
621
vrlw 9,9,28
622
rotlwi 29,29,8
623
rotlwi 30,30,8
624
rotlwi 31,31,8
625
vsldoi 2,2,2, 16-8
626
vsldoi 6,6,6, 16-8
627
vsldoi 10,10,10, 16-8
628
add 24,24,28
629
add 25,25,29
630
add 26,26,30
631
vsldoi 1,1,1, 16-12
632
vsldoi 5,5,5, 16-12
633
vsldoi 9,9,9, 16-12
634
add 27,27,31
635
xor 20,20,24
636
xor 21,21,25
637
vsldoi 3,3,3, 16-4
638
vsldoi 7,7,7, 16-4
639
vsldoi 11,11,11, 16-4
640
xor 22,22,26
641
xor 23,23,27
642
rotlwi 20,20,7
643
rotlwi 21,21,7
644
rotlwi 22,22,7
645
rotlwi 23,23,7
646
vadduwm 0,0,1
647
vadduwm 4,4,5
648
vadduwm 8,8,9
649
add 16,16,21
650
add 17,17,22
651
add 18,18,23
652
vxor 3,3,0
653
vxor 7,7,4
654
vxor 11,11,8
655
add 19,19,20
656
xor 31,31,16
657
xor 28,28,17
658
vperm 3,3,3,19
659
vperm 7,7,7,19
660
vperm 11,11,11,19
661
xor 29,29,18
662
xor 30,30,19
663
rotlwi 31,31,16
664
vadduwm 2,2,3
665
vadduwm 6,6,7
666
vadduwm 10,10,11
667
rotlwi 28,28,16
668
rotlwi 29,29,16
669
rotlwi 30,30,16
670
vxor 1,1,2
671
vxor 5,5,6
672
vxor 9,9,10
673
add 26,26,31
674
add 27,27,28
675
add 24,24,29
676
vrlw 1,1,27
677
vrlw 5,5,27
678
vrlw 9,9,27
679
add 25,25,30
680
xor 21,21,26
681
xor 22,22,27
682
vadduwm 0,0,1
683
vadduwm 4,4,5
684
vadduwm 8,8,9
685
xor 23,23,24
686
xor 20,20,25
687
rotlwi 21,21,12
688
vxor 3,3,0
689
vxor 7,7,4
690
vxor 11,11,8
691
rotlwi 22,22,12
692
rotlwi 23,23,12
693
rotlwi 20,20,12
694
vperm 3,3,3,23
695
vperm 7,7,7,23
696
vperm 11,11,11,23
697
add 16,16,21
698
add 17,17,22
699
add 18,18,23
700
vadduwm 2,2,3
701
vadduwm 6,6,7
702
vadduwm 10,10,11
703
add 19,19,20
704
xor 31,31,16
705
xor 28,28,17
706
vxor 1,1,2
707
vxor 5,5,6
708
vxor 9,9,10
709
xor 29,29,18
710
xor 30,30,19
711
rotlwi 31,31,8
712
vrlw 1,1,28
713
vrlw 5,5,28
714
vrlw 9,9,28
715
rotlwi 28,28,8
716
rotlwi 29,29,8
717
rotlwi 30,30,8
718
vsldoi 2,2,2, 16-8
719
vsldoi 6,6,6, 16-8
720
vsldoi 10,10,10, 16-8
721
add 26,26,31
722
add 27,27,28
723
add 24,24,29
724
vsldoi 1,1,1, 16-4
725
vsldoi 5,5,5, 16-4
726
vsldoi 9,9,9, 16-4
727
add 25,25,30
728
xor 21,21,26
729
xor 22,22,27
730
vsldoi 3,3,3, 16-12
731
vsldoi 7,7,7, 16-12
732
vsldoi 11,11,11, 16-12
733
xor 23,23,24
734
xor 20,20,25
735
rotlwi 21,21,7
736
rotlwi 22,22,7
737
rotlwi 23,23,7
738
rotlwi 20,20,7
739
bdnz .Loop_vmx
740
741
subi 5,5,256
742
addi 16,16,0x7865
743
addi 17,17,0x646e
744
addi 18,18,0x2d32
745
addi 19,19,0x6574
746
addis 16,16,0x6170
747
addis 17,17,0x3320
748
addis 18,18,0x7962
749
addis 19,19,0x6b20
750
add 20,20,7
751
lwz 7,16(6)
752
add 21,21,8
753
lwz 8,20(6)
754
add 22,22,9
755
lwz 9,24(6)
756
add 23,23,10
757
lwz 10,28(6)
758
add 24,24,7
759
add 25,25,8
760
add 26,26,9
761
add 27,27,10
762
add 28,28,11
763
add 29,29,12
764
add 30,30,14
765
add 31,31,15
766
767
vadduwm 0,0,12
768
vadduwm 4,4,12
769
vadduwm 8,8,12
770
vadduwm 1,1,13
771
vadduwm 5,5,13
772
vadduwm 9,9,13
773
vadduwm 2,2,14
774
vadduwm 6,6,14
775
vadduwm 10,10,14
776
vadduwm 3,3,15
777
vadduwm 7,7,16
778
vadduwm 11,11,17
779
780
addi 11,11,4
781
vadduwm 15,15,18
782
vadduwm 16,16,18
783
vadduwm 17,17,18
784
785
mr 7,16
786
rotlwi 16,16,8
787
rlwimi 16,7,24,0,7
788
rlwimi 16,7,24,16,23
789
mr 8,17
790
rotlwi 17,17,8
791
rlwimi 17,8,24,0,7
792
rlwimi 17,8,24,16,23
793
mr 9,18
794
rotlwi 18,18,8
795
rlwimi 18,9,24,0,7
796
rlwimi 18,9,24,16,23
797
mr 10,19
798
rotlwi 19,19,8
799
rlwimi 19,10,24,0,7
800
rlwimi 19,10,24,16,23
801
mr 7,20
802
rotlwi 20,20,8
803
rlwimi 20,7,24,0,7
804
rlwimi 20,7,24,16,23
805
mr 8,21
806
rotlwi 21,21,8
807
rlwimi 21,8,24,0,7
808
rlwimi 21,8,24,16,23
809
mr 9,22
810
rotlwi 22,22,8
811
rlwimi 22,9,24,0,7
812
rlwimi 22,9,24,16,23
813
mr 10,23
814
rotlwi 23,23,8
815
rlwimi 23,10,24,0,7
816
rlwimi 23,10,24,16,23
817
mr 7,24
818
rotlwi 24,24,8
819
rlwimi 24,7,24,0,7
820
rlwimi 24,7,24,16,23
821
mr 8,25
822
rotlwi 25,25,8
823
rlwimi 25,8,24,0,7
824
rlwimi 25,8,24,16,23
825
mr 9,26
826
rotlwi 26,26,8
827
rlwimi 26,9,24,0,7
828
rlwimi 26,9,24,16,23
829
mr 10,27
830
rotlwi 27,27,8
831
rlwimi 27,10,24,0,7
832
rlwimi 27,10,24,16,23
833
mr 7,28
834
rotlwi 28,28,8
835
rlwimi 28,7,24,0,7
836
rlwimi 28,7,24,16,23
837
mr 8,29
838
rotlwi 29,29,8
839
rlwimi 29,8,24,0,7
840
rlwimi 29,8,24,16,23
841
mr 9,30
842
rotlwi 30,30,8
843
rlwimi 30,9,24,0,7
844
rlwimi 30,9,24,16,23
845
mr 10,31
846
rotlwi 31,31,8
847
rlwimi 31,10,24,0,7
848
rlwimi 31,10,24,16,23
849
lwz 7,0(4)
850
lwz 8,4(4)
851
lwz 9,8(4)
852
lwz 10,12(4)
853
xor 16,16,7
854
lwz 7,16(4)
855
xor 17,17,8
856
lwz 8,20(4)
857
xor 18,18,9
858
lwz 9,24(4)
859
xor 19,19,10
860
lwz 10,28(4)
861
xor 20,20,7
862
lwz 7,32(4)
863
xor 21,21,8
864
lwz 8,36(4)
865
xor 22,22,9
866
lwz 9,40(4)
867
xor 23,23,10
868
lwz 10,44(4)
869
xor 24,24,7
870
lwz 7,48(4)
871
xor 25,25,8
872
lwz 8,52(4)
873
xor 26,26,9
874
lwz 9,56(4)
875
xor 27,27,10
876
lwz 10,60(4)
877
xor 28,28,7
878
stw 16,0(3)
879
xor 29,29,8
880
stw 17,4(3)
881
xor 30,30,9
882
stw 18,8(3)
883
xor 31,31,10
884
stw 19,12(3)
885
addi 4,4,64
886
stw 20,16(3)
887
li 7,16
888
stw 21,20(3)
889
li 8,32
890
stw 22,24(3)
891
li 9,48
892
stw 23,28(3)
893
li 10,64
894
stw 24,32(3)
895
stw 25,36(3)
896
stw 26,40(3)
897
stw 27,44(3)
898
stw 28,48(3)
899
stw 29,52(3)
900
stw 30,56(3)
901
stw 31,60(3)
902
addi 3,3,64
903
904
lvx 27,0,4
905
lvx 28,7,4
906
lvx 29,8,4
907
lvx 30,9,4
908
lvx 31,10,4
909
addi 4,4,64
910
911
vperm 27,27,28,24
912
vperm 28,28,29,24
913
vperm 29,29,30,24
914
vperm 30,30,31,24
915
vxor 0,0,27
916
vxor 1,1,28
917
lvx 28,7,4
918
vxor 2,2,29
919
lvx 29,8,4
920
vxor 3,3,30
921
lvx 30,9,4
922
lvx 27,10,4
923
addi 4,4,64
924
li 10,63
925
vperm 0,0,0,25
926
vperm 1,1,1,25
927
vperm 2,2,2,25
928
vperm 3,3,3,25
929
930
vperm 31,31,28,24
931
vperm 28,28,29,24
932
vperm 29,29,30,24
933
vperm 30,30,27,24
934
vxor 4,4,31
935
vxor 5,5,28
936
lvx 28,7,4
937
vxor 6,6,29
938
lvx 29,8,4
939
vxor 7,7,30
940
lvx 30,9,4
941
lvx 31,10,4
942
addi 4,4,64
943
vperm 4,4,4,25
944
vperm 5,5,5,25
945
vperm 6,6,6,25
946
vperm 7,7,7,25
947
948
vperm 27,27,28,24
949
vperm 28,28,29,24
950
vperm 29,29,30,24
951
vperm 30,30,31,24
952
vxor 8,8,27
953
vxor 9,9,28
954
vxor 10,10,29
955
vxor 11,11,30
956
vperm 8,8,8,25
957
vperm 9,9,9,25
958
vperm 10,10,10,25
959
vperm 11,11,11,25
960
961
andi. 17,3,15
962
mr 16,3
963
964
vsel 27,0,1,26
965
vsel 28,1,2,26
966
vsel 29,2,3,26
967
vsel 30,3,4,26
968
vsel 1,4,5,26
969
vsel 2,5,6,26
970
vsel 3,6,7,26
971
vsel 4,7,8,26
972
vsel 5,8,9,26
973
vsel 6,9,10,26
974
vsel 7,10,11,26
975
976
977
stvx 27,7,3
978
stvx 28,8,3
979
stvx 29,9,3
980
addi 3,3,64
981
stvx 30,0,3
982
stvx 1,7,3
983
stvx 2,8,3
984
stvx 3,9,3
985
addi 3,3,64
986
stvx 4,0,3
987
stvx 5,7,3
988
stvx 6,8,3
989
stvx 7,9,3
990
addi 3,3,64
991
992
beq .Laligned_vmx
993
994
sub 18,3,17
995
li 19,0
996
.Lunaligned_tail_vmx:
997
stvebx 11,19,18
998
addi 19,19,1
999
cmpw 19,17
1000
bne .Lunaligned_tail_vmx
1001
1002
sub 18,16,17
1003
.Lunaligned_head_vmx:
1004
stvebx 0,17,18
1005
cmpwi 17,15
1006
addi 17,17,1
1007
bne .Lunaligned_head_vmx
1008
1009
cmplwi 5,255
1010
bgt .Loop_outer_vmx
1011
1012
b .Ldone_vmx
1013
1014
.align 4
1015
.Laligned_vmx:
1016
stvx 0,0,16
1017
1018
cmplwi 5,255
1019
bgt .Loop_outer_vmx
1020
nop
1021
1022
.Ldone_vmx:
1023
cmplwi 5,0
1024
bnel __ChaCha20_1x
1025
1026
lwz 12,244(1)
1027
li 10,103
1028
li 11,119
1029
mtspr 256,12
1030
lvx 23,10,1
1031
addi 10,10,32
1032
lvx 24,11,1
1033
addi 11,11,32
1034
lvx 25,10,1
1035
addi 10,10,32
1036
lvx 26,11,1
1037
addi 11,11,32
1038
lvx 27,10,1
1039
addi 10,10,32
1040
lvx 28,11,1
1041
addi 11,11,32
1042
lvx 29,10,1
1043
addi 10,10,32
1044
lvx 30,11,1
1045
lvx 31,10,1
1046
lwz 0, 324(1)
1047
lwz 14,248(1)
1048
lwz 15,252(1)
1049
lwz 16,256(1)
1050
lwz 17,260(1)
1051
lwz 18,264(1)
1052
lwz 19,268(1)
1053
lwz 20,272(1)
1054
lwz 21,276(1)
1055
lwz 22,280(1)
1056
lwz 23,284(1)
1057
lwz 24,288(1)
1058
lwz 25,292(1)
1059
lwz 26,296(1)
1060
lwz 27,300(1)
1061
lwz 28,304(1)
1062
lwz 29,308(1)
1063
lwz 30,312(1)
1064
lwz 31,316(1)
1065
mtlr 0
1066
addi 1,1,320
1067
blr
1068
.long 0
1069
.byte 0,12,0x04,1,0x80,18,5,0
1070
.long 0
1071
.size ChaCha20_ctr32_vmx,.-ChaCha20_ctr32_vmx
1072
1073
.globl ChaCha20_ctr32_vsx
1074
.type ChaCha20_ctr32_vsx,@function
1075
.align 5
1076
ChaCha20_ctr32_vsx:
1077
stwu 1,-200(1)
1078
mflr 0
1079
li 10,103
1080
li 11,119
1081
mfspr 12,256
1082
stvx 26,10,1
1083
addi 10,10,32
1084
stvx 27,11,1
1085
addi 11,11,32
1086
stvx 28,10,1
1087
addi 10,10,32
1088
stvx 29,11,1
1089
addi 11,11,32
1090
stvx 30,10,1
1091
stvx 31,11,1
1092
stw 12,196(1)
1093
li 12,-4096+63
1094
stw 0, 204(1)
1095
mtspr 256,12
1096
1097
bl .Lconsts
1098
.long 0x7E006619
1099
addi 12,12,0x50
1100
li 8,16
1101
li 9,32
1102
li 10,48
1103
li 11,64
1104
1105
.long 0x7E203619
1106
.long 0x7E483619
1107
.long 0x7E603E19
1108
1109
vxor 27,27,27
1110
.long 0x7F8B6619
1111
vspltw 26,19,0
1112
vsldoi 19,19,27,4
1113
vsldoi 19,27,19,12
1114
vadduwm 26,26,28
1115
1116
lvsl 31,0,8
1117
vspltisb 27,3
1118
vxor 31,31,27
1119
1120
li 0,10
1121
mtctr 0
1122
b .Loop_outer_vsx
1123
1124
.align 5
1125
.Loop_outer_vsx:
1126
lvx 0,0,12
1127
lvx 1,8,12
1128
lvx 2,9,12
1129
lvx 3,10,12
1130
1131
vspltw 4,17,0
1132
vspltw 5,17,1
1133
vspltw 6,17,2
1134
vspltw 7,17,3
1135
1136
vspltw 8,18,0
1137
vspltw 9,18,1
1138
vspltw 10,18,2
1139
vspltw 11,18,3
1140
1141
vor 12,26,26
1142
vspltw 13,19,1
1143
vspltw 14,19,2
1144
vspltw 15,19,3
1145
1146
vspltisw 27,-16
1147
vspltisw 28,12
1148
vspltisw 29,8
1149
vspltisw 30,7
1150
1151
.Loop_vsx:
1152
vadduwm 0,0,4
1153
vadduwm 1,1,5
1154
vadduwm 2,2,6
1155
vadduwm 3,3,7
1156
vxor 12,12,0
1157
vxor 13,13,1
1158
vxor 14,14,2
1159
vxor 15,15,3
1160
vrlw 12,12,27
1161
vrlw 13,13,27
1162
vrlw 14,14,27
1163
vrlw 15,15,27
1164
vadduwm 8,8,12
1165
vadduwm 9,9,13
1166
vadduwm 10,10,14
1167
vadduwm 11,11,15
1168
vxor 4,4,8
1169
vxor 5,5,9
1170
vxor 6,6,10
1171
vxor 7,7,11
1172
vrlw 4,4,28
1173
vrlw 5,5,28
1174
vrlw 6,6,28
1175
vrlw 7,7,28
1176
vadduwm 0,0,4
1177
vadduwm 1,1,5
1178
vadduwm 2,2,6
1179
vadduwm 3,3,7
1180
vxor 12,12,0
1181
vxor 13,13,1
1182
vxor 14,14,2
1183
vxor 15,15,3
1184
vrlw 12,12,29
1185
vrlw 13,13,29
1186
vrlw 14,14,29
1187
vrlw 15,15,29
1188
vadduwm 8,8,12
1189
vadduwm 9,9,13
1190
vadduwm 10,10,14
1191
vadduwm 11,11,15
1192
vxor 4,4,8
1193
vxor 5,5,9
1194
vxor 6,6,10
1195
vxor 7,7,11
1196
vrlw 4,4,30
1197
vrlw 5,5,30
1198
vrlw 6,6,30
1199
vrlw 7,7,30
1200
vadduwm 0,0,5
1201
vadduwm 1,1,6
1202
vadduwm 2,2,7
1203
vadduwm 3,3,4
1204
vxor 15,15,0
1205
vxor 12,12,1
1206
vxor 13,13,2
1207
vxor 14,14,3
1208
vrlw 15,15,27
1209
vrlw 12,12,27
1210
vrlw 13,13,27
1211
vrlw 14,14,27
1212
vadduwm 10,10,15
1213
vadduwm 11,11,12
1214
vadduwm 8,8,13
1215
vadduwm 9,9,14
1216
vxor 5,5,10
1217
vxor 6,6,11
1218
vxor 7,7,8
1219
vxor 4,4,9
1220
vrlw 5,5,28
1221
vrlw 6,6,28
1222
vrlw 7,7,28
1223
vrlw 4,4,28
1224
vadduwm 0,0,5
1225
vadduwm 1,1,6
1226
vadduwm 2,2,7
1227
vadduwm 3,3,4
1228
vxor 15,15,0
1229
vxor 12,12,1
1230
vxor 13,13,2
1231
vxor 14,14,3
1232
vrlw 15,15,29
1233
vrlw 12,12,29
1234
vrlw 13,13,29
1235
vrlw 14,14,29
1236
vadduwm 10,10,15
1237
vadduwm 11,11,12
1238
vadduwm 8,8,13
1239
vadduwm 9,9,14
1240
vxor 5,5,10
1241
vxor 6,6,11
1242
vxor 7,7,8
1243
vxor 4,4,9
1244
vrlw 5,5,30
1245
vrlw 6,6,30
1246
vrlw 7,7,30
1247
vrlw 4,4,30
1248
bdnz .Loop_vsx
1249
1250
vadduwm 12,12,26
1251
1252
.long 0x13600F8C
1253
.long 0x13821F8C
1254
.long 0x10000E8C
1255
.long 0x10421E8C
1256
.long 0x13A42F8C
1257
.long 0x13C63F8C
1258
.long 0xF0201057
1259
.long 0xF0601357
1260
.long 0xF01BE057
1261
.long 0xF05BE357
1262
1263
.long 0x10842E8C
1264
.long 0x10C63E8C
1265
.long 0x13684F8C
1266
.long 0x138A5F8C
1267
.long 0xF0A43057
1268
.long 0xF0E43357
1269
.long 0xF09DF057
1270
.long 0xF0DDF357
1271
1272
.long 0x11084E8C
1273
.long 0x114A5E8C
1274
.long 0x13AC6F8C
1275
.long 0x13CE7F8C
1276
.long 0xF1285057
1277
.long 0xF1685357
1278
.long 0xF11BE057
1279
.long 0xF15BE357
1280
1281
.long 0x118C6E8C
1282
.long 0x11CE7E8C
1283
vspltisw 27,4
1284
vadduwm 26,26,27
1285
.long 0xF1AC7057
1286
.long 0xF1EC7357
1287
.long 0xF19DF057
1288
.long 0xF1DDF357
1289
1290
vadduwm 0,0,16
1291
vadduwm 4,4,17
1292
vadduwm 8,8,18
1293
vadduwm 12,12,19
1294
1295
vperm 0,0,0,31
1296
vperm 4,4,4,31
1297
vperm 8,8,8,31
1298
vperm 12,12,12,31
1299
1300
cmplwi 5,0x40
1301
blt .Ltail_vsx
1302
1303
.long 0x7F602619
1304
.long 0x7F882619
1305
.long 0x7FA92619
1306
.long 0x7FCA2619
1307
1308
vxor 27,27,0
1309
vxor 28,28,4
1310
vxor 29,29,8
1311
vxor 30,30,12
1312
1313
.long 0x7F601F19
1314
.long 0x7F881F19
1315
addi 4,4,0x40
1316
.long 0x7FA91F19
1317
subi 5,5,0x40
1318
.long 0x7FCA1F19
1319
addi 3,3,0x40
1320
beq .Ldone_vsx
1321
1322
vadduwm 0,1,16
1323
vadduwm 4,5,17
1324
vadduwm 8,9,18
1325
vadduwm 12,13,19
1326
1327
vperm 0,0,0,31
1328
vperm 4,4,4,31
1329
vperm 8,8,8,31
1330
vperm 12,12,12,31
1331
1332
cmplwi 5,0x40
1333
blt .Ltail_vsx
1334
1335
.long 0x7F602619
1336
.long 0x7F882619
1337
.long 0x7FA92619
1338
.long 0x7FCA2619
1339
1340
vxor 27,27,0
1341
vxor 28,28,4
1342
vxor 29,29,8
1343
vxor 30,30,12
1344
1345
.long 0x7F601F19
1346
.long 0x7F881F19
1347
addi 4,4,0x40
1348
.long 0x7FA91F19
1349
subi 5,5,0x40
1350
.long 0x7FCA1F19
1351
addi 3,3,0x40
1352
beq .Ldone_vsx
1353
1354
vadduwm 0,2,16
1355
vadduwm 4,6,17
1356
vadduwm 8,10,18
1357
vadduwm 12,14,19
1358
1359
vperm 0,0,0,31
1360
vperm 4,4,4,31
1361
vperm 8,8,8,31
1362
vperm 12,12,12,31
1363
1364
cmplwi 5,0x40
1365
blt .Ltail_vsx
1366
1367
.long 0x7F602619
1368
.long 0x7F882619
1369
.long 0x7FA92619
1370
.long 0x7FCA2619
1371
1372
vxor 27,27,0
1373
vxor 28,28,4
1374
vxor 29,29,8
1375
vxor 30,30,12
1376
1377
.long 0x7F601F19
1378
.long 0x7F881F19
1379
addi 4,4,0x40
1380
.long 0x7FA91F19
1381
subi 5,5,0x40
1382
.long 0x7FCA1F19
1383
addi 3,3,0x40
1384
beq .Ldone_vsx
1385
1386
vadduwm 0,3,16
1387
vadduwm 4,7,17
1388
vadduwm 8,11,18
1389
vadduwm 12,15,19
1390
1391
vperm 0,0,0,31
1392
vperm 4,4,4,31
1393
vperm 8,8,8,31
1394
vperm 12,12,12,31
1395
1396
cmplwi 5,0x40
1397
blt .Ltail_vsx
1398
1399
.long 0x7F602619
1400
.long 0x7F882619
1401
.long 0x7FA92619
1402
.long 0x7FCA2619
1403
1404
vxor 27,27,0
1405
vxor 28,28,4
1406
vxor 29,29,8
1407
vxor 30,30,12
1408
1409
.long 0x7F601F19
1410
.long 0x7F881F19
1411
addi 4,4,0x40
1412
.long 0x7FA91F19
1413
subi 5,5,0x40
1414
.long 0x7FCA1F19
1415
addi 3,3,0x40
1416
mtctr 0
1417
bne .Loop_outer_vsx
1418
1419
.Ldone_vsx:
1420
lwz 12,196(1)
1421
li 10,103
1422
li 11,119
1423
lwz 0, 204(1)
1424
mtspr 256,12
1425
lvx 26,10,1
1426
addi 10,10,32
1427
lvx 27,11,1
1428
addi 11,11,32
1429
lvx 28,10,1
1430
addi 10,10,32
1431
lvx 29,11,1
1432
addi 11,11,32
1433
lvx 30,10,1
1434
lvx 31,11,1
1435
mtlr 0
1436
addi 1,1,200
1437
blr
1438
1439
.align 4
1440
.Ltail_vsx:
1441
addi 11,1,24
1442
mtctr 5
1443
.long 0x7C005F19
1444
.long 0x7C885F19
1445
.long 0x7D095F19
1446
.long 0x7D8A5F19
1447
subi 12,11,1
1448
subi 4,4,1
1449
subi 3,3,1
1450
1451
.Loop_tail_vsx:
1452
lbzu 6,1(12)
1453
lbzu 7,1(4)
1454
xor 6,6,7
1455
stbu 6,1(3)
1456
bdnz .Loop_tail_vsx
1457
1458
.long 0x7E005F19
1459
.long 0x7E085F19
1460
.long 0x7E095F19
1461
.long 0x7E0A5F19
1462
1463
b .Ldone_vsx
1464
.long 0
1465
.byte 0,12,0x04,1,0x80,0,5,0
1466
.long 0
1467
.size ChaCha20_ctr32_vsx,.-ChaCha20_ctr32_vsx
1468
.align 5
1469
.Lconsts:
1470
mflr 0
1471
bcl 20,31,$+4
1472
mflr 12
1473
addi 12,12,56
1474
mtlr 0
1475
blr
1476
.long 0
1477
.byte 0,12,0x14,0,0,0,0,0
1478
.space 28
1479
.Lsigma:
1480
.long 0x61707865,0x3320646e,0x79622d32,0x6b206574
1481
.long 1,0,0,0
1482
.long 4,0,0,0
1483
.long 0x02030001,0x06070405,0x0a0b0809,0x0e0f0c0d
1484
.long 0x01020300,0x05060704,0x090a0b08,0x0d0e0f0c
1485
.long 0x61707865,0x61707865,0x61707865,0x61707865
1486
.long 0x3320646e,0x3320646e,0x3320646e,0x3320646e
1487
.long 0x79622d32,0x79622d32,0x79622d32,0x79622d32
1488
.long 0x6b206574,0x6b206574,0x6b206574,0x6b206574
1489
.long 0,1,2,3
1490
.byte 67,104,97,67,104,97,50,48,32,102,111,114,32,80,111,119,101,114,80,67,47,65,108,116,105,86,101,99,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
1491
.align 2
1492
.align 2
1493
1494