1.machine "any" 2.text 3 4.globl ChaCha20_ctr32_int 5.type ChaCha20_ctr32_int,@function 6.align 5 7ChaCha20_ctr32_int: 8__ChaCha20_ctr32_int: 9 cmplwi 5,0 10 beqlr 11 12 stwu 1,-160(1) 13 mflr 0 14 15 stw 14,88(1) 16 stw 15,92(1) 17 stw 16,96(1) 18 stw 17,100(1) 19 stw 18,104(1) 20 stw 19,108(1) 21 stw 20,112(1) 22 stw 21,116(1) 23 stw 22,120(1) 24 stw 23,124(1) 25 stw 24,128(1) 26 stw 25,132(1) 27 stw 26,136(1) 28 stw 27,140(1) 29 stw 28,144(1) 30 stw 29,148(1) 31 stw 30,152(1) 32 stw 31,156(1) 33 stw 0,164(1) 34 35 lwz 11,0(7) 36 lwz 12,4(7) 37 lwz 14,8(7) 38 lwz 15,12(7) 39 40 bl __ChaCha20_1x 41 42 lwz 0,164(1) 43 lwz 14,88(1) 44 lwz 15,92(1) 45 lwz 16,96(1) 46 lwz 17,100(1) 47 lwz 18,104(1) 48 lwz 19,108(1) 49 lwz 20,112(1) 50 lwz 21,116(1) 51 lwz 22,120(1) 52 lwz 23,124(1) 53 lwz 24,128(1) 54 lwz 25,132(1) 55 lwz 26,136(1) 56 lwz 27,140(1) 57 lwz 28,144(1) 58 lwz 29,148(1) 59 lwz 30,152(1) 60 lwz 31,156(1) 61 mtlr 0 62 addi 1,1,160 63 blr 64.long 0 65.byte 0,12,4,1,0x80,18,5,0 66.long 0 67 68 69.align 5 70__ChaCha20_1x: 71.Loop_outer: 72 lis 16,0x6170 73 lis 17,0x3320 74 lis 18,0x7962 75 lis 19,0x6b20 76 ori 16,16,0x7865 77 ori 17,17,0x646e 78 ori 18,18,0x2d32 79 ori 19,19,0x6574 80 81 li 0,10 82 lwz 20,0(6) 83 lwz 21,4(6) 84 lwz 22,8(6) 85 lwz 23,12(6) 86 lwz 24,16(6) 87 mr 28,11 88 lwz 25,20(6) 89 mr 29,12 90 lwz 26,24(6) 91 mr 30,14 92 lwz 27,28(6) 93 mr 31,15 94 95 mr 7,20 96 mr 8,21 97 mr 9,22 98 mr 10,23 99 100 mtctr 0 101.Loop: 102 add 16,16,20 103 add 17,17,21 104 add 18,18,22 105 add 19,19,23 106 xor 28,28,16 107 xor 29,29,17 108 xor 30,30,18 109 xor 31,31,19 110 rotlwi 28,28,16 111 rotlwi 29,29,16 112 rotlwi 30,30,16 113 rotlwi 31,31,16 114 add 24,24,28 115 add 25,25,29 116 add 26,26,30 117 add 27,27,31 118 xor 20,20,24 119 xor 21,21,25 120 xor 22,22,26 121 xor 23,23,27 122 rotlwi 20,20,12 123 rotlwi 21,21,12 124 rotlwi 22,22,12 125 rotlwi 23,23,12 126 add 16,16,20 127 add 17,17,21 128 add 18,18,22 129 add 19,19,23 130 xor 28,28,16 131 xor 29,29,17 132 xor 30,30,18 133 xor 31,31,19 134 rotlwi 28,28,8 135 rotlwi 29,29,8 136 rotlwi 30,30,8 137 rotlwi 31,31,8 138 add 24,24,28 139 add 25,25,29 140 add 26,26,30 141 add 27,27,31 142 xor 20,20,24 143 xor 21,21,25 144 xor 22,22,26 145 xor 23,23,27 146 rotlwi 20,20,7 147 rotlwi 21,21,7 148 rotlwi 22,22,7 149 rotlwi 23,23,7 150 add 16,16,21 151 add 17,17,22 152 add 18,18,23 153 add 19,19,20 154 xor 31,31,16 155 xor 28,28,17 156 xor 29,29,18 157 xor 30,30,19 158 rotlwi 31,31,16 159 rotlwi 28,28,16 160 rotlwi 29,29,16 161 rotlwi 30,30,16 162 add 26,26,31 163 add 27,27,28 164 add 24,24,29 165 add 25,25,30 166 xor 21,21,26 167 xor 22,22,27 168 xor 23,23,24 169 xor 20,20,25 170 rotlwi 21,21,12 171 rotlwi 22,22,12 172 rotlwi 23,23,12 173 rotlwi 20,20,12 174 add 16,16,21 175 add 17,17,22 176 add 18,18,23 177 add 19,19,20 178 xor 31,31,16 179 xor 28,28,17 180 xor 29,29,18 181 xor 30,30,19 182 rotlwi 31,31,8 183 rotlwi 28,28,8 184 rotlwi 29,29,8 185 rotlwi 30,30,8 186 add 26,26,31 187 add 27,27,28 188 add 24,24,29 189 add 25,25,30 190 xor 21,21,26 191 xor 22,22,27 192 xor 23,23,24 193 xor 20,20,25 194 rotlwi 21,21,7 195 rotlwi 22,22,7 196 rotlwi 23,23,7 197 rotlwi 20,20,7 198 bc 16,0,.Loop 199 200 subic 5,5,64 201 addi 16,16,0x7865 202 addi 17,17,0x646e 203 addi 18,18,0x2d32 204 addi 19,19,0x6574 205 addis 16,16,0x6170 206 addis 17,17,0x3320 207 addis 18,18,0x7962 208 addis 19,19,0x6b20 209 210 subfe. 0,0,0 211 add 20,20,7 212 lwz 7,16(6) 213 add 21,21,8 214 lwz 8,20(6) 215 add 22,22,9 216 lwz 9,24(6) 217 add 23,23,10 218 lwz 10,28(6) 219 add 24,24,7 220 add 25,25,8 221 add 26,26,9 222 add 27,27,10 223 224 add 28,28,11 225 add 29,29,12 226 add 30,30,14 227 add 31,31,15 228 addi 11,11,1 229 mr 7,16 230 rotlwi 16,16,8 231 rlwimi 16,7,24,0,7 232 rlwimi 16,7,24,16,23 233 mr 8,17 234 rotlwi 17,17,8 235 rlwimi 17,8,24,0,7 236 rlwimi 17,8,24,16,23 237 mr 9,18 238 rotlwi 18,18,8 239 rlwimi 18,9,24,0,7 240 rlwimi 18,9,24,16,23 241 mr 10,19 242 rotlwi 19,19,8 243 rlwimi 19,10,24,0,7 244 rlwimi 19,10,24,16,23 245 mr 7,20 246 rotlwi 20,20,8 247 rlwimi 20,7,24,0,7 248 rlwimi 20,7,24,16,23 249 mr 8,21 250 rotlwi 21,21,8 251 rlwimi 21,8,24,0,7 252 rlwimi 21,8,24,16,23 253 mr 9,22 254 rotlwi 22,22,8 255 rlwimi 22,9,24,0,7 256 rlwimi 22,9,24,16,23 257 mr 10,23 258 rotlwi 23,23,8 259 rlwimi 23,10,24,0,7 260 rlwimi 23,10,24,16,23 261 mr 7,24 262 rotlwi 24,24,8 263 rlwimi 24,7,24,0,7 264 rlwimi 24,7,24,16,23 265 mr 8,25 266 rotlwi 25,25,8 267 rlwimi 25,8,24,0,7 268 rlwimi 25,8,24,16,23 269 mr 9,26 270 rotlwi 26,26,8 271 rlwimi 26,9,24,0,7 272 rlwimi 26,9,24,16,23 273 mr 10,27 274 rotlwi 27,27,8 275 rlwimi 27,10,24,0,7 276 rlwimi 27,10,24,16,23 277 mr 7,28 278 rotlwi 28,28,8 279 rlwimi 28,7,24,0,7 280 rlwimi 28,7,24,16,23 281 mr 8,29 282 rotlwi 29,29,8 283 rlwimi 29,8,24,0,7 284 rlwimi 29,8,24,16,23 285 mr 9,30 286 rotlwi 30,30,8 287 rlwimi 30,9,24,0,7 288 rlwimi 30,9,24,16,23 289 mr 10,31 290 rotlwi 31,31,8 291 rlwimi 31,10,24,0,7 292 rlwimi 31,10,24,16,23 293 bne .Ltail 294 295 lwz 7,0(4) 296 lwz 8,4(4) 297 cmplwi 5,0 298 lwz 9,8(4) 299 lwz 10,12(4) 300 xor 16,16,7 301 lwz 7,16(4) 302 xor 17,17,8 303 lwz 8,20(4) 304 xor 18,18,9 305 lwz 9,24(4) 306 xor 19,19,10 307 lwz 10,28(4) 308 xor 20,20,7 309 lwz 7,32(4) 310 xor 21,21,8 311 lwz 8,36(4) 312 xor 22,22,9 313 lwz 9,40(4) 314 xor 23,23,10 315 lwz 10,44(4) 316 xor 24,24,7 317 lwz 7,48(4) 318 xor 25,25,8 319 lwz 8,52(4) 320 xor 26,26,9 321 lwz 9,56(4) 322 xor 27,27,10 323 lwz 10,60(4) 324 xor 28,28,7 325 stw 16,0(3) 326 xor 29,29,8 327 stw 17,4(3) 328 xor 30,30,9 329 stw 18,8(3) 330 xor 31,31,10 331 stw 19,12(3) 332 stw 20,16(3) 333 stw 21,20(3) 334 stw 22,24(3) 335 stw 23,28(3) 336 stw 24,32(3) 337 stw 25,36(3) 338 stw 26,40(3) 339 stw 27,44(3) 340 stw 28,48(3) 341 stw 29,52(3) 342 stw 30,56(3) 343 addi 4,4,64 344 stw 31,60(3) 345 addi 3,3,64 346 347 bne .Loop_outer 348 349 blr 350 351.align 4 352.Ltail: 353 addi 5,5,64 354 subi 4,4,1 355 subi 3,3,1 356 addi 7,1,24-1 357 mtctr 5 358 359 stw 16,24(1) 360 stw 17,28(1) 361 stw 18,32(1) 362 stw 19,36(1) 363 stw 20,40(1) 364 stw 21,44(1) 365 stw 22,48(1) 366 stw 23,52(1) 367 stw 24,56(1) 368 stw 25,60(1) 369 stw 26,64(1) 370 stw 27,68(1) 371 stw 28,72(1) 372 stw 29,76(1) 373 stw 30,80(1) 374 stw 31,84(1) 375 376.Loop_tail: 377 lbzu 11,1(4) 378 lbzu 16,1(7) 379 xor 12,11,16 380 stbu 12,1(3) 381 bc 16,0,.Loop_tail 382 383 stw 1,24(1) 384 stw 1,28(1) 385 stw 1,32(1) 386 stw 1,36(1) 387 stw 1,40(1) 388 stw 1,44(1) 389 stw 1,48(1) 390 stw 1,52(1) 391 stw 1,56(1) 392 stw 1,60(1) 393 stw 1,64(1) 394 stw 1,68(1) 395 stw 1,72(1) 396 stw 1,76(1) 397 stw 1,80(1) 398 stw 1,84(1) 399 400 blr 401.long 0 402.byte 0,12,0x14,0,0,0,0,0 403 404.globl ChaCha20_ctr32_vmx 405.type ChaCha20_ctr32_vmx,@function 406.align 5 407ChaCha20_ctr32_vmx: 408 cmplwi 5,256 409 blt __ChaCha20_ctr32_int 410 411 stwu 1,-368(1) 412 mflr 0 413 li 10,103 414 li 11,119 415 mfspr 12,256 416 stvx 20,10,1 417 addi 10,10,32 418 stvx 21,11,1 419 addi 11,11,32 420 stvx 22,10,1 421 addi 10,10,32 422 stvx 23,11,1 423 addi 11,11,32 424 stvx 24,10,1 425 addi 10,10,32 426 stvx 25,11,1 427 addi 11,11,32 428 stvx 26,10,1 429 addi 10,10,32 430 stvx 27,11,1 431 addi 11,11,32 432 stvx 28,10,1 433 addi 10,10,32 434 stvx 29,11,1 435 addi 11,11,32 436 stvx 30,10,1 437 stvx 31,11,1 438 stw 12,292(1) 439 stw 14,296(1) 440 stw 15,300(1) 441 stw 16,304(1) 442 stw 17,308(1) 443 stw 18,312(1) 444 stw 19,316(1) 445 stw 20,320(1) 446 stw 21,324(1) 447 stw 22,328(1) 448 stw 23,332(1) 449 stw 24,336(1) 450 stw 25,340(1) 451 stw 26,344(1) 452 stw 27,348(1) 453 stw 28,352(1) 454 stw 29,356(1) 455 stw 30,360(1) 456 stw 31,364(1) 457 li 12,-1 458 stw 0, 372(1) 459 mtspr 256,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 16,0,6 470 lvsl 12,0,6 471 lvx 17,16,6 472 lvx 31,20,6 473 474 lvx 18,0,7 475 lvsl 13,0,7 476 lvx 27,21,7 477 478 lvx 15,0,12 479 lvx 20,16,12 480 lvx 21,17,12 481 lvx 22,18,12 482 lvx 23,19,12 483 484 vperm 16,16,17,12 485 vperm 17,17,31,12 486 vperm 18,18,27,13 487 488 lwz 11,0(7) 489 lwz 12,4(7) 490 vadduwm 18,18,20 491 lwz 14,8(7) 492 vadduwm 19,18,20 493 lwz 15,12(7) 494 vadduwm 20,19,20 495 496 vspltisw 24,-12 497 vspltisw 25,12 498 vspltisw 26,-7 499 500 501 vxor 12,12,12 502 vspltisw 30,-1 503 lvsl 28,0,4 504 lvsr 29,0,3 505 vperm 30,12,30,29 506 507 lvsl 12,0,16 508 vspltisb 13,3 509 vxor 12,12,13 510 vxor 29,29,13 511 vperm 28,28,28,12 512 513 b .Loop_outer_vmx 514 515.align 4 516.Loop_outer_vmx: 517 lis 16,0x6170 518 lis 17,0x3320 519 vor 0,15,15 520 lis 18,0x7962 521 lis 19,0x6b20 522 vor 4,15,15 523 ori 16,16,0x7865 524 ori 17,17,0x646e 525 vor 8,15,15 526 ori 18,18,0x2d32 527 ori 19,19,0x6574 528 vor 1,16,16 529 530 li 0,10 531 lwz 20,0(6) 532 vor 5,16,16 533 lwz 21,4(6) 534 vor 9,16,16 535 lwz 22,8(6) 536 vor 2,17,17 537 lwz 23,12(6) 538 vor 6,17,17 539 lwz 24,16(6) 540 vor 10,17,17 541 mr 28,11 542 lwz 25,20(6) 543 vor 3,18,18 544 mr 29,12 545 lwz 26,24(6) 546 vor 7,19,19 547 mr 30,14 548 lwz 27,28(6) 549 vor 11,20,20 550 mr 31,15 551 552 mr 7,20 553 mr 8,21 554 mr 9,22 555 mr 10,23 556 vspltisw 27,7 557 558 mtctr 0 559 nop 560.Loop_vmx: 561 vadduwm 0,0,1 562 add 16,16,20 563 vadduwm 4,4,5 564 add 17,17,21 565 vadduwm 8,8,9 566 add 18,18,22 567 vxor 3,3,0 568 add 19,19,23 569 vxor 7,7,4 570 xor 28,28,16 571 vxor 11,11,8 572 xor 29,29,17 573 vperm 3,3,3,22 574 xor 30,30,18 575 vperm 7,7,7,22 576 xor 31,31,19 577 vperm 11,11,11,22 578 rotlwi 28,28,16 579 vadduwm 2,2,3 580 rotlwi 29,29,16 581 vadduwm 6,6,7 582 rotlwi 30,30,16 583 vadduwm 10,10,11 584 rotlwi 31,31,16 585 vxor 12,1,2 586 add 24,24,28 587 vxor 13,5,6 588 add 25,25,29 589 vxor 14,9,10 590 add 26,26,30 591 vsrw 1,12,24 592 add 27,27,31 593 vsrw 5,13,24 594 xor 20,20,24 595 vsrw 9,14,24 596 xor 21,21,25 597 vslw 12,12,25 598 xor 22,22,26 599 vslw 13,13,25 600 xor 23,23,27 601 vslw 14,14,25 602 rotlwi 20,20,12 603 vor 1,1,12 604 rotlwi 21,21,12 605 vor 5,5,13 606 rotlwi 22,22,12 607 vor 9,9,14 608 rotlwi 23,23,12 609 vadduwm 0,0,1 610 add 16,16,20 611 vadduwm 4,4,5 612 add 17,17,21 613 vadduwm 8,8,9 614 add 18,18,22 615 vxor 3,3,0 616 add 19,19,23 617 vxor 7,7,4 618 xor 28,28,16 619 vxor 11,11,8 620 xor 29,29,17 621 vperm 3,3,3,23 622 xor 30,30,18 623 vperm 7,7,7,23 624 xor 31,31,19 625 vperm 11,11,11,23 626 rotlwi 28,28,8 627 vadduwm 2,2,3 628 rotlwi 29,29,8 629 vadduwm 6,6,7 630 rotlwi 30,30,8 631 vadduwm 10,10,11 632 rotlwi 31,31,8 633 vxor 12,1,2 634 add 24,24,28 635 vxor 13,5,6 636 add 25,25,29 637 vxor 14,9,10 638 add 26,26,30 639 vsrw 1,12,26 640 add 27,27,31 641 vsrw 5,13,26 642 xor 20,20,24 643 vsrw 9,14,26 644 xor 21,21,25 645 vslw 12,12,27 646 xor 22,22,26 647 vslw 13,13,27 648 xor 23,23,27 649 vslw 14,14,27 650 rotlwi 20,20,7 651 vor 1,1,12 652 rotlwi 21,21,7 653 vor 5,5,13 654 rotlwi 22,22,7 655 vor 9,9,14 656 rotlwi 23,23,7 657 vsldoi 2,2,2, 16-8 658 vsldoi 6,6,6, 16-8 659 vsldoi 10,10,10, 16-8 660 vsldoi 1,1,1, 16-12 661 vsldoi 5,5,5, 16-12 662 vsldoi 9,9,9, 16-12 663 vsldoi 3,3,3, 16-4 664 vsldoi 7,7,7, 16-4 665 vsldoi 11,11,11, 16-4 666 vadduwm 0,0,1 667 add 16,16,21 668 vadduwm 4,4,5 669 add 17,17,22 670 vadduwm 8,8,9 671 add 18,18,23 672 vxor 3,3,0 673 add 19,19,20 674 vxor 7,7,4 675 xor 31,31,16 676 vxor 11,11,8 677 xor 28,28,17 678 vperm 3,3,3,22 679 xor 29,29,18 680 vperm 7,7,7,22 681 xor 30,30,19 682 vperm 11,11,11,22 683 rotlwi 31,31,16 684 vadduwm 2,2,3 685 rotlwi 28,28,16 686 vadduwm 6,6,7 687 rotlwi 29,29,16 688 vadduwm 10,10,11 689 rotlwi 30,30,16 690 vxor 12,1,2 691 add 26,26,31 692 vxor 13,5,6 693 add 27,27,28 694 vxor 14,9,10 695 add 24,24,29 696 vsrw 1,12,24 697 add 25,25,30 698 vsrw 5,13,24 699 xor 21,21,26 700 vsrw 9,14,24 701 xor 22,22,27 702 vslw 12,12,25 703 xor 23,23,24 704 vslw 13,13,25 705 xor 20,20,25 706 vslw 14,14,25 707 rotlwi 21,21,12 708 vor 1,1,12 709 rotlwi 22,22,12 710 vor 5,5,13 711 rotlwi 23,23,12 712 vor 9,9,14 713 rotlwi 20,20,12 714 vadduwm 0,0,1 715 add 16,16,21 716 vadduwm 4,4,5 717 add 17,17,22 718 vadduwm 8,8,9 719 add 18,18,23 720 vxor 3,3,0 721 add 19,19,20 722 vxor 7,7,4 723 xor 31,31,16 724 vxor 11,11,8 725 xor 28,28,17 726 vperm 3,3,3,23 727 xor 29,29,18 728 vperm 7,7,7,23 729 xor 30,30,19 730 vperm 11,11,11,23 731 rotlwi 31,31,8 732 vadduwm 2,2,3 733 rotlwi 28,28,8 734 vadduwm 6,6,7 735 rotlwi 29,29,8 736 vadduwm 10,10,11 737 rotlwi 30,30,8 738 vxor 12,1,2 739 add 26,26,31 740 vxor 13,5,6 741 add 27,27,28 742 vxor 14,9,10 743 add 24,24,29 744 vsrw 1,12,26 745 add 25,25,30 746 vsrw 5,13,26 747 xor 21,21,26 748 vsrw 9,14,26 749 xor 22,22,27 750 vslw 12,12,27 751 xor 23,23,24 752 vslw 13,13,27 753 xor 20,20,25 754 vslw 14,14,27 755 rotlwi 21,21,7 756 vor 1,1,12 757 rotlwi 22,22,7 758 vor 5,5,13 759 rotlwi 23,23,7 760 vor 9,9,14 761 rotlwi 20,20,7 762 vsldoi 2,2,2, 16-8 763 vsldoi 6,6,6, 16-8 764 vsldoi 10,10,10, 16-8 765 vsldoi 1,1,1, 16-4 766 vsldoi 5,5,5, 16-4 767 vsldoi 9,9,9, 16-4 768 vsldoi 3,3,3, 16-12 769 vsldoi 7,7,7, 16-12 770 vsldoi 11,11,11, 16-12 771 bc 16,0,.Loop_vmx 772 773 subi 5,5,256 774 addi 16,16,0x7865 775 addi 17,17,0x646e 776 addi 18,18,0x2d32 777 addi 19,19,0x6574 778 addis 16,16,0x6170 779 addis 17,17,0x3320 780 addis 18,18,0x7962 781 addis 19,19,0x6b20 782 add 20,20,7 783 lwz 7,16(6) 784 add 21,21,8 785 lwz 8,20(6) 786 add 22,22,9 787 lwz 9,24(6) 788 add 23,23,10 789 lwz 10,28(6) 790 add 24,24,7 791 add 25,25,8 792 add 26,26,9 793 add 27,27,10 794 add 28,28,11 795 add 29,29,12 796 add 30,30,14 797 add 31,31,15 798 799 vadduwm 0,0,15 800 vadduwm 4,4,15 801 vadduwm 8,8,15 802 vadduwm 1,1,16 803 vadduwm 5,5,16 804 vadduwm 9,9,16 805 vadduwm 2,2,17 806 vadduwm 6,6,17 807 vadduwm 10,10,17 808 vadduwm 3,3,18 809 vadduwm 7,7,19 810 vadduwm 11,11,20 811 812 addi 11,11,4 813 vadduwm 18,18,21 814 vadduwm 19,19,21 815 vadduwm 20,20,21 816 817 mr 7,16 818 rotlwi 16,16,8 819 rlwimi 16,7,24,0,7 820 rlwimi 16,7,24,16,23 821 mr 8,17 822 rotlwi 17,17,8 823 rlwimi 17,8,24,0,7 824 rlwimi 17,8,24,16,23 825 mr 9,18 826 rotlwi 18,18,8 827 rlwimi 18,9,24,0,7 828 rlwimi 18,9,24,16,23 829 mr 10,19 830 rotlwi 19,19,8 831 rlwimi 19,10,24,0,7 832 rlwimi 19,10,24,16,23 833 mr 7,20 834 rotlwi 20,20,8 835 rlwimi 20,7,24,0,7 836 rlwimi 20,7,24,16,23 837 mr 8,21 838 rotlwi 21,21,8 839 rlwimi 21,8,24,0,7 840 rlwimi 21,8,24,16,23 841 mr 9,22 842 rotlwi 22,22,8 843 rlwimi 22,9,24,0,7 844 rlwimi 22,9,24,16,23 845 mr 10,23 846 rotlwi 23,23,8 847 rlwimi 23,10,24,0,7 848 rlwimi 23,10,24,16,23 849 mr 7,24 850 rotlwi 24,24,8 851 rlwimi 24,7,24,0,7 852 rlwimi 24,7,24,16,23 853 mr 8,25 854 rotlwi 25,25,8 855 rlwimi 25,8,24,0,7 856 rlwimi 25,8,24,16,23 857 mr 9,26 858 rotlwi 26,26,8 859 rlwimi 26,9,24,0,7 860 rlwimi 26,9,24,16,23 861 mr 10,27 862 rotlwi 27,27,8 863 rlwimi 27,10,24,0,7 864 rlwimi 27,10,24,16,23 865 mr 7,28 866 rotlwi 28,28,8 867 rlwimi 28,7,24,0,7 868 rlwimi 28,7,24,16,23 869 mr 8,29 870 rotlwi 29,29,8 871 rlwimi 29,8,24,0,7 872 rlwimi 29,8,24,16,23 873 mr 9,30 874 rotlwi 30,30,8 875 rlwimi 30,9,24,0,7 876 rlwimi 30,9,24,16,23 877 mr 10,31 878 rotlwi 31,31,8 879 rlwimi 31,10,24,0,7 880 rlwimi 31,10,24,16,23 881 lwz 7,0(4) 882 lwz 8,4(4) 883 lwz 9,8(4) 884 lwz 10,12(4) 885 xor 16,16,7 886 lwz 7,16(4) 887 xor 17,17,8 888 lwz 8,20(4) 889 xor 18,18,9 890 lwz 9,24(4) 891 xor 19,19,10 892 lwz 10,28(4) 893 xor 20,20,7 894 lwz 7,32(4) 895 xor 21,21,8 896 lwz 8,36(4) 897 xor 22,22,9 898 lwz 9,40(4) 899 xor 23,23,10 900 lwz 10,44(4) 901 xor 24,24,7 902 lwz 7,48(4) 903 xor 25,25,8 904 lwz 8,52(4) 905 xor 26,26,9 906 lwz 9,56(4) 907 xor 27,27,10 908 lwz 10,60(4) 909 xor 28,28,7 910 stw 16,0(3) 911 xor 29,29,8 912 stw 17,4(3) 913 xor 30,30,9 914 stw 18,8(3) 915 xor 31,31,10 916 stw 19,12(3) 917 addi 4,4,64 918 stw 20,16(3) 919 li 7,16 920 stw 21,20(3) 921 li 8,32 922 stw 22,24(3) 923 li 9,48 924 stw 23,28(3) 925 li 10,64 926 stw 24,32(3) 927 stw 25,36(3) 928 stw 26,40(3) 929 stw 27,44(3) 930 stw 28,48(3) 931 stw 29,52(3) 932 stw 30,56(3) 933 stw 31,60(3) 934 addi 3,3,64 935 936 lvx 31,0,4 937 lvx 27,7,4 938 lvx 12,8,4 939 lvx 13,9,4 940 lvx 14,10,4 941 addi 4,4,64 942 943 vperm 31,31,27,28 944 vperm 27,27,12,28 945 vperm 12,12,13,28 946 vperm 13,13,14,28 947 vxor 0,0,31 948 vxor 1,1,27 949 lvx 27,7,4 950 vxor 2,2,12 951 lvx 12,8,4 952 vxor 3,3,13 953 lvx 13,9,4 954 lvx 31,10,4 955 addi 4,4,64 956 li 10,63 957 vperm 0,0,0,29 958 vperm 1,1,1,29 959 vperm 2,2,2,29 960 vperm 3,3,3,29 961 962 vperm 14,14,27,28 963 vperm 27,27,12,28 964 vperm 12,12,13,28 965 vperm 13,13,31,28 966 vxor 4,4,14 967 vxor 5,5,27 968 lvx 27,7,4 969 vxor 6,6,12 970 lvx 12,8,4 971 vxor 7,7,13 972 lvx 13,9,4 973 lvx 14,10,4 974 addi 4,4,64 975 vperm 4,4,4,29 976 vperm 5,5,5,29 977 vperm 6,6,6,29 978 vperm 7,7,7,29 979 980 vperm 31,31,27,28 981 vperm 27,27,12,28 982 vperm 12,12,13,28 983 vperm 13,13,14,28 984 vxor 8,8,31 985 vxor 9,9,27 986 vxor 10,10,12 987 vxor 11,11,13 988 vperm 8,8,8,29 989 vperm 9,9,9,29 990 vperm 10,10,10,29 991 vperm 11,11,11,29 992 993 andi. 17,3,15 994 mr 16,3 995 996 vsel 31,0,1,30 997 vsel 27,1,2,30 998 vsel 12,2,3,30 999 vsel 13,3,4,30 1000 vsel 1,4,5,30 1001 vsel 2,5,6,30 1002 vsel 3,6,7,30 1003 vsel 4,7,8,30 1004 vsel 5,8,9,30 1005 vsel 6,9,10,30 1006 vsel 7,10,11,30 1007 1008 1009 stvx 31,7,3 1010 stvx 27,8,3 1011 stvx 12,9,3 1012 addi 3,3,64 1013 stvx 13,0,3 1014 stvx 1,7,3 1015 stvx 2,8,3 1016 stvx 3,9,3 1017 addi 3,3,64 1018 stvx 4,0,3 1019 stvx 5,7,3 1020 stvx 6,8,3 1021 stvx 7,9,3 1022 addi 3,3,64 1023 1024 beq .Laligned_vmx 1025 1026 sub 18,3,17 1027 li 19,0 1028.Lunaligned_tail_vmx: 1029 stvebx 11,19,18 1030 addi 19,19,1 1031 cmpw 19,17 1032 bne .Lunaligned_tail_vmx 1033 1034 sub 18,16,17 1035.Lunaligned_head_vmx: 1036 stvebx 0,17,18 1037 cmpwi 17,15 1038 addi 17,17,1 1039 bne .Lunaligned_head_vmx 1040 1041 cmplwi 5,255 1042 bgt .Loop_outer_vmx 1043 1044 b .Ldone_vmx 1045 1046.align 4 1047.Laligned_vmx: 1048 stvx 0,0,16 1049 1050 cmplwi 5,255 1051 bgt .Loop_outer_vmx 1052 nop 1053 1054.Ldone_vmx: 1055 cmplwi 5,0 1056 bnel __ChaCha20_1x 1057 1058 lwz 12,292(1) 1059 li 10,103 1060 li 11,119 1061 mtspr 256,12 1062 lvx 20,10,1 1063 addi 10,10,32 1064 lvx 21,11,1 1065 addi 11,11,32 1066 lvx 22,10,1 1067 addi 10,10,32 1068 lvx 23,11,1 1069 addi 11,11,32 1070 lvx 24,10,1 1071 addi 10,10,32 1072 lvx 25,11,1 1073 addi 11,11,32 1074 lvx 26,10,1 1075 addi 10,10,32 1076 lvx 27,11,1 1077 addi 11,11,32 1078 lvx 28,10,1 1079 addi 10,10,32 1080 lvx 29,11,1 1081 addi 11,11,32 1082 lvx 30,10,1 1083 lvx 31,11,1 1084 lwz 0, 372(1) 1085 lwz 14,296(1) 1086 lwz 15,300(1) 1087 lwz 16,304(1) 1088 lwz 17,308(1) 1089 lwz 18,312(1) 1090 lwz 19,316(1) 1091 lwz 20,320(1) 1092 lwz 21,324(1) 1093 lwz 22,328(1) 1094 lwz 23,332(1) 1095 lwz 24,336(1) 1096 lwz 25,340(1) 1097 lwz 26,344(1) 1098 lwz 27,348(1) 1099 lwz 28,352(1) 1100 lwz 29,356(1) 1101 lwz 30,360(1) 1102 lwz 31,364(1) 1103 mtlr 0 1104 addi 1,1,368 1105 blr 1106.long 0 1107.byte 0,12,0x04,1,0x80,18,5,0 1108.long 0 1109 1110 1111.align 5 1112.Lconsts: 1113 mflr 0 1114 bcl 20,31,$+4 1115 mflr 12 1116 addi 12,12,56 1117 mtlr 0 1118 blr 1119.long 0 1120.byte 0,12,0x14,0,0,0,0,0 1121.space 28 1122.Lsigma: 1123.long 0x61707865,0x3320646e,0x79622d32,0x6b206574 1124.long 1,0,0,0 1125.long 4,0,0,0 1126.long 0x02030001,0x06070405,0x0a0b0809,0x0e0f0c0d 1127.long 0x01020300,0x05060704,0x090a0b08,0x0d0e0f0c 1128.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,32,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 1129.align 2 1130.align 2 1131