1 .machine "any" 2 3 .abiversion 2 4 .text 5 6 .align 7 7 rcon: 8 .byte 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01 9 .byte 0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b 10 .byte 0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d 11 .byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 12 .Lconsts: 13 mflr 0 14 bcl 20,31,$+4 15 mflr 6 16 addi 6,6,-0x48 17 mtlr 0 18 blr 19 .long 0 20 .byte 0,12,0x14,0,0,0,0,0 21 .byte 65,69,83,32,102,111,114,32,80,111,119,101,114,73,83,65,32,50,46,48,55,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 22 .align 2 23 24 .globl aes_p8_set_encrypt_key 25 .type aes_p8_set_encrypt_key,@function 26 .align 5 27 aes_p8_set_encrypt_key: 28 .localentry aes_p8_set_encrypt_key,0 29 30 .Lset_encrypt_key: 31 mflr 11 32 std 11,16(1) 33 34 li 6,-1 35 cmpldi 3,0 36 beq- .Lenc_key_abort 37 cmpldi 5,0 38 beq- .Lenc_key_abort 39 li 6,-2 40 cmpwi 4,128 41 blt- .Lenc_key_abort 42 cmpwi 4,256 43 bgt- .Lenc_key_abort 44 andi. 0,4,0x3f 45 bne- .Lenc_key_abort 46 47 lis 0,0xfff0 48 li 12,-1 49 or 0,0,0 50 51 bl .Lconsts 52 mtlr 11 53 54 neg 9,3 55 lvx 1,0,3 56 addi 3,3,15 57 lvsr 3,0,9 58 li 8,0x20 59 cmpwi 4,192 60 lvx 2,0,3 61 vspltisb 5,0x0f 62 lvx 4,0,6 63 vxor 3,3,5 64 lvx 5,8,6 65 addi 6,6,0x10 66 vperm 1,1,2,3 67 li 7,8 68 vxor 0,0,0 69 mtctr 7 70 71 lvsl 8,0,5 72 vspltisb 9,-1 73 lvx 10,0,5 74 vperm 9,9,0,8 75 76 blt .Loop128 77 addi 3,3,8 78 beq .L192 79 addi 3,3,8 80 b .L256 81 82 .align 4 83 .Loop128: 84 vperm 3,1,1,5 85 vsldoi 6,0,1,12 86 vperm 11,1,1,8 87 vsel 7,10,11,9 88 vor 10,11,11 89 .long 0x10632509 90 stvx 7,0,5 91 addi 5,5,16 92 93 vxor 1,1,6 94 vsldoi 6,0,6,12 95 vxor 1,1,6 96 vsldoi 6,0,6,12 97 vxor 1,1,6 98 vadduwm 4,4,4 99 vxor 1,1,3 100 bdnz .Loop128 101 102 lvx 4,0,6 103 104 vperm 3,1,1,5 105 vsldoi 6,0,1,12 106 vperm 11,1,1,8 107 vsel 7,10,11,9 108 vor 10,11,11 109 .long 0x10632509 110 stvx 7,0,5 111 addi 5,5,16 112 113 vxor 1,1,6 114 vsldoi 6,0,6,12 115 vxor 1,1,6 116 vsldoi 6,0,6,12 117 vxor 1,1,6 118 vadduwm 4,4,4 119 vxor 1,1,3 120 121 vperm 3,1,1,5 122 vsldoi 6,0,1,12 123 vperm 11,1,1,8 124 vsel 7,10,11,9 125 vor 10,11,11 126 .long 0x10632509 127 stvx 7,0,5 128 addi 5,5,16 129 130 vxor 1,1,6 131 vsldoi 6,0,6,12 132 vxor 1,1,6 133 vsldoi 6,0,6,12 134 vxor 1,1,6 135 vxor 1,1,3 136 vperm 11,1,1,8 137 vsel 7,10,11,9 138 vor 10,11,11 139 stvx 7,0,5 140 141 addi 3,5,15 142 addi 5,5,0x50 143 144 li 8,10 145 b .Ldone 146 147 .align 4 148 .L192: 149 lvx 6,0,3 150 li 7,4 151 vperm 11,1,1,8 152 vsel 7,10,11,9 153 vor 10,11,11 154 stvx 7,0,5 155 addi 5,5,16 156 vperm 2,2,6,3 157 vspltisb 3,8 158 mtctr 7 159 vsububm 5,5,3 160 161 .Loop192: 162 vperm 3,2,2,5 163 vsldoi 6,0,1,12 164 .long 0x10632509 165 166 vxor 1,1,6 167 vsldoi 6,0,6,12 168 vxor 1,1,6 169 vsldoi 6,0,6,12 170 vxor 1,1,6 171 172 vsldoi 7,0,2,8 173 vspltw 6,1,3 174 vxor 6,6,2 175 vsldoi 2,0,2,12 176 vadduwm 4,4,4 177 vxor 2,2,6 178 vxor 1,1,3 179 vxor 2,2,3 180 vsldoi 7,7,1,8 181 182 vperm 3,2,2,5 183 vsldoi 6,0,1,12 184 vperm 11,7,7,8 185 vsel 7,10,11,9 186 vor 10,11,11 187 .long 0x10632509 188 stvx 7,0,5 189 addi 5,5,16 190 191 vsldoi 7,1,2,8 192 vxor 1,1,6 193 vsldoi 6,0,6,12 194 vperm 11,7,7,8 195 vsel 7,10,11,9 196 vor 10,11,11 197 vxor 1,1,6 198 vsldoi 6,0,6,12 199 vxor 1,1,6 200 stvx 7,0,5 201 addi 5,5,16 202 203 vspltw 6,1,3 204 vxor 6,6,2 205 vsldoi 2,0,2,12 206 vadduwm 4,4,4 207 vxor 2,2,6 208 vxor 1,1,3 209 vxor 2,2,3 210 vperm 11,1,1,8 211 vsel 7,10,11,9 212 vor 10,11,11 213 stvx 7,0,5 214 addi 3,5,15 215 addi 5,5,16 216 bdnz .Loop192 217 218 li 8,12 219 addi 5,5,0x20 220 b .Ldone 221 222 .align 4 223 .L256: 224 lvx 6,0,3 225 li 7,7 226 li 8,14 227 vperm 11,1,1,8 228 vsel 7,10,11,9 229 vor 10,11,11 230 stvx 7,0,5 231 addi 5,5,16 232 vperm 2,2,6,3 233 mtctr 7 234 235 .Loop256: 236 vperm 3,2,2,5 237 vsldoi 6,0,1,12 238 vperm 11,2,2,8 239 vsel 7,10,11,9 240 vor 10,11,11 241 .long 0x10632509 242 stvx 7,0,5 243 addi 5,5,16 244 245 vxor 1,1,6 246 vsldoi 6,0,6,12 247 vxor 1,1,6 248 vsldoi 6,0,6,12 249 vxor 1,1,6 250 vadduwm 4,4,4 251 vxor 1,1,3 252 vperm 11,1,1,8 253 vsel 7,10,11,9 254 vor 10,11,11 255 stvx 7,0,5 256 addi 3,5,15 257 addi 5,5,16 258 bdz .Ldone 259 260 vspltw 3,1,3 261 vsldoi 6,0,2,12 262 .long 0x106305C8 263 264 vxor 2,2,6 265 vsldoi 6,0,6,12 266 vxor 2,2,6 267 vsldoi 6,0,6,12 268 vxor 2,2,6 269 270 vxor 2,2,3 271 b .Loop256 272 273 .align 4 274 .Ldone: 275 lvx 2,0,3 276 vsel 2,10,2,9 277 stvx 2,0,3 278 li 6,0 279 or 12,12,12 280 stw 8,0(5) 281 282 .Lenc_key_abort: 283 mr 3,6 284 blr 285 .long 0 286 .byte 0,12,0x14,1,0,0,3,0 287 .long 0 288 .size aes_p8_set_encrypt_key,.-aes_p8_set_encrypt_key 289 290 .globl aes_p8_set_decrypt_key 291 .type aes_p8_set_decrypt_key,@function 292 .align 5 293 aes_p8_set_decrypt_key: 294 .localentry aes_p8_set_decrypt_key,0 295 296 stdu 1,-64(1) 297 mflr 10 298 std 10,64+16(1) 299 bl .Lset_encrypt_key 300 mtlr 10 301 302 cmpwi 3,0 303 bne- .Ldec_key_abort 304 305 slwi 7,8,4 306 subi 3,5,240 307 srwi 8,8,1 308 add 5,3,7 309 mtctr 8 310 311 .Ldeckey: 312 lwz 0, 0(3) 313 lwz 6, 4(3) 314 lwz 7, 8(3) 315 lwz 8, 12(3) 316 addi 3,3,16 317 lwz 9, 0(5) 318 lwz 10,4(5) 319 lwz 11,8(5) 320 lwz 12,12(5) 321 stw 0, 0(5) 322 stw 6, 4(5) 323 stw 7, 8(5) 324 stw 8, 12(5) 325 subi 5,5,16 326 stw 9, -16(3) 327 stw 10,-12(3) 328 stw 11,-8(3) 329 stw 12,-4(3) 330 bdnz .Ldeckey 331 332 xor 3,3,3 333 .Ldec_key_abort: 334 addi 1,1,64 335 blr 336 .long 0 337 .byte 0,12,4,1,0x80,0,3,0 338 .long 0 339 .size aes_p8_set_decrypt_key,.-aes_p8_set_decrypt_key 340 .globl aes_p8_encrypt 341 .type aes_p8_encrypt,@function 342 .align 5 343 aes_p8_encrypt: 344 .localentry aes_p8_encrypt,0 345 346 lwz 6,240(5) 347 lis 0,0xfc00 348 li 12,-1 349 li 7,15 350 or 0,0,0 351 352 lvx 0,0,3 353 neg 11,4 354 lvx 1,7,3 355 lvsl 2,0,3 356 vspltisb 4,0x0f 357 lvsr 3,0,11 358 vxor 2,2,4 359 li 7,16 360 vperm 0,0,1,2 361 lvx 1,0,5 362 lvsr 5,0,5 363 srwi 6,6,1 364 lvx 2,7,5 365 addi 7,7,16 366 subi 6,6,1 367 vperm 1,2,1,5 368 369 vxor 0,0,1 370 lvx 1,7,5 371 addi 7,7,16 372 mtctr 6 373 374 .Loop_enc: 375 vperm 2,1,2,5 376 .long 0x10001508 377 lvx 2,7,5 378 addi 7,7,16 379 vperm 1,2,1,5 380 .long 0x10000D08 381 lvx 1,7,5 382 addi 7,7,16 383 bdnz .Loop_enc 384 385 vperm 2,1,2,5 386 .long 0x10001508 387 lvx 2,7,5 388 vperm 1,2,1,5 389 .long 0x10000D09 390 391 vspltisb 2,-1 392 vxor 1,1,1 393 li 7,15 394 vperm 2,2,1,3 395 vxor 3,3,4 396 lvx 1,0,4 397 vperm 0,0,0,3 398 vsel 1,1,0,2 399 lvx 4,7,4 400 stvx 1,0,4 401 vsel 0,0,4,2 402 stvx 0,7,4 403 404 or 12,12,12 405 blr 406 .long 0 407 .byte 0,12,0x14,0,0,0,3,0 408 .long 0 409 .size aes_p8_encrypt,.-aes_p8_encrypt 410 .globl aes_p8_decrypt 411 .type aes_p8_decrypt,@function 412 .align 5 413 aes_p8_decrypt: 414 .localentry aes_p8_decrypt,0 415 416 lwz 6,240(5) 417 lis 0,0xfc00 418 li 12,-1 419 li 7,15 420 or 0,0,0 421 422 lvx 0,0,3 423 neg 11,4 424 lvx 1,7,3 425 lvsl 2,0,3 426 vspltisb 4,0x0f 427 lvsr 3,0,11 428 vxor 2,2,4 429 li 7,16 430 vperm 0,0,1,2 431 lvx 1,0,5 432 lvsr 5,0,5 433 srwi 6,6,1 434 lvx 2,7,5 435 addi 7,7,16 436 subi 6,6,1 437 vperm 1,2,1,5 438 439 vxor 0,0,1 440 lvx 1,7,5 441 addi 7,7,16 442 mtctr 6 443 444 .Loop_dec: 445 vperm 2,1,2,5 446 .long 0x10001548 447 lvx 2,7,5 448 addi 7,7,16 449 vperm 1,2,1,5 450 .long 0x10000D48 451 lvx 1,7,5 452 addi 7,7,16 453 bdnz .Loop_dec 454 455 vperm 2,1,2,5 456 .long 0x10001548 457 lvx 2,7,5 458 vperm 1,2,1,5 459 .long 0x10000D49 460 461 vspltisb 2,-1 462 vxor 1,1,1 463 li 7,15 464 vperm 2,2,1,3 465 vxor 3,3,4 466 lvx 1,0,4 467 vperm 0,0,0,3 468 vsel 1,1,0,2 469 lvx 4,7,4 470 stvx 1,0,4 471 vsel 0,0,4,2 472 stvx 0,7,4 473 474 or 12,12,12 475 blr 476 .long 0 477 .byte 0,12,0x14,0,0,0,3,0 478 .long 0 479 .size aes_p8_decrypt,.-aes_p8_decrypt 480 .globl aes_p8_cbc_encrypt 481 .type aes_p8_cbc_encrypt,@function 482 .align 5 483 aes_p8_cbc_encrypt: 484 .localentry aes_p8_cbc_encrypt,0 485 486 cmpldi 5,16 487 .long 0x4dc00020 488 489 cmpwi 8,0 490 lis 0,0xffe0 491 li 12,-1 492 or 0,0,0 493 494 li 10,15 495 vxor 0,0,0 496 vspltisb 3,0x0f 497 498 lvx 4,0,7 499 lvsl 6,0,7 500 lvx 5,10,7 501 vxor 6,6,3 502 vperm 4,4,5,6 503 504 neg 11,3 505 lvsr 10,0,6 506 lwz 9,240(6) 507 508 lvsr 6,0,11 509 lvx 5,0,3 510 addi 3,3,15 511 vxor 6,6,3 512 513 lvsl 8,0,4 514 vspltisb 9,-1 515 lvx 7,0,4 516 vperm 9,9,0,8 517 vxor 8,8,3 518 519 srwi 9,9,1 520 li 10,16 521 subi 9,9,1 522 beq .Lcbc_dec 523 524 .Lcbc_enc: 525 vor 2,5,5 526 lvx 5,0,3 527 addi 3,3,16 528 mtctr 9 529 subi 5,5,16 530 531 lvx 0,0,6 532 vperm 2,2,5,6 533 lvx 1,10,6 534 addi 10,10,16 535 vperm 0,1,0,10 536 vxor 2,2,0 537 lvx 0,10,6 538 addi 10,10,16 539 vxor 2,2,4 540 541 .Loop_cbc_enc: 542 vperm 1,0,1,10 543 .long 0x10420D08 544 lvx 1,10,6 545 addi 10,10,16 546 vperm 0,1,0,10 547 .long 0x10420508 548 lvx 0,10,6 549 addi 10,10,16 550 bdnz .Loop_cbc_enc 551 552 vperm 1,0,1,10 553 .long 0x10420D08 554 lvx 1,10,6 555 li 10,16 556 vperm 0,1,0,10 557 .long 0x10820509 558 cmpldi 5,16 559 560 vperm 3,4,4,8 561 vsel 2,7,3,9 562 vor 7,3,3 563 stvx 2,0,4 564 addi 4,4,16 565 bge .Lcbc_enc 566 567 b .Lcbc_done 568 569 .align 4 570 .Lcbc_dec: 571 cmpldi 5,128 572 bge _aesp8_cbc_decrypt8x 573 vor 3,5,5 574 lvx 5,0,3 575 addi 3,3,16 576 mtctr 9 577 subi 5,5,16 578 579 lvx 0,0,6 580 vperm 3,3,5,6 581 lvx 1,10,6 582 addi 10,10,16 583 vperm 0,1,0,10 584 vxor 2,3,0 585 lvx 0,10,6 586 addi 10,10,16 587 588 .Loop_cbc_dec: 589 vperm 1,0,1,10 590 .long 0x10420D48 591 lvx 1,10,6 592 addi 10,10,16 593 vperm 0,1,0,10 594 .long 0x10420548 595 lvx 0,10,6 596 addi 10,10,16 597 bdnz .Loop_cbc_dec 598 599 vperm 1,0,1,10 600 .long 0x10420D48 601 lvx 1,10,6 602 li 10,16 603 vperm 0,1,0,10 604 .long 0x10420549 605 cmpldi 5,16 606 607 vxor 2,2,4 608 vor 4,3,3 609 vperm 3,2,2,8 610 vsel 2,7,3,9 611 vor 7,3,3 612 stvx 2,0,4 613 addi 4,4,16 614 bge .Lcbc_dec 615 616 .Lcbc_done: 617 addi 4,4,-1 618 lvx 2,0,4 619 vsel 2,7,2,9 620 stvx 2,0,4 621 622 neg 8,7 623 li 10,15 624 vxor 0,0,0 625 vspltisb 9,-1 626 vspltisb 3,0x0f 627 lvsr 8,0,8 628 vperm 9,9,0,8 629 vxor 8,8,3 630 lvx 7,0,7 631 vperm 4,4,4,8 632 vsel 2,7,4,9 633 lvx 5,10,7 634 stvx 2,0,7 635 vsel 2,4,5,9 636 stvx 2,10,7 637 638 or 12,12,12 639 blr 640 .long 0 641 .byte 0,12,0x14,0,0,0,6,0 642 .long 0 643 .align 5 644 _aesp8_cbc_decrypt8x: 645 stdu 1,-448(1) 646 li 10,207 647 li 11,223 648 stvx 20,10,1 649 addi 10,10,32 650 stvx 21,11,1 651 addi 11,11,32 652 stvx 22,10,1 653 addi 10,10,32 654 stvx 23,11,1 655 addi 11,11,32 656 stvx 24,10,1 657 addi 10,10,32 658 stvx 25,11,1 659 addi 11,11,32 660 stvx 26,10,1 661 addi 10,10,32 662 stvx 27,11,1 663 addi 11,11,32 664 stvx 28,10,1 665 addi 10,10,32 666 stvx 29,11,1 667 addi 11,11,32 668 stvx 30,10,1 669 stvx 31,11,1 670 li 0,-1 671 stw 12,396(1) 672 li 8,0x10 673 std 26,400(1) 674 li 26,0x20 675 std 27,408(1) 676 li 27,0x30 677 std 28,416(1) 678 li 28,0x40 679 std 29,424(1) 680 li 29,0x50 681 std 30,432(1) 682 li 30,0x60 683 std 31,440(1) 684 li 31,0x70 685 or 0,0,0 686 687 subi 9,9,3 688 subi 5,5,128 689 690 lvx 23,0,6 691 lvx 30,8,6 692 addi 6,6,0x20 693 lvx 31,0,6 694 vperm 23,30,23,10 695 addi 11,1,64+15 696 mtctr 9 697 698 .Load_cbc_dec_key: 699 vperm 24,31,30,10 700 lvx 30,8,6 701 addi 6,6,0x20 702 stvx 24,0,11 703 vperm 25,30,31,10 704 lvx 31,0,6 705 stvx 25,8,11 706 addi 11,11,0x20 707 bdnz .Load_cbc_dec_key 708 709 lvx 26,8,6 710 vperm 24,31,30,10 711 lvx 27,26,6 712 stvx 24,0,11 713 vperm 25,26,31,10 714 lvx 28,27,6 715 stvx 25,8,11 716 addi 11,1,64+15 717 vperm 26,27,26,10 718 lvx 29,28,6 719 vperm 27,28,27,10 720 lvx 30,29,6 721 vperm 28,29,28,10 722 lvx 31,30,6 723 vperm 29,30,29,10 724 lvx 14,31,6 725 vperm 30,31,30,10 726 lvx 24,0,11 727 vperm 31,14,31,10 728 lvx 25,8,11 729 730 731 732 subi 3,3,15 733 734 li 10,8 735 .long 0x7C001E99 736 lvsl 6,0,10 737 vspltisb 3,0x0f 738 .long 0x7C281E99 739 vxor 6,6,3 740 .long 0x7C5A1E99 741 vperm 0,0,0,6 742 .long 0x7C7B1E99 743 vperm 1,1,1,6 744 .long 0x7D5C1E99 745 vperm 2,2,2,6 746 vxor 14,0,23 747 .long 0x7D7D1E99 748 vperm 3,3,3,6 749 vxor 15,1,23 750 .long 0x7D9E1E99 751 vperm 10,10,10,6 752 vxor 16,2,23 753 .long 0x7DBF1E99 754 addi 3,3,0x80 755 vperm 11,11,11,6 756 vxor 17,3,23 757 vperm 12,12,12,6 758 vxor 18,10,23 759 vperm 13,13,13,6 760 vxor 19,11,23 761 vxor 20,12,23 762 vxor 21,13,23 763 764 mtctr 9 765 b .Loop_cbc_dec8x 766 .align 5 767 .Loop_cbc_dec8x: 768 .long 0x11CEC548 769 .long 0x11EFC548 770 .long 0x1210C548 771 .long 0x1231C548 772 .long 0x1252C548 773 .long 0x1273C548 774 .long 0x1294C548 775 .long 0x12B5C548 776 lvx 24,26,11 777 addi 11,11,0x20 778 779 .long 0x11CECD48 780 .long 0x11EFCD48 781 .long 0x1210CD48 782 .long 0x1231CD48 783 .long 0x1252CD48 784 .long 0x1273CD48 785 .long 0x1294CD48 786 .long 0x12B5CD48 787 lvx 25,8,11 788 bdnz .Loop_cbc_dec8x 789 790 subic 5,5,128 791 .long 0x11CEC548 792 .long 0x11EFC548 793 .long 0x1210C548 794 .long 0x1231C548 795 .long 0x1252C548 796 .long 0x1273C548 797 .long 0x1294C548 798 .long 0x12B5C548 799 800 subfe. 0,0,0 801 .long 0x11CECD48 802 .long 0x11EFCD48 803 .long 0x1210CD48 804 .long 0x1231CD48 805 .long 0x1252CD48 806 .long 0x1273CD48 807 .long 0x1294CD48 808 .long 0x12B5CD48 809 810 and 0,0,5 811 .long 0x11CED548 812 .long 0x11EFD548 813 .long 0x1210D548 814 .long 0x1231D548 815 .long 0x1252D548 816 .long 0x1273D548 817 .long 0x1294D548 818 .long 0x12B5D548 819 820 add 3,3,0 821 822 823 824 .long 0x11CEDD48 825 .long 0x11EFDD48 826 .long 0x1210DD48 827 .long 0x1231DD48 828 .long 0x1252DD48 829 .long 0x1273DD48 830 .long 0x1294DD48 831 .long 0x12B5DD48 832 833 addi 11,1,64+15 834 .long 0x11CEE548 835 .long 0x11EFE548 836 .long 0x1210E548 837 .long 0x1231E548 838 .long 0x1252E548 839 .long 0x1273E548 840 .long 0x1294E548 841 .long 0x12B5E548 842 lvx 24,0,11 843 844 .long 0x11CEED48 845 .long 0x11EFED48 846 .long 0x1210ED48 847 .long 0x1231ED48 848 .long 0x1252ED48 849 .long 0x1273ED48 850 .long 0x1294ED48 851 .long 0x12B5ED48 852 lvx 25,8,11 853 854 .long 0x11CEF548 855 vxor 4,4,31 856 .long 0x11EFF548 857 vxor 0,0,31 858 .long 0x1210F548 859 vxor 1,1,31 860 .long 0x1231F548 861 vxor 2,2,31 862 .long 0x1252F548 863 vxor 3,3,31 864 .long 0x1273F548 865 vxor 10,10,31 866 .long 0x1294F548 867 vxor 11,11,31 868 .long 0x12B5F548 869 vxor 12,12,31 870 871 .long 0x11CE2549 872 .long 0x11EF0549 873 .long 0x7C001E99 874 .long 0x12100D49 875 .long 0x7C281E99 876 .long 0x12311549 877 vperm 0,0,0,6 878 .long 0x7C5A1E99 879 .long 0x12521D49 880 vperm 1,1,1,6 881 .long 0x7C7B1E99 882 .long 0x12735549 883 vperm 2,2,2,6 884 .long 0x7D5C1E99 885 .long 0x12945D49 886 vperm 3,3,3,6 887 .long 0x7D7D1E99 888 .long 0x12B56549 889 vperm 10,10,10,6 890 .long 0x7D9E1E99 891 vor 4,13,13 892 vperm 11,11,11,6 893 .long 0x7DBF1E99 894 addi 3,3,0x80 895 896 vperm 14,14,14,6 897 vperm 15,15,15,6 898 .long 0x7DC02799 899 vperm 12,12,12,6 900 vxor 14,0,23 901 vperm 16,16,16,6 902 .long 0x7DE82799 903 vperm 13,13,13,6 904 vxor 15,1,23 905 vperm 17,17,17,6 906 .long 0x7E1A2799 907 vxor 16,2,23 908 vperm 18,18,18,6 909 .long 0x7E3B2799 910 vxor 17,3,23 911 vperm 19,19,19,6 912 .long 0x7E5C2799 913 vxor 18,10,23 914 vperm 20,20,20,6 915 .long 0x7E7D2799 916 vxor 19,11,23 917 vperm 21,21,21,6 918 .long 0x7E9E2799 919 vxor 20,12,23 920 .long 0x7EBF2799 921 addi 4,4,0x80 922 vxor 21,13,23 923 924 mtctr 9 925 beq .Loop_cbc_dec8x 926 927 addic. 5,5,128 928 beq .Lcbc_dec8x_done 929 nop 930 nop 931 932 .Loop_cbc_dec8x_tail: 933 .long 0x11EFC548 934 .long 0x1210C548 935 .long 0x1231C548 936 .long 0x1252C548 937 .long 0x1273C548 938 .long 0x1294C548 939 .long 0x12B5C548 940 lvx 24,26,11 941 addi 11,11,0x20 942 943 .long 0x11EFCD48 944 .long 0x1210CD48 945 .long 0x1231CD48 946 .long 0x1252CD48 947 .long 0x1273CD48 948 .long 0x1294CD48 949 .long 0x12B5CD48 950 lvx 25,8,11 951 bdnz .Loop_cbc_dec8x_tail 952 953 .long 0x11EFC548 954 .long 0x1210C548 955 .long 0x1231C548 956 .long 0x1252C548 957 .long 0x1273C548 958 .long 0x1294C548 959 .long 0x12B5C548 960 961 .long 0x11EFCD48 962 .long 0x1210CD48 963 .long 0x1231CD48 964 .long 0x1252CD48 965 .long 0x1273CD48 966 .long 0x1294CD48 967 .long 0x12B5CD48 968 969 .long 0x11EFD548 970 .long 0x1210D548 971 .long 0x1231D548 972 .long 0x1252D548 973 .long 0x1273D548 974 .long 0x1294D548 975 .long 0x12B5D548 976 977 .long 0x11EFDD48 978 .long 0x1210DD48 979 .long 0x1231DD48 980 .long 0x1252DD48 981 .long 0x1273DD48 982 .long 0x1294DD48 983 .long 0x12B5DD48 984 985 .long 0x11EFE548 986 .long 0x1210E548 987 .long 0x1231E548 988 .long 0x1252E548 989 .long 0x1273E548 990 .long 0x1294E548 991 .long 0x12B5E548 992 993 .long 0x11EFED48 994 .long 0x1210ED48 995 .long 0x1231ED48 996 .long 0x1252ED48 997 .long 0x1273ED48 998 .long 0x1294ED48 999 .long 0x12B5ED48 1000 1001 .long 0x11EFF548 1002 vxor 4,4,31 1003 .long 0x1210F548 1004 vxor 1,1,31 1005 .long 0x1231F548 1006 vxor 2,2,31 1007 .long 0x1252F548 1008 vxor 3,3,31 1009 .long 0x1273F548 1010 vxor 10,10,31 1011 .long 0x1294F548 1012 vxor 11,11,31 1013 .long 0x12B5F548 1014 vxor 12,12,31 1015 1016 cmplwi 5,32 1017 blt .Lcbc_dec8x_one 1018 nop 1019 beq .Lcbc_dec8x_two 1020 cmplwi 5,64 1021 blt .Lcbc_dec8x_three 1022 nop 1023 beq .Lcbc_dec8x_four 1024 cmplwi 5,96 1025 blt .Lcbc_dec8x_five 1026 nop 1027 beq .Lcbc_dec8x_six 1028 1029 .Lcbc_dec8x_seven: 1030 .long 0x11EF2549 1031 .long 0x12100D49 1032 .long 0x12311549 1033 .long 0x12521D49 1034 .long 0x12735549 1035 .long 0x12945D49 1036 .long 0x12B56549 1037 vor 4,13,13 1038 1039 vperm 15,15,15,6 1040 vperm 16,16,16,6 1041 .long 0x7DE02799 1042 vperm 17,17,17,6 1043 .long 0x7E082799 1044 vperm 18,18,18,6 1045 .long 0x7E3A2799 1046 vperm 19,19,19,6 1047 .long 0x7E5B2799 1048 vperm 20,20,20,6 1049 .long 0x7E7C2799 1050 vperm 21,21,21,6 1051 .long 0x7E9D2799 1052 .long 0x7EBE2799 1053 addi 4,4,0x70 1054 b .Lcbc_dec8x_done 1055 1056 .align 5 1057 .Lcbc_dec8x_six: 1058 .long 0x12102549 1059 .long 0x12311549 1060 .long 0x12521D49 1061 .long 0x12735549 1062 .long 0x12945D49 1063 .long 0x12B56549 1064 vor 4,13,13 1065 1066 vperm 16,16,16,6 1067 vperm 17,17,17,6 1068 .long 0x7E002799 1069 vperm 18,18,18,6 1070 .long 0x7E282799 1071 vperm 19,19,19,6 1072 .long 0x7E5A2799 1073 vperm 20,20,20,6 1074 .long 0x7E7B2799 1075 vperm 21,21,21,6 1076 .long 0x7E9C2799 1077 .long 0x7EBD2799 1078 addi 4,4,0x60 1079 b .Lcbc_dec8x_done 1080 1081 .align 5 1082 .Lcbc_dec8x_five: 1083 .long 0x12312549 1084 .long 0x12521D49 1085 .long 0x12735549 1086 .long 0x12945D49 1087 .long 0x12B56549 1088 vor 4,13,13 1089 1090 vperm 17,17,17,6 1091 vperm 18,18,18,6 1092 .long 0x7E202799 1093 vperm 19,19,19,6 1094 .long 0x7E482799 1095 vperm 20,20,20,6 1096 .long 0x7E7A2799 1097 vperm 21,21,21,6 1098 .long 0x7E9B2799 1099 .long 0x7EBC2799 1100 addi 4,4,0x50 1101 b .Lcbc_dec8x_done 1102 1103 .align 5 1104 .Lcbc_dec8x_four: 1105 .long 0x12522549 1106 .long 0x12735549 1107 .long 0x12945D49 1108 .long 0x12B56549 1109 vor 4,13,13 1110 1111 vperm 18,18,18,6 1112 vperm 19,19,19,6 1113 .long 0x7E402799 1114 vperm 20,20,20,6 1115 .long 0x7E682799 1116 vperm 21,21,21,6 1117 .long 0x7E9A2799 1118 .long 0x7EBB2799 1119 addi 4,4,0x40 1120 b .Lcbc_dec8x_done 1121 1122 .align 5 1123 .Lcbc_dec8x_three: 1124 .long 0x12732549 1125 .long 0x12945D49 1126 .long 0x12B56549 1127 vor 4,13,13 1128 1129 vperm 19,19,19,6 1130 vperm 20,20,20,6 1131 .long 0x7E602799 1132 vperm 21,21,21,6 1133 .long 0x7E882799 1134 .long 0x7EBA2799 1135 addi 4,4,0x30 1136 b .Lcbc_dec8x_done 1137 1138 .align 5 1139 .Lcbc_dec8x_two: 1140 .long 0x12942549 1141 .long 0x12B56549 1142 vor 4,13,13 1143 1144 vperm 20,20,20,6 1145 vperm 21,21,21,6 1146 .long 0x7E802799 1147 .long 0x7EA82799 1148 addi 4,4,0x20 1149 b .Lcbc_dec8x_done 1150 1151 .align 5 1152 .Lcbc_dec8x_one: 1153 .long 0x12B52549 1154 vor 4,13,13 1155 1156 vperm 21,21,21,6 1157 .long 0x7EA02799 1158 addi 4,4,0x10 1159 1160 .Lcbc_dec8x_done: 1161 vperm 4,4,4,6 1162 .long 0x7C803F99 1163 1164 li 10,79 1165 li 11,95 1166 stvx 6,10,1 1167 addi 10,10,32 1168 stvx 6,11,1 1169 addi 11,11,32 1170 stvx 6,10,1 1171 addi 10,10,32 1172 stvx 6,11,1 1173 addi 11,11,32 1174 stvx 6,10,1 1175 addi 10,10,32 1176 stvx 6,11,1 1177 addi 11,11,32 1178 stvx 6,10,1 1179 addi 10,10,32 1180 stvx 6,11,1 1181 addi 11,11,32 1182 1183 or 12,12,12 1184 lvx 20,10,1 1185 addi 10,10,32 1186 lvx 21,11,1 1187 addi 11,11,32 1188 lvx 22,10,1 1189 addi 10,10,32 1190 lvx 23,11,1 1191 addi 11,11,32 1192 lvx 24,10,1 1193 addi 10,10,32 1194 lvx 25,11,1 1195 addi 11,11,32 1196 lvx 26,10,1 1197 addi 10,10,32 1198 lvx 27,11,1 1199 addi 11,11,32 1200 lvx 28,10,1 1201 addi 10,10,32 1202 lvx 29,11,1 1203 addi 11,11,32 1204 lvx 30,10,1 1205 lvx 31,11,1 1206 ld 26,400(1) 1207 ld 27,408(1) 1208 ld 28,416(1) 1209 ld 29,424(1) 1210 ld 30,432(1) 1211 ld 31,440(1) 1212 addi 1,1,448 1213 blr 1214 .long 0 1215 .byte 0,12,0x04,0,0x80,6,6,0 1216 .long 0 1217 .size aes_p8_cbc_encrypt,.-aes_p8_cbc_encrypt 1218 .globl aes_p8_ctr32_encrypt_blocks 1219 .type aes_p8_ctr32_encrypt_blocks,@function 1220 .align 5 1221 aes_p8_ctr32_encrypt_blocks: 1222 .localentry aes_p8_ctr32_encrypt_blocks,0 1223 1224 cmpldi 5,1 1225 .long 0x4dc00020 1226 1227 lis 0,0xfff0 1228 li 12,-1 1229 or 0,0,0 1230 1231 li 10,15 1232 vxor 0,0,0 1233 vspltisb 3,0x0f 1234 1235 lvx 4,0,7 1236 lvsl 6,0,7 1237 lvx 5,10,7 1238 vspltisb 11,1 1239 vxor 6,6,3 1240 vperm 4,4,5,6 1241 vsldoi 11,0,11,1 1242 1243 neg 11,3 1244 lvsr 10,0,6 1245 lwz 9,240(6) 1246 1247 lvsr 6,0,11 1248 lvx 5,0,3 1249 addi 3,3,15 1250 vxor 6,6,3 1251 1252 srwi 9,9,1 1253 li 10,16 1254 subi 9,9,1 1255 1256 cmpldi 5,8 1257 bge _aesp8_ctr32_encrypt8x 1258 1259 lvsl 8,0,4 1260 vspltisb 9,-1 1261 lvx 7,0,4 1262 vperm 9,9,0,8 1263 vxor 8,8,3 1264 1265 lvx 0,0,6 1266 mtctr 9 1267 lvx 1,10,6 1268 addi 10,10,16 1269 vperm 0,1,0,10 1270 vxor 2,4,0 1271 lvx 0,10,6 1272 addi 10,10,16 1273 b .Loop_ctr32_enc 1274 1275 .align 5 1276 .Loop_ctr32_enc: 1277 vperm 1,0,1,10 1278 .long 0x10420D08 1279 lvx 1,10,6 1280 addi 10,10,16 1281 vperm 0,1,0,10 1282 .long 0x10420508 1283 lvx 0,10,6 1284 addi 10,10,16 1285 bdnz .Loop_ctr32_enc 1286 1287 vadduwm 4,4,11 1288 vor 3,5,5 1289 lvx 5,0,3 1290 addi 3,3,16 1291 subic. 5,5,1 1292 1293 vperm 1,0,1,10 1294 .long 0x10420D08 1295 lvx 1,10,6 1296 vperm 3,3,5,6 1297 li 10,16 1298 vperm 1,1,0,10 1299 lvx 0,0,6 1300 vxor 3,3,1 1301 .long 0x10421D09 1302 1303 lvx 1,10,6 1304 addi 10,10,16 1305 vperm 2,2,2,8 1306 vsel 3,7,2,9 1307 mtctr 9 1308 vperm 0,1,0,10 1309 vor 7,2,2 1310 vxor 2,4,0 1311 lvx 0,10,6 1312 addi 10,10,16 1313 stvx 3,0,4 1314 addi 4,4,16 1315 bne .Loop_ctr32_enc 1316 1317 addi 4,4,-1 1318 lvx 2,0,4 1319 vsel 2,7,2,9 1320 stvx 2,0,4 1321 1322 or 12,12,12 1323 blr 1324 .long 0 1325 .byte 0,12,0x14,0,0,0,6,0 1326 .long 0 1327 .align 5 1328 _aesp8_ctr32_encrypt8x: 1329 stdu 1,-448(1) 1330 li 10,207 1331 li 11,223 1332 stvx 20,10,1 1333 addi 10,10,32 1334 stvx 21,11,1 1335 addi 11,11,32 1336 stvx 22,10,1 1337 addi 10,10,32 1338 stvx 23,11,1 1339 addi 11,11,32 1340 stvx 24,10,1 1341 addi 10,10,32 1342 stvx 25,11,1 1343 addi 11,11,32 1344 stvx 26,10,1 1345 addi 10,10,32 1346 stvx 27,11,1 1347 addi 11,11,32 1348 stvx 28,10,1 1349 addi 10,10,32 1350 stvx 29,11,1 1351 addi 11,11,32 1352 stvx 30,10,1 1353 stvx 31,11,1 1354 li 0,-1 1355 stw 12,396(1) 1356 li 8,0x10 1357 std 26,400(1) 1358 li 26,0x20 1359 std 27,408(1) 1360 li 27,0x30 1361 std 28,416(1) 1362 li 28,0x40 1363 std 29,424(1) 1364 li 29,0x50 1365 std 30,432(1) 1366 li 30,0x60 1367 std 31,440(1) 1368 li 31,0x70 1369 or 0,0,0 1370 1371 subi 9,9,3 1372 1373 lvx 23,0,6 1374 lvx 30,8,6 1375 addi 6,6,0x20 1376 lvx 31,0,6 1377 vperm 23,30,23,10 1378 addi 11,1,64+15 1379 mtctr 9 1380 1381 .Load_ctr32_enc_key: 1382 vperm 24,31,30,10 1383 lvx 30,8,6 1384 addi 6,6,0x20 1385 stvx 24,0,11 1386 vperm 25,30,31,10 1387 lvx 31,0,6 1388 stvx 25,8,11 1389 addi 11,11,0x20 1390 bdnz .Load_ctr32_enc_key 1391 1392 lvx 26,8,6 1393 vperm 24,31,30,10 1394 lvx 27,26,6 1395 stvx 24,0,11 1396 vperm 25,26,31,10 1397 lvx 28,27,6 1398 stvx 25,8,11 1399 addi 11,1,64+15 1400 vperm 26,27,26,10 1401 lvx 29,28,6 1402 vperm 27,28,27,10 1403 lvx 30,29,6 1404 vperm 28,29,28,10 1405 lvx 31,30,6 1406 vperm 29,30,29,10 1407 lvx 15,31,6 1408 vperm 30,31,30,10 1409 lvx 24,0,11 1410 vperm 31,15,31,10 1411 lvx 25,8,11 1412 1413 vadduwm 7,11,11 1414 subi 3,3,15 1415 sldi 5,5,4 1416 1417 vadduwm 16,4,11 1418 vadduwm 17,4,7 1419 vxor 15,4,23 1420 li 10,8 1421 vadduwm 18,16,7 1422 vxor 16,16,23 1423 lvsl 6,0,10 1424 vadduwm 19,17,7 1425 vxor 17,17,23 1426 vspltisb 3,0x0f 1427 vadduwm 20,18,7 1428 vxor 18,18,23 1429 vxor 6,6,3 1430 vadduwm 21,19,7 1431 vxor 19,19,23 1432 vadduwm 22,20,7 1433 vxor 20,20,23 1434 vadduwm 4,21,7 1435 vxor 21,21,23 1436 vxor 22,22,23 1437 1438 mtctr 9 1439 b .Loop_ctr32_enc8x 1440 .align 5 1441 .Loop_ctr32_enc8x: 1442 .long 0x11EFC508 1443 .long 0x1210C508 1444 .long 0x1231C508 1445 .long 0x1252C508 1446 .long 0x1273C508 1447 .long 0x1294C508 1448 .long 0x12B5C508 1449 .long 0x12D6C508 1450 .Loop_ctr32_enc8x_middle: 1451 lvx 24,26,11 1452 addi 11,11,0x20 1453 1454 .long 0x11EFCD08 1455 .long 0x1210CD08 1456 .long 0x1231CD08 1457 .long 0x1252CD08 1458 .long 0x1273CD08 1459 .long 0x1294CD08 1460 .long 0x12B5CD08 1461 .long 0x12D6CD08 1462 lvx 25,8,11 1463 bdnz .Loop_ctr32_enc8x 1464 1465 subic 11,5,256 1466 .long 0x11EFC508 1467 .long 0x1210C508 1468 .long 0x1231C508 1469 .long 0x1252C508 1470 .long 0x1273C508 1471 .long 0x1294C508 1472 .long 0x12B5C508 1473 .long 0x12D6C508 1474 1475 subfe 0,0,0 1476 .long 0x11EFCD08 1477 .long 0x1210CD08 1478 .long 0x1231CD08 1479 .long 0x1252CD08 1480 .long 0x1273CD08 1481 .long 0x1294CD08 1482 .long 0x12B5CD08 1483 .long 0x12D6CD08 1484 1485 and 0,0,11 1486 addi 11,1,64+15 1487 .long 0x11EFD508 1488 .long 0x1210D508 1489 .long 0x1231D508 1490 .long 0x1252D508 1491 .long 0x1273D508 1492 .long 0x1294D508 1493 .long 0x12B5D508 1494 .long 0x12D6D508 1495 lvx 24,0,11 1496 1497 subic 5,5,129 1498 .long 0x11EFDD08 1499 addi 5,5,1 1500 .long 0x1210DD08 1501 .long 0x1231DD08 1502 .long 0x1252DD08 1503 .long 0x1273DD08 1504 .long 0x1294DD08 1505 .long 0x12B5DD08 1506 .long 0x12D6DD08 1507 lvx 25,8,11 1508 1509 .long 0x11EFE508 1510 .long 0x7C001E99 1511 .long 0x1210E508 1512 .long 0x7C281E99 1513 .long 0x1231E508 1514 .long 0x7C5A1E99 1515 .long 0x1252E508 1516 .long 0x7C7B1E99 1517 .long 0x1273E508 1518 .long 0x7D5C1E99 1519 .long 0x1294E508 1520 .long 0x7D9D1E99 1521 .long 0x12B5E508 1522 .long 0x7DBE1E99 1523 .long 0x12D6E508 1524 .long 0x7DDF1E99 1525 addi 3,3,0x80 1526 1527 .long 0x11EFED08 1528 vperm 0,0,0,6 1529 .long 0x1210ED08 1530 vperm 1,1,1,6 1531 .long 0x1231ED08 1532 vperm 2,2,2,6 1533 .long 0x1252ED08 1534 vperm 3,3,3,6 1535 .long 0x1273ED08 1536 vperm 10,10,10,6 1537 .long 0x1294ED08 1538 vperm 12,12,12,6 1539 .long 0x12B5ED08 1540 vperm 13,13,13,6 1541 .long 0x12D6ED08 1542 vperm 14,14,14,6 1543 1544 add 3,3,0 1545 1546 1547 1548 subfe. 0,0,0 1549 .long 0x11EFF508 1550 vxor 0,0,31 1551 .long 0x1210F508 1552 vxor 1,1,31 1553 .long 0x1231F508 1554 vxor 2,2,31 1555 .long 0x1252F508 1556 vxor 3,3,31 1557 .long 0x1273F508 1558 vxor 10,10,31 1559 .long 0x1294F508 1560 vxor 12,12,31 1561 .long 0x12B5F508 1562 vxor 13,13,31 1563 .long 0x12D6F508 1564 vxor 14,14,31 1565 1566 bne .Lctr32_enc8x_break 1567 1568 .long 0x100F0509 1569 .long 0x10300D09 1570 vadduwm 16,4,11 1571 .long 0x10511509 1572 vadduwm 17,4,7 1573 vxor 15,4,23 1574 .long 0x10721D09 1575 vadduwm 18,16,7 1576 vxor 16,16,23 1577 .long 0x11535509 1578 vadduwm 19,17,7 1579 vxor 17,17,23 1580 .long 0x11946509 1581 vadduwm 20,18,7 1582 vxor 18,18,23 1583 .long 0x11B56D09 1584 vadduwm 21,19,7 1585 vxor 19,19,23 1586 .long 0x11D67509 1587 vadduwm 22,20,7 1588 vxor 20,20,23 1589 vperm 0,0,0,6 1590 vadduwm 4,21,7 1591 vxor 21,21,23 1592 vperm 1,1,1,6 1593 vxor 22,22,23 1594 mtctr 9 1595 1596 .long 0x11EFC508 1597 .long 0x7C002799 1598 vperm 2,2,2,6 1599 .long 0x1210C508 1600 .long 0x7C282799 1601 vperm 3,3,3,6 1602 .long 0x1231C508 1603 .long 0x7C5A2799 1604 vperm 10,10,10,6 1605 .long 0x1252C508 1606 .long 0x7C7B2799 1607 vperm 12,12,12,6 1608 .long 0x1273C508 1609 .long 0x7D5C2799 1610 vperm 13,13,13,6 1611 .long 0x1294C508 1612 .long 0x7D9D2799 1613 vperm 14,14,14,6 1614 .long 0x12B5C508 1615 .long 0x7DBE2799 1616 .long 0x12D6C508 1617 .long 0x7DDF2799 1618 addi 4,4,0x80 1619 1620 b .Loop_ctr32_enc8x_middle 1621 1622 .align 5 1623 .Lctr32_enc8x_break: 1624 cmpwi 5,-0x60 1625 blt .Lctr32_enc8x_one 1626 nop 1627 beq .Lctr32_enc8x_two 1628 cmpwi 5,-0x40 1629 blt .Lctr32_enc8x_three 1630 nop 1631 beq .Lctr32_enc8x_four 1632 cmpwi 5,-0x20 1633 blt .Lctr32_enc8x_five 1634 nop 1635 beq .Lctr32_enc8x_six 1636 cmpwi 5,0x00 1637 blt .Lctr32_enc8x_seven 1638 1639 .Lctr32_enc8x_eight: 1640 .long 0x11EF0509 1641 .long 0x12100D09 1642 .long 0x12311509 1643 .long 0x12521D09 1644 .long 0x12735509 1645 .long 0x12946509 1646 .long 0x12B56D09 1647 .long 0x12D67509 1648 1649 vperm 15,15,15,6 1650 vperm 16,16,16,6 1651 .long 0x7DE02799 1652 vperm 17,17,17,6 1653 .long 0x7E082799 1654 vperm 18,18,18,6 1655 .long 0x7E3A2799 1656 vperm 19,19,19,6 1657 .long 0x7E5B2799 1658 vperm 20,20,20,6 1659 .long 0x7E7C2799 1660 vperm 21,21,21,6 1661 .long 0x7E9D2799 1662 vperm 22,22,22,6 1663 .long 0x7EBE2799 1664 .long 0x7EDF2799 1665 addi 4,4,0x80 1666 b .Lctr32_enc8x_done 1667 1668 .align 5 1669 .Lctr32_enc8x_seven: 1670 .long 0x11EF0D09 1671 .long 0x12101509 1672 .long 0x12311D09 1673 .long 0x12525509 1674 .long 0x12736509 1675 .long 0x12946D09 1676 .long 0x12B57509 1677 1678 vperm 15,15,15,6 1679 vperm 16,16,16,6 1680 .long 0x7DE02799 1681 vperm 17,17,17,6 1682 .long 0x7E082799 1683 vperm 18,18,18,6 1684 .long 0x7E3A2799 1685 vperm 19,19,19,6 1686 .long 0x7E5B2799 1687 vperm 20,20,20,6 1688 .long 0x7E7C2799 1689 vperm 21,21,21,6 1690 .long 0x7E9D2799 1691 .long 0x7EBE2799 1692 addi 4,4,0x70 1693 b .Lctr32_enc8x_done 1694 1695 .align 5 1696 .Lctr32_enc8x_six: 1697 .long 0x11EF1509 1698 .long 0x12101D09 1699 .long 0x12315509 1700 .long 0x12526509 1701 .long 0x12736D09 1702 .long 0x12947509 1703 1704 vperm 15,15,15,6 1705 vperm 16,16,16,6 1706 .long 0x7DE02799 1707 vperm 17,17,17,6 1708 .long 0x7E082799 1709 vperm 18,18,18,6 1710 .long 0x7E3A2799 1711 vperm 19,19,19,6 1712 .long 0x7E5B2799 1713 vperm 20,20,20,6 1714 .long 0x7E7C2799 1715 .long 0x7E9D2799 1716 addi 4,4,0x60 1717 b .Lctr32_enc8x_done 1718 1719 .align 5 1720 .Lctr32_enc8x_five: 1721 .long 0x11EF1D09 1722 .long 0x12105509 1723 .long 0x12316509 1724 .long 0x12526D09 1725 .long 0x12737509 1726 1727 vperm 15,15,15,6 1728 vperm 16,16,16,6 1729 .long 0x7DE02799 1730 vperm 17,17,17,6 1731 .long 0x7E082799 1732 vperm 18,18,18,6 1733 .long 0x7E3A2799 1734 vperm 19,19,19,6 1735 .long 0x7E5B2799 1736 .long 0x7E7C2799 1737 addi 4,4,0x50 1738 b .Lctr32_enc8x_done 1739 1740 .align 5 1741 .Lctr32_enc8x_four: 1742 .long 0x11EF5509 1743 .long 0x12106509 1744 .long 0x12316D09 1745 .long 0x12527509 1746 1747 vperm 15,15,15,6 1748 vperm 16,16,16,6 1749 .long 0x7DE02799 1750 vperm 17,17,17,6 1751 .long 0x7E082799 1752 vperm 18,18,18,6 1753 .long 0x7E3A2799 1754 .long 0x7E5B2799 1755 addi 4,4,0x40 1756 b .Lctr32_enc8x_done 1757 1758 .align 5 1759 .Lctr32_enc8x_three: 1760 .long 0x11EF6509 1761 .long 0x12106D09 1762 .long 0x12317509 1763 1764 vperm 15,15,15,6 1765 vperm 16,16,16,6 1766 .long 0x7DE02799 1767 vperm 17,17,17,6 1768 .long 0x7E082799 1769 .long 0x7E3A2799 1770 addi 4,4,0x30 1771 b .Lctr32_enc8x_done 1772 1773 .align 5 1774 .Lctr32_enc8x_two: 1775 .long 0x11EF6D09 1776 .long 0x12107509 1777 1778 vperm 15,15,15,6 1779 vperm 16,16,16,6 1780 .long 0x7DE02799 1781 .long 0x7E082799 1782 addi 4,4,0x20 1783 b .Lctr32_enc8x_done 1784 1785 .align 5 1786 .Lctr32_enc8x_one: 1787 .long 0x11EF7509 1788 1789 vperm 15,15,15,6 1790 .long 0x7DE02799 1791 addi 4,4,0x10 1792 1793 .Lctr32_enc8x_done: 1794 li 10,79 1795 li 11,95 1796 stvx 6,10,1 1797 addi 10,10,32 1798 stvx 6,11,1 1799 addi 11,11,32 1800 stvx 6,10,1 1801 addi 10,10,32 1802 stvx 6,11,1 1803 addi 11,11,32 1804 stvx 6,10,1 1805 addi 10,10,32 1806 stvx 6,11,1 1807 addi 11,11,32 1808 stvx 6,10,1 1809 addi 10,10,32 1810 stvx 6,11,1 1811 addi 11,11,32 1812 1813 or 12,12,12 1814 lvx 20,10,1 1815 addi 10,10,32 1816 lvx 21,11,1 1817 addi 11,11,32 1818 lvx 22,10,1 1819 addi 10,10,32 1820 lvx 23,11,1 1821 addi 11,11,32 1822 lvx 24,10,1 1823 addi 10,10,32 1824 lvx 25,11,1 1825 addi 11,11,32 1826 lvx 26,10,1 1827 addi 10,10,32 1828 lvx 27,11,1 1829 addi 11,11,32 1830 lvx 28,10,1 1831 addi 10,10,32 1832 lvx 29,11,1 1833 addi 11,11,32 1834 lvx 30,10,1 1835 lvx 31,11,1 1836 ld 26,400(1) 1837 ld 27,408(1) 1838 ld 28,416(1) 1839 ld 29,424(1) 1840 ld 30,432(1) 1841 ld 31,440(1) 1842 addi 1,1,448 1843 blr 1844 .long 0 1845 .byte 0,12,0x04,0,0x80,6,6,0 1846 .long 0 1847 .size aes_p8_ctr32_encrypt_blocks,.-aes_p8_ctr32_encrypt_blocks 1848 .globl aes_p8_xts_encrypt 1849 .type aes_p8_xts_encrypt,@function 1850 .align 5 1851 aes_p8_xts_encrypt: 1852 .localentry aes_p8_xts_encrypt,0 1853 1854 mr 10,3 1855 li 3,-1 1856 cmpldi 5,16 1857 .long 0x4dc00020 1858 1859 lis 0,0xfff0 1860 li 12,-1 1861 li 11,0 1862 or 0,0,0 1863 1864 vspltisb 9,0x07 1865 lvsl 6,11,11 1866 vspltisb 11,0x0f 1867 vxor 6,6,9 1868 1869 li 3,15 1870 lvx 8,0,8 1871 lvsl 5,0,8 1872 lvx 4,3,8 1873 vxor 5,5,11 1874 vperm 8,8,4,5 1875 1876 neg 11,10 1877 lvsr 5,0,11 1878 lvx 2,0,10 1879 addi 10,10,15 1880 vxor 5,5,11 1881 1882 cmpldi 7,0 1883 beq .Lxts_enc_no_key2 1884 1885 lvsr 7,0,7 1886 lwz 9,240(7) 1887 srwi 9,9,1 1888 subi 9,9,1 1889 li 3,16 1890 1891 lvx 0,0,7 1892 lvx 1,3,7 1893 addi 3,3,16 1894 vperm 0,1,0,7 1895 vxor 8,8,0 1896 lvx 0,3,7 1897 addi 3,3,16 1898 mtctr 9 1899 1900 .Ltweak_xts_enc: 1901 vperm 1,0,1,7 1902 .long 0x11080D08 1903 lvx 1,3,7 1904 addi 3,3,16 1905 vperm 0,1,0,7 1906 .long 0x11080508 1907 lvx 0,3,7 1908 addi 3,3,16 1909 bdnz .Ltweak_xts_enc 1910 1911 vperm 1,0,1,7 1912 .long 0x11080D08 1913 lvx 1,3,7 1914 vperm 0,1,0,7 1915 .long 0x11080509 1916 1917 li 8,0 1918 b .Lxts_enc 1919 1920 .Lxts_enc_no_key2: 1921 li 3,-16 1922 and 5,5,3 1923 1924 1925 .Lxts_enc: 1926 lvx 4,0,10 1927 addi 10,10,16 1928 1929 lvsr 7,0,6 1930 lwz 9,240(6) 1931 srwi 9,9,1 1932 subi 9,9,1 1933 li 3,16 1934 1935 vslb 10,9,9 1936 vor 10,10,9 1937 vspltisb 11,1 1938 vsldoi 10,10,11,15 1939 1940 cmpldi 5,96 1941 bge _aesp8_xts_encrypt6x 1942 1943 andi. 7,5,15 1944 subic 0,5,32 1945 subi 7,7,16 1946 subfe 0,0,0 1947 and 0,0,7 1948 add 10,10,0 1949 1950 lvx 0,0,6 1951 lvx 1,3,6 1952 addi 3,3,16 1953 vperm 2,2,4,5 1954 vperm 0,1,0,7 1955 vxor 2,2,8 1956 vxor 2,2,0 1957 lvx 0,3,6 1958 addi 3,3,16 1959 mtctr 9 1960 b .Loop_xts_enc 1961 1962 .align 5 1963 .Loop_xts_enc: 1964 vperm 1,0,1,7 1965 .long 0x10420D08 1966 lvx 1,3,6 1967 addi 3,3,16 1968 vperm 0,1,0,7 1969 .long 0x10420508 1970 lvx 0,3,6 1971 addi 3,3,16 1972 bdnz .Loop_xts_enc 1973 1974 vperm 1,0,1,7 1975 .long 0x10420D08 1976 lvx 1,3,6 1977 li 3,16 1978 vperm 0,1,0,7 1979 vxor 0,0,8 1980 .long 0x10620509 1981 1982 vperm 11,3,3,6 1983 1984 .long 0x7D602799 1985 1986 addi 4,4,16 1987 1988 subic. 5,5,16 1989 beq .Lxts_enc_done 1990 1991 vor 2,4,4 1992 lvx 4,0,10 1993 addi 10,10,16 1994 lvx 0,0,6 1995 lvx 1,3,6 1996 addi 3,3,16 1997 1998 subic 0,5,32 1999 subfe 0,0,0 2000 and 0,0,7 2001 add 10,10,0 2002 2003 vsrab 11,8,9 2004 vaddubm 8,8,8 2005 vsldoi 11,11,11,15 2006 vand 11,11,10 2007 vxor 8,8,11 2008 2009 vperm 2,2,4,5 2010 vperm 0,1,0,7 2011 vxor 2,2,8 2012 vxor 3,3,0 2013 vxor 2,2,0 2014 lvx 0,3,6 2015 addi 3,3,16 2016 2017 mtctr 9 2018 cmpldi 5,16 2019 bge .Loop_xts_enc 2020 2021 vxor 3,3,8 2022 lvsr 5,0,5 2023 vxor 4,4,4 2024 vspltisb 11,-1 2025 vperm 4,4,11,5 2026 vsel 2,2,3,4 2027 2028 subi 11,4,17 2029 subi 4,4,16 2030 mtctr 5 2031 li 5,16 2032 .Loop_xts_enc_steal: 2033 lbzu 0,1(11) 2034 stb 0,16(11) 2035 bdnz .Loop_xts_enc_steal 2036 2037 mtctr 9 2038 b .Loop_xts_enc 2039 2040 .Lxts_enc_done: 2041 cmpldi 8,0 2042 beq .Lxts_enc_ret 2043 2044 vsrab 11,8,9 2045 vaddubm 8,8,8 2046 vsldoi 11,11,11,15 2047 vand 11,11,10 2048 vxor 8,8,11 2049 2050 vperm 8,8,8,6 2051 .long 0x7D004799 2052 2053 .Lxts_enc_ret: 2054 or 12,12,12 2055 li 3,0 2056 blr 2057 .long 0 2058 .byte 0,12,0x04,0,0x80,6,6,0 2059 .long 0 2060 .size aes_p8_xts_encrypt,.-aes_p8_xts_encrypt 2061 2062 .globl aes_p8_xts_decrypt 2063 .type aes_p8_xts_decrypt,@function 2064 .align 5 2065 aes_p8_xts_decrypt: 2066 .localentry aes_p8_xts_decrypt,0 2067 2068 mr 10,3 2069 li 3,-1 2070 cmpldi 5,16 2071 .long 0x4dc00020 2072 2073 lis 0,0xfff8 2074 li 12,-1 2075 li 11,0 2076 or 0,0,0 2077 2078 andi. 0,5,15 2079 neg 0,0 2080 andi. 0,0,16 2081 sub 5,5,0 2082 2083 vspltisb 9,0x07 2084 lvsl 6,11,11 2085 vspltisb 11,0x0f 2086 vxor 6,6,9 2087 2088 li 3,15 2089 lvx 8,0,8 2090 lvsl 5,0,8 2091 lvx 4,3,8 2092 vxor 5,5,11 2093 vperm 8,8,4,5 2094 2095 neg 11,10 2096 lvsr 5,0,11 2097 lvx 2,0,10 2098 addi 10,10,15 2099 vxor 5,5,11 2100 2101 cmpldi 7,0 2102 beq .Lxts_dec_no_key2 2103 2104 lvsr 7,0,7 2105 lwz 9,240(7) 2106 srwi 9,9,1 2107 subi 9,9,1 2108 li 3,16 2109 2110 lvx 0,0,7 2111 lvx 1,3,7 2112 addi 3,3,16 2113 vperm 0,1,0,7 2114 vxor 8,8,0 2115 lvx 0,3,7 2116 addi 3,3,16 2117 mtctr 9 2118 2119 .Ltweak_xts_dec: 2120 vperm 1,0,1,7 2121 .long 0x11080D08 2122 lvx 1,3,7 2123 addi 3,3,16 2124 vperm 0,1,0,7 2125 .long 0x11080508 2126 lvx 0,3,7 2127 addi 3,3,16 2128 bdnz .Ltweak_xts_dec 2129 2130 vperm 1,0,1,7 2131 .long 0x11080D08 2132 lvx 1,3,7 2133 vperm 0,1,0,7 2134 .long 0x11080509 2135 2136 li 8,0 2137 b .Lxts_dec 2138 2139 .Lxts_dec_no_key2: 2140 neg 3,5 2141 andi. 3,3,15 2142 add 5,5,3 2143 2144 2145 .Lxts_dec: 2146 lvx 4,0,10 2147 addi 10,10,16 2148 2149 lvsr 7,0,6 2150 lwz 9,240(6) 2151 srwi 9,9,1 2152 subi 9,9,1 2153 li 3,16 2154 2155 vslb 10,9,9 2156 vor 10,10,9 2157 vspltisb 11,1 2158 vsldoi 10,10,11,15 2159 2160 cmpldi 5,96 2161 bge _aesp8_xts_decrypt6x 2162 2163 lvx 0,0,6 2164 lvx 1,3,6 2165 addi 3,3,16 2166 vperm 2,2,4,5 2167 vperm 0,1,0,7 2168 vxor 2,2,8 2169 vxor 2,2,0 2170 lvx 0,3,6 2171 addi 3,3,16 2172 mtctr 9 2173 2174 cmpldi 5,16 2175 blt .Ltail_xts_dec 2176 2177 2178 .align 5 2179 .Loop_xts_dec: 2180 vperm 1,0,1,7 2181 .long 0x10420D48 2182 lvx 1,3,6 2183 addi 3,3,16 2184 vperm 0,1,0,7 2185 .long 0x10420548 2186 lvx 0,3,6 2187 addi 3,3,16 2188 bdnz .Loop_xts_dec 2189 2190 vperm 1,0,1,7 2191 .long 0x10420D48 2192 lvx 1,3,6 2193 li 3,16 2194 vperm 0,1,0,7 2195 vxor 0,0,8 2196 .long 0x10620549 2197 2198 vperm 11,3,3,6 2199 2200 .long 0x7D602799 2201 2202 addi 4,4,16 2203 2204 subic. 5,5,16 2205 beq .Lxts_dec_done 2206 2207 vor 2,4,4 2208 lvx 4,0,10 2209 addi 10,10,16 2210 lvx 0,0,6 2211 lvx 1,3,6 2212 addi 3,3,16 2213 2214 vsrab 11,8,9 2215 vaddubm 8,8,8 2216 vsldoi 11,11,11,15 2217 vand 11,11,10 2218 vxor 8,8,11 2219 2220 vperm 2,2,4,5 2221 vperm 0,1,0,7 2222 vxor 2,2,8 2223 vxor 2,2,0 2224 lvx 0,3,6 2225 addi 3,3,16 2226 2227 mtctr 9 2228 cmpldi 5,16 2229 bge .Loop_xts_dec 2230 2231 .Ltail_xts_dec: 2232 vsrab 11,8,9 2233 vaddubm 12,8,8 2234 vsldoi 11,11,11,15 2235 vand 11,11,10 2236 vxor 12,12,11 2237 2238 subi 10,10,16 2239 add 10,10,5 2240 2241 vxor 2,2,8 2242 vxor 2,2,12 2243 2244 .Loop_xts_dec_short: 2245 vperm 1,0,1,7 2246 .long 0x10420D48 2247 lvx 1,3,6 2248 addi 3,3,16 2249 vperm 0,1,0,7 2250 .long 0x10420548 2251 lvx 0,3,6 2252 addi 3,3,16 2253 bdnz .Loop_xts_dec_short 2254 2255 vperm 1,0,1,7 2256 .long 0x10420D48 2257 lvx 1,3,6 2258 li 3,16 2259 vperm 0,1,0,7 2260 vxor 0,0,12 2261 .long 0x10620549 2262 2263 vperm 11,3,3,6 2264 2265 .long 0x7D602799 2266 2267 2268 vor 2,4,4 2269 lvx 4,0,10 2270 2271 lvx 0,0,6 2272 lvx 1,3,6 2273 addi 3,3,16 2274 vperm 2,2,4,5 2275 vperm 0,1,0,7 2276 2277 lvsr 5,0,5 2278 vxor 4,4,4 2279 vspltisb 11,-1 2280 vperm 4,4,11,5 2281 vsel 2,2,3,4 2282 2283 vxor 0,0,8 2284 vxor 2,2,0 2285 lvx 0,3,6 2286 addi 3,3,16 2287 2288 subi 11,4,1 2289 mtctr 5 2290 li 5,16 2291 .Loop_xts_dec_steal: 2292 lbzu 0,1(11) 2293 stb 0,16(11) 2294 bdnz .Loop_xts_dec_steal 2295 2296 mtctr 9 2297 b .Loop_xts_dec 2298 2299 .Lxts_dec_done: 2300 cmpldi 8,0 2301 beq .Lxts_dec_ret 2302 2303 vsrab 11,8,9 2304 vaddubm 8,8,8 2305 vsldoi 11,11,11,15 2306 vand 11,11,10 2307 vxor 8,8,11 2308 2309 vperm 8,8,8,6 2310 .long 0x7D004799 2311 2312 .Lxts_dec_ret: 2313 or 12,12,12 2314 li 3,0 2315 blr 2316 .long 0 2317 .byte 0,12,0x04,0,0x80,6,6,0 2318 .long 0 2319 .size aes_p8_xts_decrypt,.-aes_p8_xts_decrypt 2320 .align 5 2321 _aesp8_xts_encrypt6x: 2322 stdu 1,-448(1) 2323 mflr 11 2324 li 7,207 2325 li 3,223 2326 std 11,464(1) 2327 stvx 20,7,1 2328 addi 7,7,32 2329 stvx 21,3,1 2330 addi 3,3,32 2331 stvx 22,7,1 2332 addi 7,7,32 2333 stvx 23,3,1 2334 addi 3,3,32 2335 stvx 24,7,1 2336 addi 7,7,32 2337 stvx 25,3,1 2338 addi 3,3,32 2339 stvx 26,7,1 2340 addi 7,7,32 2341 stvx 27,3,1 2342 addi 3,3,32 2343 stvx 28,7,1 2344 addi 7,7,32 2345 stvx 29,3,1 2346 addi 3,3,32 2347 stvx 30,7,1 2348 stvx 31,3,1 2349 li 0,-1 2350 stw 12,396(1) 2351 li 3,0x10 2352 std 26,400(1) 2353 li 26,0x20 2354 std 27,408(1) 2355 li 27,0x30 2356 std 28,416(1) 2357 li 28,0x40 2358 std 29,424(1) 2359 li 29,0x50 2360 std 30,432(1) 2361 li 30,0x60 2362 std 31,440(1) 2363 li 31,0x70 2364 or 0,0,0 2365 2366 subi 9,9,3 2367 2368 lvx 23,0,6 2369 lvx 30,3,6 2370 addi 6,6,0x20 2371 lvx 31,0,6 2372 vperm 23,30,23,7 2373 addi 7,1,64+15 2374 mtctr 9 2375 2376 .Load_xts_enc_key: 2377 vperm 24,31,30,7 2378 lvx 30,3,6 2379 addi 6,6,0x20 2380 stvx 24,0,7 2381 vperm 25,30,31,7 2382 lvx 31,0,6 2383 stvx 25,3,7 2384 addi 7,7,0x20 2385 bdnz .Load_xts_enc_key 2386 2387 lvx 26,3,6 2388 vperm 24,31,30,7 2389 lvx 27,26,6 2390 stvx 24,0,7 2391 vperm 25,26,31,7 2392 lvx 28,27,6 2393 stvx 25,3,7 2394 addi 7,1,64+15 2395 vperm 26,27,26,7 2396 lvx 29,28,6 2397 vperm 27,28,27,7 2398 lvx 30,29,6 2399 vperm 28,29,28,7 2400 lvx 31,30,6 2401 vperm 29,30,29,7 2402 lvx 22,31,6 2403 vperm 30,31,30,7 2404 lvx 24,0,7 2405 vperm 31,22,31,7 2406 lvx 25,3,7 2407 2408 vperm 0,2,4,5 2409 subi 10,10,31 2410 vxor 17,8,23 2411 vsrab 11,8,9 2412 vaddubm 8,8,8 2413 vsldoi 11,11,11,15 2414 vand 11,11,10 2415 vxor 7,0,17 2416 vxor 8,8,11 2417 2418 .long 0x7C235699 2419 vxor 18,8,23 2420 vsrab 11,8,9 2421 vaddubm 8,8,8 2422 vsldoi 11,11,11,15 2423 vperm 1,1,1,6 2424 vand 11,11,10 2425 vxor 12,1,18 2426 vxor 8,8,11 2427 2428 .long 0x7C5A5699 2429 andi. 31,5,15 2430 vxor 19,8,23 2431 vsrab 11,8,9 2432 vaddubm 8,8,8 2433 vsldoi 11,11,11,15 2434 vperm 2,2,2,6 2435 vand 11,11,10 2436 vxor 13,2,19 2437 vxor 8,8,11 2438 2439 .long 0x7C7B5699 2440 sub 5,5,31 2441 vxor 20,8,23 2442 vsrab 11,8,9 2443 vaddubm 8,8,8 2444 vsldoi 11,11,11,15 2445 vperm 3,3,3,6 2446 vand 11,11,10 2447 vxor 14,3,20 2448 vxor 8,8,11 2449 2450 .long 0x7C9C5699 2451 subi 5,5,0x60 2452 vxor 21,8,23 2453 vsrab 11,8,9 2454 vaddubm 8,8,8 2455 vsldoi 11,11,11,15 2456 vperm 4,4,4,6 2457 vand 11,11,10 2458 vxor 15,4,21 2459 vxor 8,8,11 2460 2461 .long 0x7CBD5699 2462 addi 10,10,0x60 2463 vxor 22,8,23 2464 vsrab 11,8,9 2465 vaddubm 8,8,8 2466 vsldoi 11,11,11,15 2467 vperm 5,5,5,6 2468 vand 11,11,10 2469 vxor 16,5,22 2470 vxor 8,8,11 2471 2472 vxor 31,31,23 2473 mtctr 9 2474 b .Loop_xts_enc6x 2475 2476 .align 5 2477 .Loop_xts_enc6x: 2478 .long 0x10E7C508 2479 .long 0x118CC508 2480 .long 0x11ADC508 2481 .long 0x11CEC508 2482 .long 0x11EFC508 2483 .long 0x1210C508 2484 lvx 24,26,7 2485 addi 7,7,0x20 2486 2487 .long 0x10E7CD08 2488 .long 0x118CCD08 2489 .long 0x11ADCD08 2490 .long 0x11CECD08 2491 .long 0x11EFCD08 2492 .long 0x1210CD08 2493 lvx 25,3,7 2494 bdnz .Loop_xts_enc6x 2495 2496 subic 5,5,96 2497 vxor 0,17,31 2498 .long 0x10E7C508 2499 .long 0x118CC508 2500 vsrab 11,8,9 2501 vxor 17,8,23 2502 vaddubm 8,8,8 2503 .long 0x11ADC508 2504 .long 0x11CEC508 2505 vsldoi 11,11,11,15 2506 .long 0x11EFC508 2507 .long 0x1210C508 2508 2509 subfe. 0,0,0 2510 vand 11,11,10 2511 .long 0x10E7CD08 2512 .long 0x118CCD08 2513 vxor 8,8,11 2514 .long 0x11ADCD08 2515 .long 0x11CECD08 2516 vxor 1,18,31 2517 vsrab 11,8,9 2518 vxor 18,8,23 2519 .long 0x11EFCD08 2520 .long 0x1210CD08 2521 2522 and 0,0,5 2523 vaddubm 8,8,8 2524 vsldoi 11,11,11,15 2525 .long 0x10E7D508 2526 .long 0x118CD508 2527 vand 11,11,10 2528 .long 0x11ADD508 2529 .long 0x11CED508 2530 vxor 8,8,11 2531 .long 0x11EFD508 2532 .long 0x1210D508 2533 2534 add 10,10,0 2535 2536 2537 2538 vxor 2,19,31 2539 vsrab 11,8,9 2540 vxor 19,8,23 2541 vaddubm 8,8,8 2542 .long 0x10E7DD08 2543 .long 0x118CDD08 2544 vsldoi 11,11,11,15 2545 .long 0x11ADDD08 2546 .long 0x11CEDD08 2547 vand 11,11,10 2548 .long 0x11EFDD08 2549 .long 0x1210DD08 2550 2551 addi 7,1,64+15 2552 vxor 8,8,11 2553 .long 0x10E7E508 2554 .long 0x118CE508 2555 vxor 3,20,31 2556 vsrab 11,8,9 2557 vxor 20,8,23 2558 .long 0x11ADE508 2559 .long 0x11CEE508 2560 vaddubm 8,8,8 2561 vsldoi 11,11,11,15 2562 .long 0x11EFE508 2563 .long 0x1210E508 2564 lvx 24,0,7 2565 vand 11,11,10 2566 2567 .long 0x10E7ED08 2568 .long 0x118CED08 2569 vxor 8,8,11 2570 .long 0x11ADED08 2571 .long 0x11CEED08 2572 vxor 4,21,31 2573 vsrab 11,8,9 2574 vxor 21,8,23 2575 .long 0x11EFED08 2576 .long 0x1210ED08 2577 lvx 25,3,7 2578 vaddubm 8,8,8 2579 vsldoi 11,11,11,15 2580 2581 .long 0x10E7F508 2582 .long 0x118CF508 2583 vand 11,11,10 2584 .long 0x11ADF508 2585 .long 0x11CEF508 2586 vxor 8,8,11 2587 .long 0x11EFF508 2588 .long 0x1210F508 2589 vxor 5,22,31 2590 vsrab 11,8,9 2591 vxor 22,8,23 2592 2593 .long 0x10E70509 2594 .long 0x7C005699 2595 vaddubm 8,8,8 2596 vsldoi 11,11,11,15 2597 .long 0x118C0D09 2598 .long 0x7C235699 2599 .long 0x11AD1509 2600 vperm 0,0,0,6 2601 .long 0x7C5A5699 2602 vand 11,11,10 2603 .long 0x11CE1D09 2604 vperm 1,1,1,6 2605 .long 0x7C7B5699 2606 .long 0x11EF2509 2607 vperm 2,2,2,6 2608 .long 0x7C9C5699 2609 vxor 8,8,11 2610 .long 0x11702D09 2611 2612 vperm 3,3,3,6 2613 .long 0x7CBD5699 2614 addi 10,10,0x60 2615 vperm 4,4,4,6 2616 vperm 5,5,5,6 2617 2618 vperm 7,7,7,6 2619 vperm 12,12,12,6 2620 .long 0x7CE02799 2621 vxor 7,0,17 2622 vperm 13,13,13,6 2623 .long 0x7D832799 2624 vxor 12,1,18 2625 vperm 14,14,14,6 2626 .long 0x7DBA2799 2627 vxor 13,2,19 2628 vperm 15,15,15,6 2629 .long 0x7DDB2799 2630 vxor 14,3,20 2631 vperm 16,11,11,6 2632 .long 0x7DFC2799 2633 vxor 15,4,21 2634 .long 0x7E1D2799 2635 2636 vxor 16,5,22 2637 addi 4,4,0x60 2638 2639 mtctr 9 2640 beq .Loop_xts_enc6x 2641 2642 addic. 5,5,0x60 2643 beq .Lxts_enc6x_zero 2644 cmpwi 5,0x20 2645 blt .Lxts_enc6x_one 2646 nop 2647 beq .Lxts_enc6x_two 2648 cmpwi 5,0x40 2649 blt .Lxts_enc6x_three 2650 nop 2651 beq .Lxts_enc6x_four 2652 2653 .Lxts_enc6x_five: 2654 vxor 7,1,17 2655 vxor 12,2,18 2656 vxor 13,3,19 2657 vxor 14,4,20 2658 vxor 15,5,21 2659 2660 bl _aesp8_xts_enc5x 2661 2662 vperm 7,7,7,6 2663 vor 17,22,22 2664 vperm 12,12,12,6 2665 .long 0x7CE02799 2666 vperm 13,13,13,6 2667 .long 0x7D832799 2668 vperm 14,14,14,6 2669 .long 0x7DBA2799 2670 vxor 11,15,22 2671 vperm 15,15,15,6 2672 .long 0x7DDB2799 2673 .long 0x7DFC2799 2674 addi 4,4,0x50 2675 bne .Lxts_enc6x_steal 2676 b .Lxts_enc6x_done 2677 2678 .align 4 2679 .Lxts_enc6x_four: 2680 vxor 7,2,17 2681 vxor 12,3,18 2682 vxor 13,4,19 2683 vxor 14,5,20 2684 vxor 15,15,15 2685 2686 bl _aesp8_xts_enc5x 2687 2688 vperm 7,7,7,6 2689 vor 17,21,21 2690 vperm 12,12,12,6 2691 .long 0x7CE02799 2692 vperm 13,13,13,6 2693 .long 0x7D832799 2694 vxor 11,14,21 2695 vperm 14,14,14,6 2696 .long 0x7DBA2799 2697 .long 0x7DDB2799 2698 addi 4,4,0x40 2699 bne .Lxts_enc6x_steal 2700 b .Lxts_enc6x_done 2701 2702 .align 4 2703 .Lxts_enc6x_three: 2704 vxor 7,3,17 2705 vxor 12,4,18 2706 vxor 13,5,19 2707 vxor 14,14,14 2708 vxor 15,15,15 2709 2710 bl _aesp8_xts_enc5x 2711 2712 vperm 7,7,7,6 2713 vor 17,20,20 2714 vperm 12,12,12,6 2715 .long 0x7CE02799 2716 vxor 11,13,20 2717 vperm 13,13,13,6 2718 .long 0x7D832799 2719 .long 0x7DBA2799 2720 addi 4,4,0x30 2721 bne .Lxts_enc6x_steal 2722 b .Lxts_enc6x_done 2723 2724 .align 4 2725 .Lxts_enc6x_two: 2726 vxor 7,4,17 2727 vxor 12,5,18 2728 vxor 13,13,13 2729 vxor 14,14,14 2730 vxor 15,15,15 2731 2732 bl _aesp8_xts_enc5x 2733 2734 vperm 7,7,7,6 2735 vor 17,19,19 2736 vxor 11,12,19 2737 vperm 12,12,12,6 2738 .long 0x7CE02799 2739 .long 0x7D832799 2740 addi 4,4,0x20 2741 bne .Lxts_enc6x_steal 2742 b .Lxts_enc6x_done 2743 2744 .align 4 2745 .Lxts_enc6x_one: 2746 vxor 7,5,17 2747 nop 2748 .Loop_xts_enc1x: 2749 .long 0x10E7C508 2750 lvx 24,26,7 2751 addi 7,7,0x20 2752 2753 .long 0x10E7CD08 2754 lvx 25,3,7 2755 bdnz .Loop_xts_enc1x 2756 2757 add 10,10,31 2758 cmpwi 31,0 2759 .long 0x10E7C508 2760 2761 subi 10,10,16 2762 .long 0x10E7CD08 2763 2764 lvsr 5,0,31 2765 .long 0x10E7D508 2766 2767 .long 0x7C005699 2768 .long 0x10E7DD08 2769 2770 addi 7,1,64+15 2771 .long 0x10E7E508 2772 lvx 24,0,7 2773 2774 .long 0x10E7ED08 2775 lvx 25,3,7 2776 vxor 17,17,31 2777 2778 vperm 0,0,0,6 2779 .long 0x10E7F508 2780 2781 vperm 0,0,0,5 2782 .long 0x10E78D09 2783 2784 vor 17,18,18 2785 vxor 11,7,18 2786 vperm 7,7,7,6 2787 .long 0x7CE02799 2788 addi 4,4,0x10 2789 bne .Lxts_enc6x_steal 2790 b .Lxts_enc6x_done 2791 2792 .align 4 2793 .Lxts_enc6x_zero: 2794 cmpwi 31,0 2795 beq .Lxts_enc6x_done 2796 2797 add 10,10,31 2798 subi 10,10,16 2799 .long 0x7C005699 2800 lvsr 5,0,31 2801 vperm 0,0,0,6 2802 vperm 0,0,0,5 2803 vxor 11,11,17 2804 .Lxts_enc6x_steal: 2805 vxor 0,0,17 2806 vxor 7,7,7 2807 vspltisb 12,-1 2808 vperm 7,7,12,5 2809 vsel 7,0,11,7 2810 2811 subi 30,4,17 2812 subi 4,4,16 2813 mtctr 31 2814 .Loop_xts_enc6x_steal: 2815 lbzu 0,1(30) 2816 stb 0,16(30) 2817 bdnz .Loop_xts_enc6x_steal 2818 2819 li 31,0 2820 mtctr 9 2821 b .Loop_xts_enc1x 2822 2823 .align 4 2824 .Lxts_enc6x_done: 2825 cmpldi 8,0 2826 beq .Lxts_enc6x_ret 2827 2828 vxor 8,17,23 2829 vperm 8,8,8,6 2830 .long 0x7D004799 2831 2832 .Lxts_enc6x_ret: 2833 mtlr 11 2834 li 10,79 2835 li 11,95 2836 stvx 9,10,1 2837 addi 10,10,32 2838 stvx 9,11,1 2839 addi 11,11,32 2840 stvx 9,10,1 2841 addi 10,10,32 2842 stvx 9,11,1 2843 addi 11,11,32 2844 stvx 9,10,1 2845 addi 10,10,32 2846 stvx 9,11,1 2847 addi 11,11,32 2848 stvx 9,10,1 2849 addi 10,10,32 2850 stvx 9,11,1 2851 addi 11,11,32 2852 2853 or 12,12,12 2854 lvx 20,10,1 2855 addi 10,10,32 2856 lvx 21,11,1 2857 addi 11,11,32 2858 lvx 22,10,1 2859 addi 10,10,32 2860 lvx 23,11,1 2861 addi 11,11,32 2862 lvx 24,10,1 2863 addi 10,10,32 2864 lvx 25,11,1 2865 addi 11,11,32 2866 lvx 26,10,1 2867 addi 10,10,32 2868 lvx 27,11,1 2869 addi 11,11,32 2870 lvx 28,10,1 2871 addi 10,10,32 2872 lvx 29,11,1 2873 addi 11,11,32 2874 lvx 30,10,1 2875 lvx 31,11,1 2876 ld 26,400(1) 2877 ld 27,408(1) 2878 ld 28,416(1) 2879 ld 29,424(1) 2880 ld 30,432(1) 2881 ld 31,440(1) 2882 addi 1,1,448 2883 blr 2884 .long 0 2885 .byte 0,12,0x04,1,0x80,6,6,0 2886 .long 0 2887 2888 .align 5 2889 _aesp8_xts_enc5x: 2890 .long 0x10E7C508 2891 .long 0x118CC508 2892 .long 0x11ADC508 2893 .long 0x11CEC508 2894 .long 0x11EFC508 2895 lvx 24,26,7 2896 addi 7,7,0x20 2897 2898 .long 0x10E7CD08 2899 .long 0x118CCD08 2900 .long 0x11ADCD08 2901 .long 0x11CECD08 2902 .long 0x11EFCD08 2903 lvx 25,3,7 2904 bdnz _aesp8_xts_enc5x 2905 2906 add 10,10,31 2907 cmpwi 31,0 2908 .long 0x10E7C508 2909 .long 0x118CC508 2910 .long 0x11ADC508 2911 .long 0x11CEC508 2912 .long 0x11EFC508 2913 2914 subi 10,10,16 2915 .long 0x10E7CD08 2916 .long 0x118CCD08 2917 .long 0x11ADCD08 2918 .long 0x11CECD08 2919 .long 0x11EFCD08 2920 vxor 17,17,31 2921 2922 .long 0x10E7D508 2923 lvsr 5,0,31 2924 .long 0x118CD508 2925 .long 0x11ADD508 2926 .long 0x11CED508 2927 .long 0x11EFD508 2928 vxor 1,18,31 2929 2930 .long 0x10E7DD08 2931 .long 0x7C005699 2932 .long 0x118CDD08 2933 .long 0x11ADDD08 2934 .long 0x11CEDD08 2935 .long 0x11EFDD08 2936 vxor 2,19,31 2937 2938 addi 7,1,64+15 2939 .long 0x10E7E508 2940 .long 0x118CE508 2941 .long 0x11ADE508 2942 .long 0x11CEE508 2943 .long 0x11EFE508 2944 lvx 24,0,7 2945 vxor 3,20,31 2946 2947 .long 0x10E7ED08 2948 vperm 0,0,0,6 2949 .long 0x118CED08 2950 .long 0x11ADED08 2951 .long 0x11CEED08 2952 .long 0x11EFED08 2953 lvx 25,3,7 2954 vxor 4,21,31 2955 2956 .long 0x10E7F508 2957 vperm 0,0,0,5 2958 .long 0x118CF508 2959 .long 0x11ADF508 2960 .long 0x11CEF508 2961 .long 0x11EFF508 2962 2963 .long 0x10E78D09 2964 .long 0x118C0D09 2965 .long 0x11AD1509 2966 .long 0x11CE1D09 2967 .long 0x11EF2509 2968 blr 2969 .long 0 2970 .byte 0,12,0x14,0,0,0,0,0 2971 2972 .align 5 2973 _aesp8_xts_decrypt6x: 2974 stdu 1,-448(1) 2975 mflr 11 2976 li 7,207 2977 li 3,223 2978 std 11,464(1) 2979 stvx 20,7,1 2980 addi 7,7,32 2981 stvx 21,3,1 2982 addi 3,3,32 2983 stvx 22,7,1 2984 addi 7,7,32 2985 stvx 23,3,1 2986 addi 3,3,32 2987 stvx 24,7,1 2988 addi 7,7,32 2989 stvx 25,3,1 2990 addi 3,3,32 2991 stvx 26,7,1 2992 addi 7,7,32 2993 stvx 27,3,1 2994 addi 3,3,32 2995 stvx 28,7,1 2996 addi 7,7,32 2997 stvx 29,3,1 2998 addi 3,3,32 2999 stvx 30,7,1 3000 stvx 31,3,1 3001 li 0,-1 3002 stw 12,396(1) 3003 li 3,0x10 3004 std 26,400(1) 3005 li 26,0x20 3006 std 27,408(1) 3007 li 27,0x30 3008 std 28,416(1) 3009 li 28,0x40 3010 std 29,424(1) 3011 li 29,0x50 3012 std 30,432(1) 3013 li 30,0x60 3014 std 31,440(1) 3015 li 31,0x70 3016 or 0,0,0 3017 3018 subi 9,9,3 3019 3020 lvx 23,0,6 3021 lvx 30,3,6 3022 addi 6,6,0x20 3023 lvx 31,0,6 3024 vperm 23,30,23,7 3025 addi 7,1,64+15 3026 mtctr 9 3027 3028 .Load_xts_dec_key: 3029 vperm 24,31,30,7 3030 lvx 30,3,6 3031 addi 6,6,0x20 3032 stvx 24,0,7 3033 vperm 25,30,31,7 3034 lvx 31,0,6 3035 stvx 25,3,7 3036 addi 7,7,0x20 3037 bdnz .Load_xts_dec_key 3038 3039 lvx 26,3,6 3040 vperm 24,31,30,7 3041 lvx 27,26,6 3042 stvx 24,0,7 3043 vperm 25,26,31,7 3044 lvx 28,27,6 3045 stvx 25,3,7 3046 addi 7,1,64+15 3047 vperm 26,27,26,7 3048 lvx 29,28,6 3049 vperm 27,28,27,7 3050 lvx 30,29,6 3051 vperm 28,29,28,7 3052 lvx 31,30,6 3053 vperm 29,30,29,7 3054 lvx 22,31,6 3055 vperm 30,31,30,7 3056 lvx 24,0,7 3057 vperm 31,22,31,7 3058 lvx 25,3,7 3059 3060 vperm 0,2,4,5 3061 subi 10,10,31 3062 vxor 17,8,23 3063 vsrab 11,8,9 3064 vaddubm 8,8,8 3065 vsldoi 11,11,11,15 3066 vand 11,11,10 3067 vxor 7,0,17 3068 vxor 8,8,11 3069 3070 .long 0x7C235699 3071 vxor 18,8,23 3072 vsrab 11,8,9 3073 vaddubm 8,8,8 3074 vsldoi 11,11,11,15 3075 vperm 1,1,1,6 3076 vand 11,11,10 3077 vxor 12,1,18 3078 vxor 8,8,11 3079 3080 .long 0x7C5A5699 3081 andi. 31,5,15 3082 vxor 19,8,23 3083 vsrab 11,8,9 3084 vaddubm 8,8,8 3085 vsldoi 11,11,11,15 3086 vperm 2,2,2,6 3087 vand 11,11,10 3088 vxor 13,2,19 3089 vxor 8,8,11 3090 3091 .long 0x7C7B5699 3092 sub 5,5,31 3093 vxor 20,8,23 3094 vsrab 11,8,9 3095 vaddubm 8,8,8 3096 vsldoi 11,11,11,15 3097 vperm 3,3,3,6 3098 vand 11,11,10 3099 vxor 14,3,20 3100 vxor 8,8,11 3101 3102 .long 0x7C9C5699 3103 subi 5,5,0x60 3104 vxor 21,8,23 3105 vsrab 11,8,9 3106 vaddubm 8,8,8 3107 vsldoi 11,11,11,15 3108 vperm 4,4,4,6 3109 vand 11,11,10 3110 vxor 15,4,21 3111 vxor 8,8,11 3112 3113 .long 0x7CBD5699 3114 addi 10,10,0x60 3115 vxor 22,8,23 3116 vsrab 11,8,9 3117 vaddubm 8,8,8 3118 vsldoi 11,11,11,15 3119 vperm 5,5,5,6 3120 vand 11,11,10 3121 vxor 16,5,22 3122 vxor 8,8,11 3123 3124 vxor 31,31,23 3125 mtctr 9 3126 b .Loop_xts_dec6x 3127 3128 .align 5 3129 .Loop_xts_dec6x: 3130 .long 0x10E7C548 3131 .long 0x118CC548 3132 .long 0x11ADC548 3133 .long 0x11CEC548 3134 .long 0x11EFC548 3135 .long 0x1210C548 3136 lvx 24,26,7 3137 addi 7,7,0x20 3138 3139 .long 0x10E7CD48 3140 .long 0x118CCD48 3141 .long 0x11ADCD48 3142 .long 0x11CECD48 3143 .long 0x11EFCD48 3144 .long 0x1210CD48 3145 lvx 25,3,7 3146 bdnz .Loop_xts_dec6x 3147 3148 subic 5,5,96 3149 vxor 0,17,31 3150 .long 0x10E7C548 3151 .long 0x118CC548 3152 vsrab 11,8,9 3153 vxor 17,8,23 3154 vaddubm 8,8,8 3155 .long 0x11ADC548 3156 .long 0x11CEC548 3157 vsldoi 11,11,11,15 3158 .long 0x11EFC548 3159 .long 0x1210C548 3160 3161 subfe. 0,0,0 3162 vand 11,11,10 3163 .long 0x10E7CD48 3164 .long 0x118CCD48 3165 vxor 8,8,11 3166 .long 0x11ADCD48 3167 .long 0x11CECD48 3168 vxor 1,18,31 3169 vsrab 11,8,9 3170 vxor 18,8,23 3171 .long 0x11EFCD48 3172 .long 0x1210CD48 3173 3174 and 0,0,5 3175 vaddubm 8,8,8 3176 vsldoi 11,11,11,15 3177 .long 0x10E7D548 3178 .long 0x118CD548 3179 vand 11,11,10 3180 .long 0x11ADD548 3181 .long 0x11CED548 3182 vxor 8,8,11 3183 .long 0x11EFD548 3184 .long 0x1210D548 3185 3186 add 10,10,0 3187 3188 3189 3190 vxor 2,19,31 3191 vsrab 11,8,9 3192 vxor 19,8,23 3193 vaddubm 8,8,8 3194 .long 0x10E7DD48 3195 .long 0x118CDD48 3196 vsldoi 11,11,11,15 3197 .long 0x11ADDD48 3198 .long 0x11CEDD48 3199 vand 11,11,10 3200 .long 0x11EFDD48 3201 .long 0x1210DD48 3202 3203 addi 7,1,64+15 3204 vxor 8,8,11 3205 .long 0x10E7E548 3206 .long 0x118CE548 3207 vxor 3,20,31 3208 vsrab 11,8,9 3209 vxor 20,8,23 3210 .long 0x11ADE548 3211 .long 0x11CEE548 3212 vaddubm 8,8,8 3213 vsldoi 11,11,11,15 3214 .long 0x11EFE548 3215 .long 0x1210E548 3216 lvx 24,0,7 3217 vand 11,11,10 3218 3219 .long 0x10E7ED48 3220 .long 0x118CED48 3221 vxor 8,8,11 3222 .long 0x11ADED48 3223 .long 0x11CEED48 3224 vxor 4,21,31 3225 vsrab 11,8,9 3226 vxor 21,8,23 3227 .long 0x11EFED48 3228 .long 0x1210ED48 3229 lvx 25,3,7 3230 vaddubm 8,8,8 3231 vsldoi 11,11,11,15 3232 3233 .long 0x10E7F548 3234 .long 0x118CF548 3235 vand 11,11,10 3236 .long 0x11ADF548 3237 .long 0x11CEF548 3238 vxor 8,8,11 3239 .long 0x11EFF548 3240 .long 0x1210F548 3241 vxor 5,22,31 3242 vsrab 11,8,9 3243 vxor 22,8,23 3244 3245 .long 0x10E70549 3246 .long 0x7C005699 3247 vaddubm 8,8,8 3248 vsldoi 11,11,11,15 3249 .long 0x118C0D49 3250 .long 0x7C235699 3251 .long 0x11AD1549 3252 vperm 0,0,0,6 3253 .long 0x7C5A5699 3254 vand 11,11,10 3255 .long 0x11CE1D49 3256 vperm 1,1,1,6 3257 .long 0x7C7B5699 3258 .long 0x11EF2549 3259 vperm 2,2,2,6 3260 .long 0x7C9C5699 3261 vxor 8,8,11 3262 .long 0x12102D49 3263 vperm 3,3,3,6 3264 .long 0x7CBD5699 3265 addi 10,10,0x60 3266 vperm 4,4,4,6 3267 vperm 5,5,5,6 3268 3269 vperm 7,7,7,6 3270 vperm 12,12,12,6 3271 .long 0x7CE02799 3272 vxor 7,0,17 3273 vperm 13,13,13,6 3274 .long 0x7D832799 3275 vxor 12,1,18 3276 vperm 14,14,14,6 3277 .long 0x7DBA2799 3278 vxor 13,2,19 3279 vperm 15,15,15,6 3280 .long 0x7DDB2799 3281 vxor 14,3,20 3282 vperm 16,16,16,6 3283 .long 0x7DFC2799 3284 vxor 15,4,21 3285 .long 0x7E1D2799 3286 vxor 16,5,22 3287 addi 4,4,0x60 3288 3289 mtctr 9 3290 beq .Loop_xts_dec6x 3291 3292 addic. 5,5,0x60 3293 beq .Lxts_dec6x_zero 3294 cmpwi 5,0x20 3295 blt .Lxts_dec6x_one 3296 nop 3297 beq .Lxts_dec6x_two 3298 cmpwi 5,0x40 3299 blt .Lxts_dec6x_three 3300 nop 3301 beq .Lxts_dec6x_four 3302 3303 .Lxts_dec6x_five: 3304 vxor 7,1,17 3305 vxor 12,2,18 3306 vxor 13,3,19 3307 vxor 14,4,20 3308 vxor 15,5,21 3309 3310 bl _aesp8_xts_dec5x 3311 3312 vperm 7,7,7,6 3313 vor 17,22,22 3314 vxor 18,8,23 3315 vperm 12,12,12,6 3316 .long 0x7CE02799 3317 vxor 7,0,18 3318 vperm 13,13,13,6 3319 .long 0x7D832799 3320 vperm 14,14,14,6 3321 .long 0x7DBA2799 3322 vperm 15,15,15,6 3323 .long 0x7DDB2799 3324 .long 0x7DFC2799 3325 addi 4,4,0x50 3326 bne .Lxts_dec6x_steal 3327 b .Lxts_dec6x_done 3328 3329 .align 4 3330 .Lxts_dec6x_four: 3331 vxor 7,2,17 3332 vxor 12,3,18 3333 vxor 13,4,19 3334 vxor 14,5,20 3335 vxor 15,15,15 3336 3337 bl _aesp8_xts_dec5x 3338 3339 vperm 7,7,7,6 3340 vor 17,21,21 3341 vor 18,22,22 3342 vperm 12,12,12,6 3343 .long 0x7CE02799 3344 vxor 7,0,22 3345 vperm 13,13,13,6 3346 .long 0x7D832799 3347 vperm 14,14,14,6 3348 .long 0x7DBA2799 3349 .long 0x7DDB2799 3350 addi 4,4,0x40 3351 bne .Lxts_dec6x_steal 3352 b .Lxts_dec6x_done 3353 3354 .align 4 3355 .Lxts_dec6x_three: 3356 vxor 7,3,17 3357 vxor 12,4,18 3358 vxor 13,5,19 3359 vxor 14,14,14 3360 vxor 15,15,15 3361 3362 bl _aesp8_xts_dec5x 3363 3364 vperm 7,7,7,6 3365 vor 17,20,20 3366 vor 18,21,21 3367 vperm 12,12,12,6 3368 .long 0x7CE02799 3369 vxor 7,0,21 3370 vperm 13,13,13,6 3371 .long 0x7D832799 3372 .long 0x7DBA2799 3373 addi 4,4,0x30 3374 bne .Lxts_dec6x_steal 3375 b .Lxts_dec6x_done 3376 3377 .align 4 3378 .Lxts_dec6x_two: 3379 vxor 7,4,17 3380 vxor 12,5,18 3381 vxor 13,13,13 3382 vxor 14,14,14 3383 vxor 15,15,15 3384 3385 bl _aesp8_xts_dec5x 3386 3387 vperm 7,7,7,6 3388 vor 17,19,19 3389 vor 18,20,20 3390 vperm 12,12,12,6 3391 .long 0x7CE02799 3392 vxor 7,0,20 3393 .long 0x7D832799 3394 addi 4,4,0x20 3395 bne .Lxts_dec6x_steal 3396 b .Lxts_dec6x_done 3397 3398 .align 4 3399 .Lxts_dec6x_one: 3400 vxor 7,5,17 3401 nop 3402 .Loop_xts_dec1x: 3403 .long 0x10E7C548 3404 lvx 24,26,7 3405 addi 7,7,0x20 3406 3407 .long 0x10E7CD48 3408 lvx 25,3,7 3409 bdnz .Loop_xts_dec1x 3410 3411 subi 0,31,1 3412 .long 0x10E7C548 3413 3414 andi. 0,0,16 3415 cmpwi 31,0 3416 .long 0x10E7CD48 3417 3418 sub 10,10,0 3419 .long 0x10E7D548 3420 3421 .long 0x7C005699 3422 .long 0x10E7DD48 3423 3424 addi 7,1,64+15 3425 .long 0x10E7E548 3426 lvx 24,0,7 3427 3428 .long 0x10E7ED48 3429 lvx 25,3,7 3430 vxor 17,17,31 3431 3432 vperm 0,0,0,6 3433 .long 0x10E7F548 3434 3435 mtctr 9 3436 .long 0x10E78D49 3437 3438 vor 17,18,18 3439 vor 18,19,19 3440 vperm 7,7,7,6 3441 .long 0x7CE02799 3442 addi 4,4,0x10 3443 vxor 7,0,19 3444 bne .Lxts_dec6x_steal 3445 b .Lxts_dec6x_done 3446 3447 .align 4 3448 .Lxts_dec6x_zero: 3449 cmpwi 31,0 3450 beq .Lxts_dec6x_done 3451 3452 .long 0x7C005699 3453 vperm 0,0,0,6 3454 vxor 7,0,18 3455 .Lxts_dec6x_steal: 3456 .long 0x10E7C548 3457 lvx 24,26,7 3458 addi 7,7,0x20 3459 3460 .long 0x10E7CD48 3461 lvx 25,3,7 3462 bdnz .Lxts_dec6x_steal 3463 3464 add 10,10,31 3465 .long 0x10E7C548 3466 3467 cmpwi 31,0 3468 .long 0x10E7CD48 3469 3470 .long 0x7C005699 3471 .long 0x10E7D548 3472 3473 lvsr 5,0,31 3474 .long 0x10E7DD48 3475 3476 addi 7,1,64+15 3477 .long 0x10E7E548 3478 lvx 24,0,7 3479 3480 .long 0x10E7ED48 3481 lvx 25,3,7 3482 vxor 18,18,31 3483 3484 vperm 0,0,0,6 3485 .long 0x10E7F548 3486 3487 vperm 0,0,0,5 3488 .long 0x11679549 3489 3490 vperm 7,11,11,6 3491 .long 0x7CE02799 3492 3493 3494 vxor 7,7,7 3495 vspltisb 12,-1 3496 vperm 7,7,12,5 3497 vsel 7,0,11,7 3498 vxor 7,7,17 3499 3500 subi 30,4,1 3501 mtctr 31 3502 .Loop_xts_dec6x_steal: 3503 lbzu 0,1(30) 3504 stb 0,16(30) 3505 bdnz .Loop_xts_dec6x_steal 3506 3507 li 31,0 3508 mtctr 9 3509 b .Loop_xts_dec1x 3510 3511 .align 4 3512 .Lxts_dec6x_done: 3513 cmpldi 8,0 3514 beq .Lxts_dec6x_ret 3515 3516 vxor 8,17,23 3517 vperm 8,8,8,6 3518 .long 0x7D004799 3519 3520 .Lxts_dec6x_ret: 3521 mtlr 11 3522 li 10,79 3523 li 11,95 3524 stvx 9,10,1 3525 addi 10,10,32 3526 stvx 9,11,1 3527 addi 11,11,32 3528 stvx 9,10,1 3529 addi 10,10,32 3530 stvx 9,11,1 3531 addi 11,11,32 3532 stvx 9,10,1 3533 addi 10,10,32 3534 stvx 9,11,1 3535 addi 11,11,32 3536 stvx 9,10,1 3537 addi 10,10,32 3538 stvx 9,11,1 3539 addi 11,11,32 3540 3541 or 12,12,12 3542 lvx 20,10,1 3543 addi 10,10,32 3544 lvx 21,11,1 3545 addi 11,11,32 3546 lvx 22,10,1 3547 addi 10,10,32 3548 lvx 23,11,1 3549 addi 11,11,32 3550 lvx 24,10,1 3551 addi 10,10,32 3552 lvx 25,11,1 3553 addi 11,11,32 3554 lvx 26,10,1 3555 addi 10,10,32 3556 lvx 27,11,1 3557 addi 11,11,32 3558 lvx 28,10,1 3559 addi 10,10,32 3560 lvx 29,11,1 3561 addi 11,11,32 3562 lvx 30,10,1 3563 lvx 31,11,1 3564 ld 26,400(1) 3565 ld 27,408(1) 3566 ld 28,416(1) 3567 ld 29,424(1) 3568 ld 30,432(1) 3569 ld 31,440(1) 3570 addi 1,1,448 3571 blr 3572 .long 0 3573 .byte 0,12,0x04,1,0x80,6,6,0 3574 .long 0 3575 3576 .align 5 3577 _aesp8_xts_dec5x: 3578 .long 0x10E7C548 3579 .long 0x118CC548 3580 .long 0x11ADC548 3581 .long 0x11CEC548 3582 .long 0x11EFC548 3583 lvx 24,26,7 3584 addi 7,7,0x20 3585 3586 .long 0x10E7CD48 3587 .long 0x118CCD48 3588 .long 0x11ADCD48 3589 .long 0x11CECD48 3590 .long 0x11EFCD48 3591 lvx 25,3,7 3592 bdnz _aesp8_xts_dec5x 3593 3594 subi 0,31,1 3595 .long 0x10E7C548 3596 .long 0x118CC548 3597 .long 0x11ADC548 3598 .long 0x11CEC548 3599 .long 0x11EFC548 3600 3601 andi. 0,0,16 3602 cmpwi 31,0 3603 .long 0x10E7CD48 3604 .long 0x118CCD48 3605 .long 0x11ADCD48 3606 .long 0x11CECD48 3607 .long 0x11EFCD48 3608 vxor 17,17,31 3609 3610 sub 10,10,0 3611 .long 0x10E7D548 3612 .long 0x118CD548 3613 .long 0x11ADD548 3614 .long 0x11CED548 3615 .long 0x11EFD548 3616 vxor 1,18,31 3617 3618 .long 0x10E7DD48 3619 .long 0x7C005699 3620 .long 0x118CDD48 3621 .long 0x11ADDD48 3622 .long 0x11CEDD48 3623 .long 0x11EFDD48 3624 vxor 2,19,31 3625 3626 addi 7,1,64+15 3627 .long 0x10E7E548 3628 .long 0x118CE548 3629 .long 0x11ADE548 3630 .long 0x11CEE548 3631 .long 0x11EFE548 3632 lvx 24,0,7 3633 vxor 3,20,31 3634 3635 .long 0x10E7ED48 3636 vperm 0,0,0,6 3637 .long 0x118CED48 3638 .long 0x11ADED48 3639 .long 0x11CEED48 3640 .long 0x11EFED48 3641 lvx 25,3,7 3642 vxor 4,21,31 3643 3644 .long 0x10E7F548 3645 .long 0x118CF548 3646 .long 0x11ADF548 3647 .long 0x11CEF548 3648 .long 0x11EFF548 3649 3650 .long 0x10E78D49 3651 .long 0x118C0D49 3652 .long 0x11AD1549 3653 .long 0x11CE1D49 3654 .long 0x11EF2549 3655 mtctr 9 3656 blr 3657 .long 0 3658 .byte 0,12,0x14,0,0,0,0,0 3659