Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/crypto/openssl/powerpc64/chachap10-ppc.S
39482 views
1
/* Do not modify. This file is auto-generated from chachap10-ppc.pl. */
2
3
.globl ChaCha20_ctr32_vsx_p10
4
.type ChaCha20_ctr32_vsx_p10,@function
5
.align 5
6
ChaCha20_ctr32_vsx_p10:
7
.localentry ChaCha20_ctr32_vsx_p10,0
8
9
cmpldi 5,255
10
ble .Not_greater_than_8x
11
b ChaCha20_ctr32_vsx_8x
12
.Not_greater_than_8x:
13
stdu 1,-224(1)
14
mflr 0
15
li 10,127
16
li 11,143
17
li 12,-1
18
stvx 26,10,1
19
addi 10,10,32
20
stvx 27,11,1
21
addi 11,11,32
22
stvx 28,10,1
23
addi 10,10,32
24
stvx 29,11,1
25
addi 11,11,32
26
stvx 30,10,1
27
stvx 31,11,1
28
stw 12,220(1)
29
li 12,-4096+63
30
std 0, 240(1)
31
or 12,12,12
32
33
bl .Lconsts
34
.long 0x7E006619
35
addi 12,12,0x70
36
li 8,16
37
li 9,32
38
li 10,48
39
li 11,64
40
41
.long 0x7E203619
42
.long 0x7E483619
43
.long 0x7E603E19
44
45
vxor 27,27,27
46
.long 0x7F8B6619
47
vspltw 26,19,0
48
vsldoi 19,19,27,4
49
vsldoi 19,27,19,12
50
vadduwm 26,26,28
51
52
lvsl 31,0,8
53
vspltisb 27,3
54
vxor 31,31,27
55
56
li 0,10
57
mtctr 0
58
b .Loop_outer_vsx
59
60
.align 5
61
.Loop_outer_vsx:
62
lvx 0,0,12
63
lvx 1,8,12
64
lvx 2,9,12
65
lvx 3,10,12
66
67
vspltw 4,17,0
68
vspltw 5,17,1
69
vspltw 6,17,2
70
vspltw 7,17,3
71
72
vspltw 8,18,0
73
vspltw 9,18,1
74
vspltw 10,18,2
75
vspltw 11,18,3
76
77
vor 12,26,26
78
vspltw 13,19,1
79
vspltw 14,19,2
80
vspltw 15,19,3
81
82
vspltisw 27,-16
83
vspltisw 28,12
84
vspltisw 29,8
85
vspltisw 30,7
86
87
.Loop_vsx_4x:
88
vadduwm 0,0,4
89
vadduwm 1,1,5
90
vadduwm 2,2,6
91
vadduwm 3,3,7
92
vxor 12,12,0
93
vxor 13,13,1
94
vxor 14,14,2
95
vxor 15,15,3
96
vrlw 12,12,27
97
vrlw 13,13,27
98
vrlw 14,14,27
99
vrlw 15,15,27
100
vadduwm 8,8,12
101
vadduwm 9,9,13
102
vadduwm 10,10,14
103
vadduwm 11,11,15
104
vxor 4,4,8
105
vxor 5,5,9
106
vxor 6,6,10
107
vxor 7,7,11
108
vrlw 4,4,28
109
vrlw 5,5,28
110
vrlw 6,6,28
111
vrlw 7,7,28
112
vadduwm 0,0,4
113
vadduwm 1,1,5
114
vadduwm 2,2,6
115
vadduwm 3,3,7
116
vxor 12,12,0
117
vxor 13,13,1
118
vxor 14,14,2
119
vxor 15,15,3
120
vrlw 12,12,29
121
vrlw 13,13,29
122
vrlw 14,14,29
123
vrlw 15,15,29
124
vadduwm 8,8,12
125
vadduwm 9,9,13
126
vadduwm 10,10,14
127
vadduwm 11,11,15
128
vxor 4,4,8
129
vxor 5,5,9
130
vxor 6,6,10
131
vxor 7,7,11
132
vrlw 4,4,30
133
vrlw 5,5,30
134
vrlw 6,6,30
135
vrlw 7,7,30
136
vadduwm 0,0,5
137
vadduwm 1,1,6
138
vadduwm 2,2,7
139
vadduwm 3,3,4
140
vxor 15,15,0
141
vxor 12,12,1
142
vxor 13,13,2
143
vxor 14,14,3
144
vrlw 15,15,27
145
vrlw 12,12,27
146
vrlw 13,13,27
147
vrlw 14,14,27
148
vadduwm 10,10,15
149
vadduwm 11,11,12
150
vadduwm 8,8,13
151
vadduwm 9,9,14
152
vxor 5,5,10
153
vxor 6,6,11
154
vxor 7,7,8
155
vxor 4,4,9
156
vrlw 5,5,28
157
vrlw 6,6,28
158
vrlw 7,7,28
159
vrlw 4,4,28
160
vadduwm 0,0,5
161
vadduwm 1,1,6
162
vadduwm 2,2,7
163
vadduwm 3,3,4
164
vxor 15,15,0
165
vxor 12,12,1
166
vxor 13,13,2
167
vxor 14,14,3
168
vrlw 15,15,29
169
vrlw 12,12,29
170
vrlw 13,13,29
171
vrlw 14,14,29
172
vadduwm 10,10,15
173
vadduwm 11,11,12
174
vadduwm 8,8,13
175
vadduwm 9,9,14
176
vxor 5,5,10
177
vxor 6,6,11
178
vxor 7,7,8
179
vxor 4,4,9
180
vrlw 5,5,30
181
vrlw 6,6,30
182
vrlw 7,7,30
183
vrlw 4,4,30
184
185
bdnz .Loop_vsx_4x
186
187
vadduwm 12,12,26
188
189
.long 0x13600F8C
190
.long 0x13821F8C
191
.long 0x10000E8C
192
.long 0x10421E8C
193
.long 0x13A42F8C
194
.long 0x13C63F8C
195
.long 0xF0201057
196
.long 0xF0601357
197
.long 0xF01BE057
198
.long 0xF05BE357
199
200
.long 0x10842E8C
201
.long 0x10C63E8C
202
.long 0x13684F8C
203
.long 0x138A5F8C
204
.long 0xF0A43057
205
.long 0xF0E43357
206
.long 0xF09DF057
207
.long 0xF0DDF357
208
209
.long 0x11084E8C
210
.long 0x114A5E8C
211
.long 0x13AC6F8C
212
.long 0x13CE7F8C
213
.long 0xF1285057
214
.long 0xF1685357
215
.long 0xF11BE057
216
.long 0xF15BE357
217
218
.long 0x118C6E8C
219
.long 0x11CE7E8C
220
vspltisw 27,4
221
vadduwm 26,26,27
222
.long 0xF1AC7057
223
.long 0xF1EC7357
224
.long 0xF19DF057
225
.long 0xF1DDF357
226
227
vadduwm 0,0,16
228
vadduwm 4,4,17
229
vadduwm 8,8,18
230
vadduwm 12,12,19
231
232
vperm 0,0,0,31
233
vperm 4,4,4,31
234
vperm 8,8,8,31
235
vperm 12,12,12,31
236
237
cmpldi 5,0x40
238
blt .Ltail_vsx
239
240
.long 0x7F602619
241
.long 0x7F882619
242
.long 0x7FA92619
243
.long 0x7FCA2619
244
245
vxor 27,27,0
246
vxor 28,28,4
247
vxor 29,29,8
248
vxor 30,30,12
249
250
.long 0x7F601F19
251
.long 0x7F881F19
252
addi 4,4,0x40
253
.long 0x7FA91F19
254
subi 5,5,0x40
255
.long 0x7FCA1F19
256
addi 3,3,0x40
257
beq .Ldone_vsx
258
259
vadduwm 0,1,16
260
vadduwm 4,5,17
261
vadduwm 8,9,18
262
vadduwm 12,13,19
263
264
vperm 0,0,0,31
265
vperm 4,4,4,31
266
vperm 8,8,8,31
267
vperm 12,12,12,31
268
269
cmpldi 5,0x40
270
blt .Ltail_vsx
271
272
.long 0x7F602619
273
.long 0x7F882619
274
.long 0x7FA92619
275
.long 0x7FCA2619
276
277
vxor 27,27,0
278
vxor 28,28,4
279
vxor 29,29,8
280
vxor 30,30,12
281
282
.long 0x7F601F19
283
.long 0x7F881F19
284
addi 4,4,0x40
285
.long 0x7FA91F19
286
subi 5,5,0x40
287
.long 0x7FCA1F19
288
addi 3,3,0x40
289
beq .Ldone_vsx
290
291
vadduwm 0,2,16
292
vadduwm 4,6,17
293
vadduwm 8,10,18
294
vadduwm 12,14,19
295
296
vperm 0,0,0,31
297
vperm 4,4,4,31
298
vperm 8,8,8,31
299
vperm 12,12,12,31
300
301
cmpldi 5,0x40
302
blt .Ltail_vsx
303
304
.long 0x7F602619
305
.long 0x7F882619
306
.long 0x7FA92619
307
.long 0x7FCA2619
308
309
vxor 27,27,0
310
vxor 28,28,4
311
vxor 29,29,8
312
vxor 30,30,12
313
314
.long 0x7F601F19
315
.long 0x7F881F19
316
addi 4,4,0x40
317
.long 0x7FA91F19
318
subi 5,5,0x40
319
.long 0x7FCA1F19
320
addi 3,3,0x40
321
beq .Ldone_vsx
322
323
vadduwm 0,3,16
324
vadduwm 4,7,17
325
vadduwm 8,11,18
326
vadduwm 12,15,19
327
328
vperm 0,0,0,31
329
vperm 4,4,4,31
330
vperm 8,8,8,31
331
vperm 12,12,12,31
332
333
cmpldi 5,0x40
334
blt .Ltail_vsx
335
336
.long 0x7F602619
337
.long 0x7F882619
338
.long 0x7FA92619
339
.long 0x7FCA2619
340
341
vxor 27,27,0
342
vxor 28,28,4
343
vxor 29,29,8
344
vxor 30,30,12
345
346
.long 0x7F601F19
347
.long 0x7F881F19
348
addi 4,4,0x40
349
.long 0x7FA91F19
350
subi 5,5,0x40
351
.long 0x7FCA1F19
352
addi 3,3,0x40
353
mtctr 0
354
bne .Loop_outer_vsx
355
356
.Ldone_vsx:
357
lwz 12,220(1)
358
li 10,127
359
li 11,143
360
ld 0, 240(1)
361
or 12,12,12
362
lvx 26,10,1
363
addi 10,10,32
364
lvx 27,11,1
365
addi 11,11,32
366
lvx 28,10,1
367
addi 10,10,32
368
lvx 29,11,1
369
addi 11,11,32
370
lvx 30,10,1
371
lvx 31,11,1
372
mtlr 0
373
addi 1,1,224
374
blr
375
376
.align 4
377
.Ltail_vsx:
378
addi 11,1,48
379
mtctr 5
380
.long 0x7C005F19
381
.long 0x7C885F19
382
.long 0x7D095F19
383
.long 0x7D8A5F19
384
subi 12,11,1
385
subi 4,4,1
386
subi 3,3,1
387
388
.Loop_tail_vsx:
389
lbzu 6,1(12)
390
lbzu 7,1(4)
391
xor 6,6,7
392
stbu 6,1(3)
393
bdnz .Loop_tail_vsx
394
395
.long 0x7E005F19
396
.long 0x7E085F19
397
.long 0x7E095F19
398
.long 0x7E0A5F19
399
400
b .Ldone_vsx
401
.long 0
402
.byte 0,12,0x04,1,0x80,0,5,0
403
.long 0
404
.size ChaCha20_ctr32_vsx_p10,.-ChaCha20_ctr32_vsx_p10
405
406
.globl ChaCha20_ctr32_vsx_8x
407
.type ChaCha20_ctr32_vsx_8x,@function
408
.align 5
409
ChaCha20_ctr32_vsx_8x:
410
.localentry ChaCha20_ctr32_vsx_8x,0
411
412
stdu 1,-256(1)
413
mflr 0
414
li 10,127
415
li 11,143
416
li 12,-1
417
stvx 24,10,1
418
addi 10,10,32
419
stvx 25,11,1
420
addi 11,11,32
421
stvx 26,10,1
422
addi 10,10,32
423
stvx 27,11,1
424
addi 11,11,32
425
stvx 28,10,1
426
addi 10,10,32
427
stvx 29,11,1
428
addi 11,11,32
429
stvx 30,10,1
430
stvx 31,11,1
431
stw 12,252(1)
432
li 12,-4096+63
433
std 0, 272(1)
434
or 12,12,12
435
436
bl .Lconsts
437
438
.long 0x7F606619
439
addi 12,12,0x70
440
li 8,16
441
li 9,32
442
li 10,48
443
li 11,64
444
445
vspltisw 16,-16
446
vspltisw 20,12
447
vspltisw 24,8
448
vspltisw 28,7
449
450
lvx 0,0,12
451
lvx 1,8,12
452
lvx 2,9,12
453
lvx 3,10,12
454
455
.long 0xF1308496
456
.long 0xF154A496
457
.long 0xF178C496
458
.long 0xF19CE496
459
.long 0xF2C00496
460
.long 0xF2E10C96
461
.long 0xF3021496
462
.long 0xF3231C96
463
464
.long 0x7F003619
465
.long 0x7F283619
466
.long 0x7F403E19
467
vspltisw 30,4
468
469
470
vxor 29,29,29
471
.long 0x7F8B6619
472
vspltw 2,26,0
473
vsldoi 26,26,29,4
474
vsldoi 26,29,26,12
475
vadduwm 28,2,28
476
vadduwm 30,28,30
477
vspltw 0,25,2
478
479
lvsl 31,0,8
480
vspltisb 23,3
481
vxor 31,31,23
482
.long 0xF35FFC96
483
484
.long 0xF01BDC96
485
.long 0xF038C496
486
.long 0xF059CC96
487
.long 0xF07AD496
488
.long 0xF09CE496
489
.long 0xF0BEF496
490
.long 0xF1000496
491
492
li 0,10
493
mtctr 0
494
b .Loop_outer_vsx_8x
495
496
.align 5
497
.Loop_outer_vsx_8x:
498
.long 0xF016B491
499
.long 0xF037BC91
500
.long 0xF058C491
501
.long 0xF079CC91
502
.long 0xF216B491
503
.long 0xF237BC91
504
.long 0xF258C491
505
.long 0xF279CC91
506
507
vspltw 4,24,0
508
vspltw 5,24,1
509
vspltw 6,24,2
510
vspltw 7,24,3
511
vspltw 20,24,0
512
vspltw 21,24,1
513
vspltw 22,24,2
514
vspltw 23,24,3
515
516
vspltw 8,25,0
517
vspltw 9,25,1
518
vspltw 10,25,2
519
vspltw 11,25,3
520
vspltw 24,25,0
521
vspltw 27,25,3
522
vspltw 25,25,1
523
524
.long 0xF1842491
525
vspltw 13,26,1
526
vspltw 14,26,2
527
vspltw 15,26,3
528
.long 0xF3852C91
529
vspltw 29,26,1
530
vspltw 30,26,2
531
vspltw 31,26,3
532
.long 0xF3484491
533
534
.Loop_vsx_8x:
535
.long 0xF1FBDC96
536
.long 0xF3694C91
537
vadduwm 0,0,4
538
vadduwm 1,1,5
539
vadduwm 2,2,6
540
vadduwm 3,3,7
541
vadduwm 16,16,20
542
vadduwm 17,17,21
543
vadduwm 18,18,22
544
vadduwm 19,19,23
545
vxor 12,12,0
546
vxor 13,13,1
547
vxor 14,14,2
548
vxor 15,15,3
549
vxor 28,28,16
550
vxor 29,29,17
551
vxor 30,30,18
552
vxor 31,31,19
553
vrlw 12,12,27
554
vrlw 13,13,27
555
vrlw 14,14,27
556
vrlw 15,15,27
557
vrlw 28,28,27
558
vrlw 29,29,27
559
vrlw 30,30,27
560
vrlw 31,31,27
561
.long 0xF1B39C96
562
.long 0xF36F7C91
563
.long 0xF26A5491
564
vadduwm 8,8,12
565
vadduwm 9,9,13
566
vadduwm 10,10,14
567
vadduwm 11,11,15
568
vadduwm 24,24,28
569
vadduwm 25,25,29
570
vadduwm 26,26,30
571
vadduwm 27,27,31
572
vxor 4,4,8
573
vxor 5,5,9
574
vxor 6,6,10
575
vxor 7,7,11
576
vxor 20,20,24
577
vxor 21,21,25
578
vxor 22,22,26
579
vxor 23,23,27
580
vrlw 4,4,19
581
vrlw 5,5,19
582
vrlw 6,6,19
583
vrlw 7,7,19
584
vrlw 20,20,19
585
vrlw 21,21,19
586
vrlw 22,22,19
587
vrlw 23,23,19
588
.long 0xF26D6C91
589
.long 0xF1FBDC96
590
.long 0xF36B5C91
591
vadduwm 0,0,4
592
vadduwm 1,1,5
593
vadduwm 2,2,6
594
vadduwm 3,3,7
595
vadduwm 16,16,20
596
vadduwm 17,17,21
597
vadduwm 18,18,22
598
vadduwm 19,19,23
599
vxor 12,12,0
600
vxor 13,13,1
601
vxor 14,14,2
602
vxor 15,15,3
603
vxor 28,28,16
604
vxor 29,29,17
605
vxor 30,30,18
606
vxor 31,31,19
607
vrlw 12,12,27
608
vrlw 13,13,27
609
vrlw 14,14,27
610
vrlw 15,15,27
611
vrlw 28,28,27
612
vrlw 29,29,27
613
vrlw 30,30,27
614
vrlw 31,31,27
615
.long 0xF36F7C91
616
.long 0xF1B39C96
617
.long 0xF26C6491
618
vadduwm 8,8,12
619
vadduwm 9,9,13
620
vadduwm 10,10,14
621
vadduwm 11,11,15
622
vadduwm 24,24,28
623
vadduwm 25,25,29
624
vadduwm 26,26,30
625
vadduwm 27,27,31
626
vxor 4,4,8
627
vxor 5,5,9
628
vxor 6,6,10
629
vxor 7,7,11
630
vxor 20,20,24
631
vxor 21,21,25
632
vxor 22,22,26
633
vxor 23,23,27
634
vrlw 4,4,19
635
vrlw 5,5,19
636
vrlw 6,6,19
637
vrlw 7,7,19
638
vrlw 20,20,19
639
vrlw 21,21,19
640
vrlw 22,22,19
641
vrlw 23,23,19
642
.long 0xF26D6C91
643
.long 0xF1F9CC96
644
.long 0xF3294C91
645
vadduwm 0,0,5
646
vadduwm 1,1,6
647
vadduwm 2,2,7
648
vadduwm 3,3,4
649
vadduwm 16,16,21
650
vadduwm 17,17,22
651
vadduwm 18,18,23
652
vadduwm 19,19,20
653
vxor 15,15,0
654
vxor 12,12,1
655
vxor 13,13,2
656
vxor 14,14,3
657
vxor 31,31,16
658
vxor 28,28,17
659
vxor 29,29,18
660
vxor 30,30,19
661
vrlw 15,15,25
662
vrlw 12,12,25
663
vrlw 13,13,25
664
vrlw 14,14,25
665
vrlw 31,31,25
666
vrlw 28,28,25
667
vrlw 29,29,25
668
vrlw 30,30,25
669
.long 0xF1B39C96
670
.long 0xF32F7C91
671
.long 0xF26A5491
672
vadduwm 10,10,15
673
vadduwm 11,11,12
674
vadduwm 8,8,13
675
vadduwm 9,9,14
676
vadduwm 26,26,31
677
vadduwm 27,27,28
678
vadduwm 24,24,29
679
vadduwm 25,25,30
680
vxor 5,5,10
681
vxor 6,6,11
682
vxor 7,7,8
683
vxor 4,4,9
684
vxor 21,21,26
685
vxor 22,22,27
686
vxor 23,23,24
687
vxor 20,20,25
688
vrlw 5,5,19
689
vrlw 6,6,19
690
vrlw 7,7,19
691
vrlw 4,4,19
692
vrlw 21,21,19
693
vrlw 22,22,19
694
vrlw 23,23,19
695
vrlw 20,20,19
696
.long 0xF26D6C91
697
.long 0xF1F9CC96
698
.long 0xF32B5C91
699
vadduwm 0,0,5
700
vadduwm 1,1,6
701
vadduwm 2,2,7
702
vadduwm 3,3,4
703
vadduwm 16,16,21
704
vadduwm 17,17,22
705
vadduwm 18,18,23
706
vadduwm 19,19,20
707
vxor 15,15,0
708
vxor 12,12,1
709
vxor 13,13,2
710
vxor 14,14,3
711
vxor 31,31,16
712
vxor 28,28,17
713
vxor 29,29,18
714
vxor 30,30,19
715
vrlw 15,15,25
716
vrlw 12,12,25
717
vrlw 13,13,25
718
vrlw 14,14,25
719
vrlw 31,31,25
720
vrlw 28,28,25
721
vrlw 29,29,25
722
vrlw 30,30,25
723
.long 0xF32F7C91
724
.long 0xF1B39C96
725
.long 0xF26C6491
726
vadduwm 10,10,15
727
vadduwm 11,11,12
728
vadduwm 8,8,13
729
vadduwm 9,9,14
730
vadduwm 26,26,31
731
vadduwm 27,27,28
732
vadduwm 24,24,29
733
vadduwm 25,25,30
734
vxor 5,5,10
735
vxor 6,6,11
736
vxor 7,7,8
737
vxor 4,4,9
738
vxor 21,21,26
739
vxor 22,22,27
740
vxor 23,23,24
741
vxor 20,20,25
742
vrlw 5,5,19
743
vrlw 6,6,19
744
vrlw 7,7,19
745
vrlw 4,4,19
746
vrlw 21,21,19
747
vrlw 22,22,19
748
vrlw 23,23,19
749
vrlw 20,20,19
750
.long 0xF26D6C91
751
752
bdnz .Loop_vsx_8x
753
.long 0xF1BCE496
754
.long 0xF1DDEC96
755
.long 0xF1FEF496
756
.long 0xF21FFC96
757
758
.long 0xF258C496
759
.long 0xF279CC96
760
.long 0xF29AD496
761
.long 0xF2BBDC96
762
763
.long 0xF0D6B496
764
.long 0xF0F7BC96
765
.long 0xF3FAD491
766
767
.long 0xF3600491
768
.long 0xF3010C91
769
.long 0xF3221491
770
.long 0xF3431C91
771
.long 0xF2C42491
772
773
774
.long 0x12E00F8C
775
.long 0x13821F8C
776
.long 0x10000E8C
777
.long 0x10421E8C
778
779
.long 0x13A42F8C
780
.long 0x13C63F8C
781
.long 0x10842E8C
782
.long 0x10C63E8C
783
784
vadduwm 12,12,22
785
786
.long 0xF0201057
787
.long 0xF0601357
788
.long 0xF017E057
789
.long 0xF057E357
790
.long 0xF0A43057
791
.long 0xF0E43357
792
.long 0xF09DF057
793
.long 0xF0DDF357
794
795
.long 0x12E84F8C
796
.long 0x138A5F8C
797
.long 0x11084E8C
798
.long 0x114A5E8C
799
.long 0x13AC6F8C
800
.long 0x13CE7F8C
801
.long 0x118C6E8C
802
.long 0x11CE7E8C
803
804
.long 0xF1285057
805
.long 0xF1685357
806
.long 0xF117E057
807
.long 0xF157E357
808
.long 0xF1AC7057
809
.long 0xF1EC7357
810
.long 0xF19DF057
811
.long 0xF1DDF357
812
813
vspltisw 23,8
814
vadduwm 22,22,23
815
.long 0xF096B496
816
817
vadduwm 0,0,27
818
vadduwm 4,4,24
819
vadduwm 8,8,25
820
vadduwm 12,12,26
821
822
vperm 0,0,0,31
823
vperm 4,4,4,31
824
vperm 8,8,8,31
825
vperm 12,12,12,31
826
827
cmpldi 5,0x40
828
blt .Ltail_vsx_8x
829
830
.long 0x7EE02619
831
.long 0x7F882619
832
.long 0x7FA92619
833
.long 0x7FCA2619
834
835
vxor 23,23,0
836
vxor 28,28,4
837
vxor 29,29,8
838
vxor 30,30,12
839
840
.long 0x7EE01F19
841
.long 0x7F881F19
842
addi 4,4,0x40
843
.long 0x7FA91F19
844
subi 5,5,0x40
845
.long 0x7FCA1F19
846
addi 3,3,0x40
847
beq .Ldone_vsx_8x
848
849
vadduwm 0,1,27
850
vadduwm 4,5,24
851
vadduwm 8,9,25
852
vadduwm 12,13,26
853
854
vperm 0,0,0,31
855
vperm 4,4,4,31
856
vperm 8,8,8,31
857
vperm 12,12,12,31
858
859
cmpldi 5,0x40
860
blt .Ltail_vsx_8x
861
862
.long 0x7EE02619
863
.long 0x7F882619
864
.long 0x7FA92619
865
.long 0x7FCA2619
866
867
vxor 23,23,0
868
vxor 28,28,4
869
vxor 29,29,8
870
vxor 30,30,12
871
872
.long 0x7EE01F19
873
.long 0x7F881F19
874
addi 4,4,0x40
875
.long 0x7FA91F19
876
subi 5,5,0x40
877
.long 0x7FCA1F19
878
addi 3,3,0x40
879
beq .Ldone_vsx_8x
880
881
vadduwm 0,2,27
882
vadduwm 4,6,24
883
vadduwm 8,10,25
884
vadduwm 12,14,26
885
886
vperm 0,0,0,31
887
vperm 4,4,4,31
888
vperm 8,8,8,31
889
vperm 12,12,12,31
890
891
cmpldi 5,0x40
892
blt .Ltail_vsx_8x
893
894
.long 0x7EE02619
895
.long 0x7F882619
896
.long 0x7FA92619
897
.long 0x7FCA2619
898
899
vxor 23,23,0
900
vxor 28,28,4
901
vxor 29,29,8
902
vxor 30,30,12
903
904
.long 0x7EE01F19
905
.long 0x7F881F19
906
addi 4,4,0x40
907
.long 0x7FA91F19
908
subi 5,5,0x40
909
.long 0x7FCA1F19
910
addi 3,3,0x40
911
beq .Ldone_vsx_8x
912
913
vadduwm 0,3,27
914
vadduwm 4,7,24
915
vadduwm 8,11,25
916
vadduwm 12,15,26
917
918
vperm 0,0,0,31
919
vperm 4,4,4,31
920
vperm 8,8,8,31
921
vperm 12,12,12,31
922
923
cmpldi 5,0x40
924
blt .Ltail_vsx_8x
925
926
.long 0x7EE02619
927
.long 0x7F882619
928
.long 0x7FA92619
929
.long 0x7FCA2619
930
931
vxor 23,23,0
932
vxor 28,28,4
933
vxor 29,29,8
934
vxor 30,30,12
935
936
.long 0x7EE01F19
937
.long 0x7F881F19
938
addi 4,4,0x40
939
.long 0x7FA91F19
940
subi 5,5,0x40
941
.long 0x7FCA1F19
942
addi 3,3,0x40
943
beq .Ldone_vsx_8x
944
945
946
947
948
.long 0xF0A52C91
949
950
.long 0xF1129491
951
.long 0xF1339C91
952
.long 0xF154A491
953
.long 0xF175AC91
954
955
.long 0xF18D6C91
956
.long 0xF1AE7491
957
.long 0xF1CF7C91
958
.long 0xF1F08491
959
vadduwm 12,12,5
960
961
.long 0xF2C63491
962
.long 0xF2E73C91
963
964
965
.long 0x10908F8C
966
.long 0x13929F8C
967
.long 0x12108E8C
968
.long 0x12529E8C
969
.long 0x13B4AF8C
970
.long 0x13D6BF8C
971
.long 0x1294AE8C
972
.long 0x12D6BE8C
973
974
.long 0xF2309057
975
.long 0xF2709357
976
.long 0xF204E057
977
.long 0xF244E357
978
.long 0xF2B4B057
979
.long 0xF2F4B357
980
.long 0xF29DF057
981
.long 0xF2DDF357
982
983
.long 0x10884F8C
984
.long 0x138A5F8C
985
.long 0x11084E8C
986
.long 0x114A5E8C
987
.long 0x13AC6F8C
988
.long 0x13CE7F8C
989
.long 0x118C6E8C
990
.long 0x11CE7E8C
991
992
.long 0xF1285057
993
.long 0xF1685357
994
.long 0xF104E057
995
.long 0xF144E357
996
.long 0xF1AC7057
997
.long 0xF1EC7357
998
.long 0xF19DF057
999
.long 0xF1DDF357
1000
1001
vspltisw 4,8
1002
vadduwm 5,5,4
1003
.long 0xF0A52C96
1004
1005
vadduwm 0,16,27
1006
vadduwm 1,20,24
1007
vadduwm 2,8,25
1008
vadduwm 3,12,26
1009
1010
vperm 0,0,0,31
1011
vperm 1,1,1,31
1012
vperm 2,2,2,31
1013
vperm 3,3,3,31
1014
1015
cmpldi 5,0x40
1016
blt .Ltail_vsx_8x_1
1017
1018
.long 0x7C802619
1019
.long 0x7F882619
1020
.long 0x7FA92619
1021
.long 0x7FCA2619
1022
1023
vxor 4,4,0
1024
vxor 28,28,1
1025
vxor 29,29,2
1026
vxor 30,30,3
1027
1028
.long 0x7C801F19
1029
.long 0x7F881F19
1030
addi 4,4,0x40
1031
.long 0x7FA91F19
1032
subi 5,5,0x40
1033
.long 0x7FCA1F19
1034
addi 3,3,0x40
1035
beq .Ldone_vsx_8x
1036
1037
vadduwm 0,17,27
1038
vadduwm 1,21,24
1039
vadduwm 2,9,25
1040
vadduwm 3,13,26
1041
1042
vperm 0,0,0,31
1043
vperm 1,1,1,31
1044
vperm 2,2,2,31
1045
vperm 3,3,3,31
1046
1047
cmpldi 5,0x40
1048
blt .Ltail_vsx_8x_1
1049
1050
.long 0x7C802619
1051
.long 0x7F882619
1052
.long 0x7FA92619
1053
.long 0x7FCA2619
1054
1055
vxor 4,4,0
1056
vxor 28,28,1
1057
vxor 29,29,2
1058
vxor 30,30,3
1059
1060
.long 0x7C801F19
1061
.long 0x7F881F19
1062
addi 4,4,0x40
1063
.long 0x7FA91F19
1064
subi 5,5,0x40
1065
.long 0x7FCA1F19
1066
addi 3,3,0x40
1067
beq .Ldone_vsx_8x
1068
1069
vadduwm 0,18,27
1070
vadduwm 1,22,24
1071
vadduwm 2,10,25
1072
vadduwm 3,14,26
1073
1074
vperm 0,0,0,31
1075
vperm 1,1,1,31
1076
vperm 2,2,2,31
1077
vperm 3,3,3,31
1078
1079
cmpldi 5,0x40
1080
blt .Ltail_vsx_8x_1
1081
1082
.long 0x7C802619
1083
.long 0x7F882619
1084
.long 0x7FA92619
1085
.long 0x7FCA2619
1086
1087
vxor 4,4,0
1088
vxor 28,28,1
1089
vxor 29,29,2
1090
vxor 30,30,3
1091
1092
.long 0x7C801F19
1093
.long 0x7F881F19
1094
addi 4,4,0x40
1095
.long 0x7FA91F19
1096
subi 5,5,0x40
1097
.long 0x7FCA1F19
1098
addi 3,3,0x40
1099
beq .Ldone_vsx_8x
1100
1101
vadduwm 0,19,27
1102
vadduwm 1,23,24
1103
vadduwm 2,11,25
1104
vadduwm 3,15,26
1105
1106
vperm 0,0,0,31
1107
vperm 1,1,1,31
1108
vperm 2,2,2,31
1109
vperm 3,3,3,31
1110
1111
cmpldi 5,0x40
1112
blt .Ltail_vsx_8x_1
1113
1114
.long 0x7C802619
1115
.long 0x7F882619
1116
.long 0x7FA92619
1117
.long 0x7FCA2619
1118
1119
vxor 4,4,0
1120
vxor 28,28,1
1121
vxor 29,29,2
1122
vxor 30,30,3
1123
1124
.long 0x7C801F19
1125
.long 0x7F881F19
1126
addi 4,4,0x40
1127
.long 0x7FA91F19
1128
subi 5,5,0x40
1129
.long 0x7FCA1F19
1130
addi 3,3,0x40
1131
beq .Ldone_vsx_8x
1132
1133
mtctr 0
1134
bne .Loop_outer_vsx_8x
1135
1136
.Ldone_vsx_8x:
1137
lwz 12,252(1)
1138
li 10,127
1139
li 11,143
1140
ld 0, 272(1)
1141
or 12,12,12
1142
lvx 24,10,1
1143
addi 10,10,32
1144
lvx 25,11,1
1145
addi 11,11,32
1146
lvx 26,10,1
1147
addi 10,10,32
1148
lvx 27,11,1
1149
addi 11,11,32
1150
lvx 28,10,1
1151
addi 10,10,32
1152
lvx 29,11,1
1153
addi 11,11,32
1154
lvx 30,10,1
1155
lvx 31,11,1
1156
mtlr 0
1157
addi 1,1,256
1158
blr
1159
1160
.align 4
1161
.Ltail_vsx_8x:
1162
addi 11,1,48
1163
mtctr 5
1164
.long 0x7C005F19
1165
.long 0x7C885F19
1166
.long 0x7D095F19
1167
.long 0x7D8A5F19
1168
subi 12,11,1
1169
subi 4,4,1
1170
subi 3,3,1
1171
bl .Loop_tail_vsx_8x
1172
.Ltail_vsx_8x_1:
1173
addi 11,1,48
1174
mtctr 5
1175
.long 0x7C005F19
1176
.long 0x7C285F19
1177
.long 0x7C495F19
1178
.long 0x7C6A5F19
1179
subi 12,11,1
1180
subi 4,4,1
1181
subi 3,3,1
1182
bl .Loop_tail_vsx_8x
1183
1184
.Loop_tail_vsx_8x:
1185
lbzu 6,1(12)
1186
lbzu 7,1(4)
1187
xor 6,6,7
1188
stbu 6,1(3)
1189
bdnz .Loop_tail_vsx_8x
1190
1191
.long 0x7F605F19
1192
.long 0x7F685F19
1193
.long 0x7F695F19
1194
.long 0x7F6A5F19
1195
1196
b .Ldone_vsx_8x
1197
.long 0
1198
.byte 0,12,0x04,1,0x80,0,5,0
1199
.long 0
1200
.size ChaCha20_ctr32_vsx_8x,.-ChaCha20_ctr32_vsx_8x
1201
.align 5
1202
.Lconsts:
1203
mflr 0
1204
bcl 20,31,$+4
1205
mflr 12
1206
addi 12,12,56
1207
mtlr 0
1208
blr
1209
.long 0
1210
.byte 0,12,0x14,0,0,0,0,0
1211
.space 28
1212
.Lsigma:
1213
.long 0x61707865,0x3320646e,0x79622d32,0x6b206574
1214
.long 1,0,0,0
1215
.long 2,0,0,0
1216
.long 3,0,0,0
1217
.long 4,0,0,0
1218
.long 0x02030001,0x06070405,0x0a0b0809,0x0e0f0c0d
1219
.long 0x01020300,0x05060704,0x090a0b08,0x0d0e0f0c
1220
.long 0x61707865,0x61707865,0x61707865,0x61707865
1221
.long 0x3320646e,0x3320646e,0x3320646e,0x3320646e
1222
.long 0x79622d32,0x79622d32,0x79622d32,0x79622d32
1223
.long 0x6b206574,0x6b206574,0x6b206574,0x6b206574
1224
.long 0,1,2,3
1225
.long 0x03020100,0x07060504,0x0b0a0908,0x0f0e0d0c
1226
.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
1227
.align 2
1228
.align 2
1229
1230