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