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