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