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