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