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