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