1/* 2 * Copyright 2004-2022 The OpenSSL Project Authors. All Rights Reserved. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17/* 18 * Portions Copyright (c) 2022 Tino Reichardt <milky-zfs@mcmilk.de> 19 * - modified assembly to fit into OpenZFS 20 */ 21 22#if (defined(__PPC64__) && defined(__BIG_ENDIAN__)) 23 24#if (!defined(_CALL_ELF) || _CALL_ELF == 1) 25.text 26 27.globl zfs_sha256_power8 28.globl .zfs_sha256_power8 29.type zfs_sha256_power8,@function 30.section ".opd","aw" 31.align 3 32zfs_sha256_power8: 33.quad .zfs_sha256_power8,.TOC.@tocbase,0 34.previous 35.align 6 36.zfs_sha256_power8: 37#else 38.abiversion 2 39.text 40 41.globl zfs_sha256_power8 42.type zfs_sha256_power8,@function 43.align 6 44zfs_sha256_power8: 45.localentry zfs_sha256_power8,0 46#endif 47 stdu 1,-384(1) 48 mflr 8 49 li 10,207 50 li 11,223 51 stvx 24,10,1 52 addi 10,10,32 53 mfspr 12,256 54 stvx 25,11,1 55 addi 11,11,32 56 stvx 26,10,1 57 addi 10,10,32 58 stvx 27,11,1 59 addi 11,11,32 60 stvx 28,10,1 61 addi 10,10,32 62 stvx 29,11,1 63 addi 11,11,32 64 stvx 30,10,1 65 stvx 31,11,1 66 li 11,-4096+255 67 stw 12,332(1) 68 li 10,0x10 69 std 26,336(1) 70 li 26,0x20 71 std 27,344(1) 72 li 27,0x30 73 std 28,352(1) 74 li 28,0x40 75 std 29,360(1) 76 li 29,0x50 77 std 30,368(1) 78 li 30,0x60 79 std 31,376(1) 80 li 31,0x70 81 std 8,400(1) 82 mtspr 256,11 83 84 bl .LPICmeup 85 addi 11,1,79 86 .long 0x7C001E19 87 .long 0x7C8A1E19 88 vsldoi 1,0,0,4 89 vsldoi 2,0,0,8 90 vsldoi 3,0,0,12 91 vsldoi 5,4,4,4 92 vsldoi 6,4,4,8 93 vsldoi 7,4,4,12 94 li 0,3 95 b .Loop 96.align 5 97.Loop: 98 lvx 28,0,6 99 .long 0x7D002699 100 addi 4,4,16 101 mr 7,6 102 stvx 0,0,11 103 stvx 1,10,11 104 stvx 2,26,11 105 stvx 3,27,11 106 stvx 4,28,11 107 stvx 5,29,11 108 stvx 6,30,11 109 stvx 7,31,11 110 vadduwm 7,7,28 111 lvx 28,10,6 112 vadduwm 7,7,8 113 vsel 29,6,5,4 114 vadduwm 6,6,28 115 vadduwm 7,7,29 116 .long 0x13C4FE82 117 vadduwm 7,7,30 118 vxor 29,0,1 119 vsel 29,1,2,29 120 vadduwm 3,3,7 121 .long 0x13C08682 122 vadduwm 30,30,29 123 vadduwm 7,7,30 124 lvx 28,26,7 125 vsldoi 9,8,8,4 126 vadduwm 6,6,9 127 vsel 29,5,4,3 128 vadduwm 5,5,28 129 vadduwm 6,6,29 130 .long 0x13C3FE82 131 vadduwm 6,6,30 132 vxor 29,7,0 133 vsel 29,0,1,29 134 vadduwm 2,2,6 135 .long 0x13C78682 136 vadduwm 30,30,29 137 vadduwm 6,6,30 138 lvx 28,27,7 139 vsldoi 10,9,9,4 140 vadduwm 5,5,10 141 vsel 29,4,3,2 142 vadduwm 4,4,28 143 vadduwm 5,5,29 144 .long 0x13C2FE82 145 vadduwm 5,5,30 146 vxor 29,6,7 147 vsel 29,7,0,29 148 vadduwm 1,1,5 149 .long 0x13C68682 150 vadduwm 30,30,29 151 vadduwm 5,5,30 152 lvx 28,28,7 153 .long 0x7D802699 154 addi 4,4,16 155 vsldoi 11,10,10,4 156 vadduwm 4,4,11 157 vsel 29,3,2,1 158 vadduwm 3,3,28 159 vadduwm 4,4,29 160 .long 0x13C1FE82 161 vadduwm 4,4,30 162 vxor 29,5,6 163 vsel 29,6,7,29 164 vadduwm 0,0,4 165 .long 0x13C58682 166 vadduwm 30,30,29 167 vadduwm 4,4,30 168 lvx 28,29,7 169 vadduwm 3,3,12 170 vsel 29,2,1,0 171 vadduwm 2,2,28 172 vadduwm 3,3,29 173 .long 0x13C0FE82 174 vadduwm 3,3,30 175 vxor 29,4,5 176 vsel 29,5,6,29 177 vadduwm 7,7,3 178 .long 0x13C48682 179 vadduwm 30,30,29 180 vadduwm 3,3,30 181 lvx 28,30,7 182 vsldoi 13,12,12,4 183 vadduwm 2,2,13 184 vsel 29,1,0,7 185 vadduwm 1,1,28 186 vadduwm 2,2,29 187 .long 0x13C7FE82 188 vadduwm 2,2,30 189 vxor 29,3,4 190 vsel 29,4,5,29 191 vadduwm 6,6,2 192 .long 0x13C38682 193 vadduwm 30,30,29 194 vadduwm 2,2,30 195 lvx 28,31,7 196 addi 7,7,0x80 197 vsldoi 14,13,13,4 198 vadduwm 1,1,14 199 vsel 29,0,7,6 200 vadduwm 0,0,28 201 vadduwm 1,1,29 202 .long 0x13C6FE82 203 vadduwm 1,1,30 204 vxor 29,2,3 205 vsel 29,3,4,29 206 vadduwm 5,5,1 207 .long 0x13C28682 208 vadduwm 30,30,29 209 vadduwm 1,1,30 210 lvx 28,0,7 211 .long 0x7E002699 212 addi 4,4,16 213 vsldoi 15,14,14,4 214 vadduwm 0,0,15 215 vsel 29,7,6,5 216 vadduwm 7,7,28 217 vadduwm 0,0,29 218 .long 0x13C5FE82 219 vadduwm 0,0,30 220 vxor 29,1,2 221 vsel 29,2,3,29 222 vadduwm 4,4,0 223 .long 0x13C18682 224 vadduwm 30,30,29 225 vadduwm 0,0,30 226 lvx 28,10,7 227 vadduwm 7,7,16 228 vsel 29,6,5,4 229 vadduwm 6,6,28 230 vadduwm 7,7,29 231 .long 0x13C4FE82 232 vadduwm 7,7,30 233 vxor 29,0,1 234 vsel 29,1,2,29 235 vadduwm 3,3,7 236 .long 0x13C08682 237 vadduwm 30,30,29 238 vadduwm 7,7,30 239 lvx 28,26,7 240 vsldoi 17,16,16,4 241 vadduwm 6,6,17 242 vsel 29,5,4,3 243 vadduwm 5,5,28 244 vadduwm 6,6,29 245 .long 0x13C3FE82 246 vadduwm 6,6,30 247 vxor 29,7,0 248 vsel 29,0,1,29 249 vadduwm 2,2,6 250 .long 0x13C78682 251 vadduwm 30,30,29 252 vadduwm 6,6,30 253 lvx 28,27,7 254 vsldoi 18,17,17,4 255 vadduwm 5,5,18 256 vsel 29,4,3,2 257 vadduwm 4,4,28 258 vadduwm 5,5,29 259 .long 0x13C2FE82 260 vadduwm 5,5,30 261 vxor 29,6,7 262 vsel 29,7,0,29 263 vadduwm 1,1,5 264 .long 0x13C68682 265 vadduwm 30,30,29 266 vadduwm 5,5,30 267 lvx 28,28,7 268 .long 0x7F002699 269 addi 4,4,16 270 vsldoi 19,18,18,4 271 vadduwm 4,4,19 272 vsel 29,3,2,1 273 vadduwm 3,3,28 274 vadduwm 4,4,29 275 .long 0x13C1FE82 276 vadduwm 4,4,30 277 vxor 29,5,6 278 vsel 29,6,7,29 279 vadduwm 0,0,4 280 .long 0x13C58682 281 vadduwm 30,30,29 282 vadduwm 4,4,30 283 lvx 28,29,7 284 vadduwm 3,3,24 285 vsel 29,2,1,0 286 vadduwm 2,2,28 287 vadduwm 3,3,29 288 .long 0x13C0FE82 289 vadduwm 3,3,30 290 vxor 29,4,5 291 vsel 29,5,6,29 292 vadduwm 7,7,3 293 .long 0x13C48682 294 vadduwm 30,30,29 295 vadduwm 3,3,30 296 lvx 28,30,7 297 vsldoi 25,24,24,4 298 vadduwm 2,2,25 299 vsel 29,1,0,7 300 vadduwm 1,1,28 301 vadduwm 2,2,29 302 .long 0x13C7FE82 303 vadduwm 2,2,30 304 vxor 29,3,4 305 vsel 29,4,5,29 306 vadduwm 6,6,2 307 .long 0x13C38682 308 vadduwm 30,30,29 309 vadduwm 2,2,30 310 lvx 28,31,7 311 addi 7,7,0x80 312 vsldoi 26,25,25,4 313 vadduwm 1,1,26 314 vsel 29,0,7,6 315 vadduwm 0,0,28 316 vadduwm 1,1,29 317 .long 0x13C6FE82 318 vadduwm 1,1,30 319 vxor 29,2,3 320 vsel 29,3,4,29 321 vadduwm 5,5,1 322 .long 0x13C28682 323 vadduwm 30,30,29 324 vadduwm 1,1,30 325 lvx 28,0,7 326 vsldoi 27,26,26,4 327 .long 0x13C90682 328 vadduwm 8,8,30 329 .long 0x13DA7E82 330 vadduwm 8,8,30 331 vadduwm 8,8,17 332 vadduwm 0,0,27 333 vsel 29,7,6,5 334 vadduwm 7,7,28 335 vadduwm 0,0,29 336 .long 0x13C5FE82 337 vadduwm 0,0,30 338 vxor 29,1,2 339 vsel 29,2,3,29 340 vadduwm 4,4,0 341 .long 0x13C18682 342 vadduwm 30,30,29 343 vadduwm 0,0,30 344 lvx 28,10,7 345 mtctr 0 346 b .L16_xx 347.align 5 348.L16_xx: 349 .long 0x13CA0682 350 vadduwm 9,9,30 351 .long 0x13DB7E82 352 vadduwm 9,9,30 353 vadduwm 9,9,18 354 vadduwm 7,7,8 355 vsel 29,6,5,4 356 vadduwm 6,6,28 357 vadduwm 7,7,29 358 .long 0x13C4FE82 359 vadduwm 7,7,30 360 vxor 29,0,1 361 vsel 29,1,2,29 362 vadduwm 3,3,7 363 .long 0x13C08682 364 vadduwm 30,30,29 365 vadduwm 7,7,30 366 lvx 28,26,7 367 .long 0x13CB0682 368 vadduwm 10,10,30 369 .long 0x13C87E82 370 vadduwm 10,10,30 371 vadduwm 10,10,19 372 vadduwm 6,6,9 373 vsel 29,5,4,3 374 vadduwm 5,5,28 375 vadduwm 6,6,29 376 .long 0x13C3FE82 377 vadduwm 6,6,30 378 vxor 29,7,0 379 vsel 29,0,1,29 380 vadduwm 2,2,6 381 .long 0x13C78682 382 vadduwm 30,30,29 383 vadduwm 6,6,30 384 lvx 28,27,7 385 .long 0x13CC0682 386 vadduwm 11,11,30 387 .long 0x13C97E82 388 vadduwm 11,11,30 389 vadduwm 11,11,24 390 vadduwm 5,5,10 391 vsel 29,4,3,2 392 vadduwm 4,4,28 393 vadduwm 5,5,29 394 .long 0x13C2FE82 395 vadduwm 5,5,30 396 vxor 29,6,7 397 vsel 29,7,0,29 398 vadduwm 1,1,5 399 .long 0x13C68682 400 vadduwm 30,30,29 401 vadduwm 5,5,30 402 lvx 28,28,7 403 .long 0x13CD0682 404 vadduwm 12,12,30 405 .long 0x13CA7E82 406 vadduwm 12,12,30 407 vadduwm 12,12,25 408 vadduwm 4,4,11 409 vsel 29,3,2,1 410 vadduwm 3,3,28 411 vadduwm 4,4,29 412 .long 0x13C1FE82 413 vadduwm 4,4,30 414 vxor 29,5,6 415 vsel 29,6,7,29 416 vadduwm 0,0,4 417 .long 0x13C58682 418 vadduwm 30,30,29 419 vadduwm 4,4,30 420 lvx 28,29,7 421 .long 0x13CE0682 422 vadduwm 13,13,30 423 .long 0x13CB7E82 424 vadduwm 13,13,30 425 vadduwm 13,13,26 426 vadduwm 3,3,12 427 vsel 29,2,1,0 428 vadduwm 2,2,28 429 vadduwm 3,3,29 430 .long 0x13C0FE82 431 vadduwm 3,3,30 432 vxor 29,4,5 433 vsel 29,5,6,29 434 vadduwm 7,7,3 435 .long 0x13C48682 436 vadduwm 30,30,29 437 vadduwm 3,3,30 438 lvx 28,30,7 439 .long 0x13CF0682 440 vadduwm 14,14,30 441 .long 0x13CC7E82 442 vadduwm 14,14,30 443 vadduwm 14,14,27 444 vadduwm 2,2,13 445 vsel 29,1,0,7 446 vadduwm 1,1,28 447 vadduwm 2,2,29 448 .long 0x13C7FE82 449 vadduwm 2,2,30 450 vxor 29,3,4 451 vsel 29,4,5,29 452 vadduwm 6,6,2 453 .long 0x13C38682 454 vadduwm 30,30,29 455 vadduwm 2,2,30 456 lvx 28,31,7 457 addi 7,7,0x80 458 .long 0x13D00682 459 vadduwm 15,15,30 460 .long 0x13CD7E82 461 vadduwm 15,15,30 462 vadduwm 15,15,8 463 vadduwm 1,1,14 464 vsel 29,0,7,6 465 vadduwm 0,0,28 466 vadduwm 1,1,29 467 .long 0x13C6FE82 468 vadduwm 1,1,30 469 vxor 29,2,3 470 vsel 29,3,4,29 471 vadduwm 5,5,1 472 .long 0x13C28682 473 vadduwm 30,30,29 474 vadduwm 1,1,30 475 lvx 28,0,7 476 .long 0x13D10682 477 vadduwm 16,16,30 478 .long 0x13CE7E82 479 vadduwm 16,16,30 480 vadduwm 16,16,9 481 vadduwm 0,0,15 482 vsel 29,7,6,5 483 vadduwm 7,7,28 484 vadduwm 0,0,29 485 .long 0x13C5FE82 486 vadduwm 0,0,30 487 vxor 29,1,2 488 vsel 29,2,3,29 489 vadduwm 4,4,0 490 .long 0x13C18682 491 vadduwm 30,30,29 492 vadduwm 0,0,30 493 lvx 28,10,7 494 .long 0x13D20682 495 vadduwm 17,17,30 496 .long 0x13CF7E82 497 vadduwm 17,17,30 498 vadduwm 17,17,10 499 vadduwm 7,7,16 500 vsel 29,6,5,4 501 vadduwm 6,6,28 502 vadduwm 7,7,29 503 .long 0x13C4FE82 504 vadduwm 7,7,30 505 vxor 29,0,1 506 vsel 29,1,2,29 507 vadduwm 3,3,7 508 .long 0x13C08682 509 vadduwm 30,30,29 510 vadduwm 7,7,30 511 lvx 28,26,7 512 .long 0x13D30682 513 vadduwm 18,18,30 514 .long 0x13D07E82 515 vadduwm 18,18,30 516 vadduwm 18,18,11 517 vadduwm 6,6,17 518 vsel 29,5,4,3 519 vadduwm 5,5,28 520 vadduwm 6,6,29 521 .long 0x13C3FE82 522 vadduwm 6,6,30 523 vxor 29,7,0 524 vsel 29,0,1,29 525 vadduwm 2,2,6 526 .long 0x13C78682 527 vadduwm 30,30,29 528 vadduwm 6,6,30 529 lvx 28,27,7 530 .long 0x13D80682 531 vadduwm 19,19,30 532 .long 0x13D17E82 533 vadduwm 19,19,30 534 vadduwm 19,19,12 535 vadduwm 5,5,18 536 vsel 29,4,3,2 537 vadduwm 4,4,28 538 vadduwm 5,5,29 539 .long 0x13C2FE82 540 vadduwm 5,5,30 541 vxor 29,6,7 542 vsel 29,7,0,29 543 vadduwm 1,1,5 544 .long 0x13C68682 545 vadduwm 30,30,29 546 vadduwm 5,5,30 547 lvx 28,28,7 548 .long 0x13D90682 549 vadduwm 24,24,30 550 .long 0x13D27E82 551 vadduwm 24,24,30 552 vadduwm 24,24,13 553 vadduwm 4,4,19 554 vsel 29,3,2,1 555 vadduwm 3,3,28 556 vadduwm 4,4,29 557 .long 0x13C1FE82 558 vadduwm 4,4,30 559 vxor 29,5,6 560 vsel 29,6,7,29 561 vadduwm 0,0,4 562 .long 0x13C58682 563 vadduwm 30,30,29 564 vadduwm 4,4,30 565 lvx 28,29,7 566 .long 0x13DA0682 567 vadduwm 25,25,30 568 .long 0x13D37E82 569 vadduwm 25,25,30 570 vadduwm 25,25,14 571 vadduwm 3,3,24 572 vsel 29,2,1,0 573 vadduwm 2,2,28 574 vadduwm 3,3,29 575 .long 0x13C0FE82 576 vadduwm 3,3,30 577 vxor 29,4,5 578 vsel 29,5,6,29 579 vadduwm 7,7,3 580 .long 0x13C48682 581 vadduwm 30,30,29 582 vadduwm 3,3,30 583 lvx 28,30,7 584 .long 0x13DB0682 585 vadduwm 26,26,30 586 .long 0x13D87E82 587 vadduwm 26,26,30 588 vadduwm 26,26,15 589 vadduwm 2,2,25 590 vsel 29,1,0,7 591 vadduwm 1,1,28 592 vadduwm 2,2,29 593 .long 0x13C7FE82 594 vadduwm 2,2,30 595 vxor 29,3,4 596 vsel 29,4,5,29 597 vadduwm 6,6,2 598 .long 0x13C38682 599 vadduwm 30,30,29 600 vadduwm 2,2,30 601 lvx 28,31,7 602 addi 7,7,0x80 603 .long 0x13C80682 604 vadduwm 27,27,30 605 .long 0x13D97E82 606 vadduwm 27,27,30 607 vadduwm 27,27,16 608 vadduwm 1,1,26 609 vsel 29,0,7,6 610 vadduwm 0,0,28 611 vadduwm 1,1,29 612 .long 0x13C6FE82 613 vadduwm 1,1,30 614 vxor 29,2,3 615 vsel 29,3,4,29 616 vadduwm 5,5,1 617 .long 0x13C28682 618 vadduwm 30,30,29 619 vadduwm 1,1,30 620 lvx 28,0,7 621 .long 0x13C90682 622 vadduwm 8,8,30 623 .long 0x13DA7E82 624 vadduwm 8,8,30 625 vadduwm 8,8,17 626 vadduwm 0,0,27 627 vsel 29,7,6,5 628 vadduwm 7,7,28 629 vadduwm 0,0,29 630 .long 0x13C5FE82 631 vadduwm 0,0,30 632 vxor 29,1,2 633 vsel 29,2,3,29 634 vadduwm 4,4,0 635 .long 0x13C18682 636 vadduwm 30,30,29 637 vadduwm 0,0,30 638 lvx 28,10,7 639 bdnz .L16_xx 640 641 lvx 10,0,11 642 subic. 5,5,1 643 lvx 11,10,11 644 vadduwm 0,0,10 645 lvx 12,26,11 646 vadduwm 1,1,11 647 lvx 13,27,11 648 vadduwm 2,2,12 649 lvx 14,28,11 650 vadduwm 3,3,13 651 lvx 15,29,11 652 vadduwm 4,4,14 653 lvx 16,30,11 654 vadduwm 5,5,15 655 lvx 17,31,11 656 vadduwm 6,6,16 657 vadduwm 7,7,17 658 bne .Loop 659 lvx 8,26,7 660 vperm 0,0,1,28 661 lvx 9,27,7 662 vperm 4,4,5,28 663 vperm 0,0,2,8 664 vperm 4,4,6,8 665 vperm 0,0,3,9 666 vperm 4,4,7,9 667 .long 0x7C001F19 668 .long 0x7C8A1F19 669 addi 11,1,207 670 mtlr 8 671 mtspr 256,12 672 lvx 24,0,11 673 lvx 25,10,11 674 lvx 26,26,11 675 lvx 27,27,11 676 lvx 28,28,11 677 lvx 29,29,11 678 lvx 30,30,11 679 lvx 31,31,11 680 ld 26,336(1) 681 ld 27,344(1) 682 ld 28,352(1) 683 ld 29,360(1) 684 ld 30,368(1) 685 ld 31,376(1) 686 addi 1,1,384 687 blr 688.long 0 689.byte 0,12,4,1,0x80,6,3,0 690.long 0 691#if (!defined(_CALL_ELF) || _CALL_ELF == 1) 692.size .zfs_sha256_power8,.-.zfs_sha256_power8 693.size zfs_sha256_power8,.-.zfs_sha256_power8 694#else 695.size zfs_sha256_power8,.-zfs_sha256_power8 696#endif 697.align 6 698.LPICmeup: 699 mflr 0 700 bcl 20,31,$+4 701 mflr 6 702 addi 6,6,56 703 mtlr 0 704 blr 705.long 0 706.byte 0,12,0x14,0,0,0,0,0 707.space 28 708.long 0x428a2f98,0x428a2f98,0x428a2f98,0x428a2f98 709.long 0x71374491,0x71374491,0x71374491,0x71374491 710.long 0xb5c0fbcf,0xb5c0fbcf,0xb5c0fbcf,0xb5c0fbcf 711.long 0xe9b5dba5,0xe9b5dba5,0xe9b5dba5,0xe9b5dba5 712.long 0x3956c25b,0x3956c25b,0x3956c25b,0x3956c25b 713.long 0x59f111f1,0x59f111f1,0x59f111f1,0x59f111f1 714.long 0x923f82a4,0x923f82a4,0x923f82a4,0x923f82a4 715.long 0xab1c5ed5,0xab1c5ed5,0xab1c5ed5,0xab1c5ed5 716.long 0xd807aa98,0xd807aa98,0xd807aa98,0xd807aa98 717.long 0x12835b01,0x12835b01,0x12835b01,0x12835b01 718.long 0x243185be,0x243185be,0x243185be,0x243185be 719.long 0x550c7dc3,0x550c7dc3,0x550c7dc3,0x550c7dc3 720.long 0x72be5d74,0x72be5d74,0x72be5d74,0x72be5d74 721.long 0x80deb1fe,0x80deb1fe,0x80deb1fe,0x80deb1fe 722.long 0x9bdc06a7,0x9bdc06a7,0x9bdc06a7,0x9bdc06a7 723.long 0xc19bf174,0xc19bf174,0xc19bf174,0xc19bf174 724.long 0xe49b69c1,0xe49b69c1,0xe49b69c1,0xe49b69c1 725.long 0xefbe4786,0xefbe4786,0xefbe4786,0xefbe4786 726.long 0x0fc19dc6,0x0fc19dc6,0x0fc19dc6,0x0fc19dc6 727.long 0x240ca1cc,0x240ca1cc,0x240ca1cc,0x240ca1cc 728.long 0x2de92c6f,0x2de92c6f,0x2de92c6f,0x2de92c6f 729.long 0x4a7484aa,0x4a7484aa,0x4a7484aa,0x4a7484aa 730.long 0x5cb0a9dc,0x5cb0a9dc,0x5cb0a9dc,0x5cb0a9dc 731.long 0x76f988da,0x76f988da,0x76f988da,0x76f988da 732.long 0x983e5152,0x983e5152,0x983e5152,0x983e5152 733.long 0xa831c66d,0xa831c66d,0xa831c66d,0xa831c66d 734.long 0xb00327c8,0xb00327c8,0xb00327c8,0xb00327c8 735.long 0xbf597fc7,0xbf597fc7,0xbf597fc7,0xbf597fc7 736.long 0xc6e00bf3,0xc6e00bf3,0xc6e00bf3,0xc6e00bf3 737.long 0xd5a79147,0xd5a79147,0xd5a79147,0xd5a79147 738.long 0x06ca6351,0x06ca6351,0x06ca6351,0x06ca6351 739.long 0x14292967,0x14292967,0x14292967,0x14292967 740.long 0x27b70a85,0x27b70a85,0x27b70a85,0x27b70a85 741.long 0x2e1b2138,0x2e1b2138,0x2e1b2138,0x2e1b2138 742.long 0x4d2c6dfc,0x4d2c6dfc,0x4d2c6dfc,0x4d2c6dfc 743.long 0x53380d13,0x53380d13,0x53380d13,0x53380d13 744.long 0x650a7354,0x650a7354,0x650a7354,0x650a7354 745.long 0x766a0abb,0x766a0abb,0x766a0abb,0x766a0abb 746.long 0x81c2c92e,0x81c2c92e,0x81c2c92e,0x81c2c92e 747.long 0x92722c85,0x92722c85,0x92722c85,0x92722c85 748.long 0xa2bfe8a1,0xa2bfe8a1,0xa2bfe8a1,0xa2bfe8a1 749.long 0xa81a664b,0xa81a664b,0xa81a664b,0xa81a664b 750.long 0xc24b8b70,0xc24b8b70,0xc24b8b70,0xc24b8b70 751.long 0xc76c51a3,0xc76c51a3,0xc76c51a3,0xc76c51a3 752.long 0xd192e819,0xd192e819,0xd192e819,0xd192e819 753.long 0xd6990624,0xd6990624,0xd6990624,0xd6990624 754.long 0xf40e3585,0xf40e3585,0xf40e3585,0xf40e3585 755.long 0x106aa070,0x106aa070,0x106aa070,0x106aa070 756.long 0x19a4c116,0x19a4c116,0x19a4c116,0x19a4c116 757.long 0x1e376c08,0x1e376c08,0x1e376c08,0x1e376c08 758.long 0x2748774c,0x2748774c,0x2748774c,0x2748774c 759.long 0x34b0bcb5,0x34b0bcb5,0x34b0bcb5,0x34b0bcb5 760.long 0x391c0cb3,0x391c0cb3,0x391c0cb3,0x391c0cb3 761.long 0x4ed8aa4a,0x4ed8aa4a,0x4ed8aa4a,0x4ed8aa4a 762.long 0x5b9cca4f,0x5b9cca4f,0x5b9cca4f,0x5b9cca4f 763.long 0x682e6ff3,0x682e6ff3,0x682e6ff3,0x682e6ff3 764.long 0x748f82ee,0x748f82ee,0x748f82ee,0x748f82ee 765.long 0x78a5636f,0x78a5636f,0x78a5636f,0x78a5636f 766.long 0x84c87814,0x84c87814,0x84c87814,0x84c87814 767.long 0x8cc70208,0x8cc70208,0x8cc70208,0x8cc70208 768.long 0x90befffa,0x90befffa,0x90befffa,0x90befffa 769.long 0xa4506ceb,0xa4506ceb,0xa4506ceb,0xa4506ceb 770.long 0xbef9a3f7,0xbef9a3f7,0xbef9a3f7,0xbef9a3f7 771.long 0xc67178f2,0xc67178f2,0xc67178f2,0xc67178f2 772.long 0,0,0,0 773.long 0x00010203,0x10111213,0x10111213,0x10111213 774.long 0x00010203,0x04050607,0x10111213,0x10111213 775.long 0x00010203,0x04050607,0x08090a0b,0x10111213 776 777#elif (defined(__PPC64__) && defined(__LITTLE_ENDIAN__)) 778 779.abiversion 2 780.text 781 782.globl zfs_sha256_power8 783.type zfs_sha256_power8,@function 784.align 6 785zfs_sha256_power8: 786.localentry zfs_sha256_power8,0 787 788 stdu 1,-384(1) 789 mflr 8 790 li 10,207 791 li 11,223 792 stvx 24,10,1 793 addi 10,10,32 794 li 12,-1 795 stvx 25,11,1 796 addi 11,11,32 797 stvx 26,10,1 798 addi 10,10,32 799 stvx 27,11,1 800 addi 11,11,32 801 stvx 28,10,1 802 addi 10,10,32 803 stvx 29,11,1 804 addi 11,11,32 805 stvx 30,10,1 806 stvx 31,11,1 807 li 11,-4096+255 808 stw 12,332(1) 809 li 10,0x10 810 std 26,336(1) 811 li 26,0x20 812 std 27,344(1) 813 li 27,0x30 814 std 28,352(1) 815 li 28,0x40 816 std 29,360(1) 817 li 29,0x50 818 std 30,368(1) 819 li 30,0x60 820 std 31,376(1) 821 li 31,0x70 822 std 8,400(1) 823 or 11,11,11 824 825 bl .LPICmeup 826 addi 11,1,79 827 li 7,8 828 lvsl 31,0,7 829 vspltisb 28,0x0f 830 vxor 31,31,28 831 .long 0x7C001E19 832 .long 0x7C8A1E19 833 vsldoi 1,0,0,4 834 vsldoi 2,0,0,8 835 vsldoi 3,0,0,12 836 vsldoi 5,4,4,4 837 vsldoi 6,4,4,8 838 vsldoi 7,4,4,12 839 li 0,3 840 b .Loop 841.align 5 842.Loop: 843 lvx 28,0,6 844 .long 0x7D002699 845 addi 4,4,16 846 mr 7,6 847 stvx 0,0,11 848 stvx 1,10,11 849 stvx 2,26,11 850 stvx 3,27,11 851 stvx 4,28,11 852 stvx 5,29,11 853 stvx 6,30,11 854 stvx 7,31,11 855 vadduwm 7,7,28 856 lvx 28,10,6 857 vperm 8,8,8,31 858 vadduwm 7,7,8 859 vsel 29,6,5,4 860 vadduwm 6,6,28 861 vadduwm 7,7,29 862 .long 0x13C4FE82 863 vadduwm 7,7,30 864 vxor 29,0,1 865 vsel 29,1,2,29 866 vadduwm 3,3,7 867 .long 0x13C08682 868 vadduwm 30,30,29 869 vadduwm 7,7,30 870 lvx 28,26,7 871 vsldoi 9,8,8,4 872 vadduwm 6,6,9 873 vsel 29,5,4,3 874 vadduwm 5,5,28 875 vadduwm 6,6,29 876 .long 0x13C3FE82 877 vadduwm 6,6,30 878 vxor 29,7,0 879 vsel 29,0,1,29 880 vadduwm 2,2,6 881 .long 0x13C78682 882 vadduwm 30,30,29 883 vadduwm 6,6,30 884 lvx 28,27,7 885 vsldoi 10,9,9,4 886 vadduwm 5,5,10 887 vsel 29,4,3,2 888 vadduwm 4,4,28 889 vadduwm 5,5,29 890 .long 0x13C2FE82 891 vadduwm 5,5,30 892 vxor 29,6,7 893 vsel 29,7,0,29 894 vadduwm 1,1,5 895 .long 0x13C68682 896 vadduwm 30,30,29 897 vadduwm 5,5,30 898 lvx 28,28,7 899 .long 0x7D802699 900 addi 4,4,16 901 vsldoi 11,10,10,4 902 vadduwm 4,4,11 903 vsel 29,3,2,1 904 vadduwm 3,3,28 905 vadduwm 4,4,29 906 .long 0x13C1FE82 907 vadduwm 4,4,30 908 vxor 29,5,6 909 vsel 29,6,7,29 910 vadduwm 0,0,4 911 .long 0x13C58682 912 vadduwm 30,30,29 913 vadduwm 4,4,30 914 lvx 28,29,7 915 vperm 12,12,12,31 916 vadduwm 3,3,12 917 vsel 29,2,1,0 918 vadduwm 2,2,28 919 vadduwm 3,3,29 920 .long 0x13C0FE82 921 vadduwm 3,3,30 922 vxor 29,4,5 923 vsel 29,5,6,29 924 vadduwm 7,7,3 925 .long 0x13C48682 926 vadduwm 30,30,29 927 vadduwm 3,3,30 928 lvx 28,30,7 929 vsldoi 13,12,12,4 930 vadduwm 2,2,13 931 vsel 29,1,0,7 932 vadduwm 1,1,28 933 vadduwm 2,2,29 934 .long 0x13C7FE82 935 vadduwm 2,2,30 936 vxor 29,3,4 937 vsel 29,4,5,29 938 vadduwm 6,6,2 939 .long 0x13C38682 940 vadduwm 30,30,29 941 vadduwm 2,2,30 942 lvx 28,31,7 943 addi 7,7,0x80 944 vsldoi 14,13,13,4 945 vadduwm 1,1,14 946 vsel 29,0,7,6 947 vadduwm 0,0,28 948 vadduwm 1,1,29 949 .long 0x13C6FE82 950 vadduwm 1,1,30 951 vxor 29,2,3 952 vsel 29,3,4,29 953 vadduwm 5,5,1 954 .long 0x13C28682 955 vadduwm 30,30,29 956 vadduwm 1,1,30 957 lvx 28,0,7 958 .long 0x7E002699 959 addi 4,4,16 960 vsldoi 15,14,14,4 961 vadduwm 0,0,15 962 vsel 29,7,6,5 963 vadduwm 7,7,28 964 vadduwm 0,0,29 965 .long 0x13C5FE82 966 vadduwm 0,0,30 967 vxor 29,1,2 968 vsel 29,2,3,29 969 vadduwm 4,4,0 970 .long 0x13C18682 971 vadduwm 30,30,29 972 vadduwm 0,0,30 973 lvx 28,10,7 974 vperm 16,16,16,31 975 vadduwm 7,7,16 976 vsel 29,6,5,4 977 vadduwm 6,6,28 978 vadduwm 7,7,29 979 .long 0x13C4FE82 980 vadduwm 7,7,30 981 vxor 29,0,1 982 vsel 29,1,2,29 983 vadduwm 3,3,7 984 .long 0x13C08682 985 vadduwm 30,30,29 986 vadduwm 7,7,30 987 lvx 28,26,7 988 vsldoi 17,16,16,4 989 vadduwm 6,6,17 990 vsel 29,5,4,3 991 vadduwm 5,5,28 992 vadduwm 6,6,29 993 .long 0x13C3FE82 994 vadduwm 6,6,30 995 vxor 29,7,0 996 vsel 29,0,1,29 997 vadduwm 2,2,6 998 .long 0x13C78682 999 vadduwm 30,30,29 1000 vadduwm 6,6,30 1001 lvx 28,27,7 1002 vsldoi 18,17,17,4 1003 vadduwm 5,5,18 1004 vsel 29,4,3,2 1005 vadduwm 4,4,28 1006 vadduwm 5,5,29 1007 .long 0x13C2FE82 1008 vadduwm 5,5,30 1009 vxor 29,6,7 1010 vsel 29,7,0,29 1011 vadduwm 1,1,5 1012 .long 0x13C68682 1013 vadduwm 30,30,29 1014 vadduwm 5,5,30 1015 lvx 28,28,7 1016 .long 0x7F002699 1017 addi 4,4,16 1018 vsldoi 19,18,18,4 1019 vadduwm 4,4,19 1020 vsel 29,3,2,1 1021 vadduwm 3,3,28 1022 vadduwm 4,4,29 1023 .long 0x13C1FE82 1024 vadduwm 4,4,30 1025 vxor 29,5,6 1026 vsel 29,6,7,29 1027 vadduwm 0,0,4 1028 .long 0x13C58682 1029 vadduwm 30,30,29 1030 vadduwm 4,4,30 1031 lvx 28,29,7 1032 vperm 24,24,24,31 1033 vadduwm 3,3,24 1034 vsel 29,2,1,0 1035 vadduwm 2,2,28 1036 vadduwm 3,3,29 1037 .long 0x13C0FE82 1038 vadduwm 3,3,30 1039 vxor 29,4,5 1040 vsel 29,5,6,29 1041 vadduwm 7,7,3 1042 .long 0x13C48682 1043 vadduwm 30,30,29 1044 vadduwm 3,3,30 1045 lvx 28,30,7 1046 vsldoi 25,24,24,4 1047 vadduwm 2,2,25 1048 vsel 29,1,0,7 1049 vadduwm 1,1,28 1050 vadduwm 2,2,29 1051 .long 0x13C7FE82 1052 vadduwm 2,2,30 1053 vxor 29,3,4 1054 vsel 29,4,5,29 1055 vadduwm 6,6,2 1056 .long 0x13C38682 1057 vadduwm 30,30,29 1058 vadduwm 2,2,30 1059 lvx 28,31,7 1060 addi 7,7,0x80 1061 vsldoi 26,25,25,4 1062 vadduwm 1,1,26 1063 vsel 29,0,7,6 1064 vadduwm 0,0,28 1065 vadduwm 1,1,29 1066 .long 0x13C6FE82 1067 vadduwm 1,1,30 1068 vxor 29,2,3 1069 vsel 29,3,4,29 1070 vadduwm 5,5,1 1071 .long 0x13C28682 1072 vadduwm 30,30,29 1073 vadduwm 1,1,30 1074 lvx 28,0,7 1075 vsldoi 27,26,26,4 1076 .long 0x13C90682 1077 vadduwm 8,8,30 1078 .long 0x13DA7E82 1079 vadduwm 8,8,30 1080 vadduwm 8,8,17 1081 vadduwm 0,0,27 1082 vsel 29,7,6,5 1083 vadduwm 7,7,28 1084 vadduwm 0,0,29 1085 .long 0x13C5FE82 1086 vadduwm 0,0,30 1087 vxor 29,1,2 1088 vsel 29,2,3,29 1089 vadduwm 4,4,0 1090 .long 0x13C18682 1091 vadduwm 30,30,29 1092 vadduwm 0,0,30 1093 lvx 28,10,7 1094 mtctr 0 1095 b .L16_xx 1096.align 5 1097.L16_xx: 1098 .long 0x13CA0682 1099 vadduwm 9,9,30 1100 .long 0x13DB7E82 1101 vadduwm 9,9,30 1102 vadduwm 9,9,18 1103 vadduwm 7,7,8 1104 vsel 29,6,5,4 1105 vadduwm 6,6,28 1106 vadduwm 7,7,29 1107 .long 0x13C4FE82 1108 vadduwm 7,7,30 1109 vxor 29,0,1 1110 vsel 29,1,2,29 1111 vadduwm 3,3,7 1112 .long 0x13C08682 1113 vadduwm 30,30,29 1114 vadduwm 7,7,30 1115 lvx 28,26,7 1116 .long 0x13CB0682 1117 vadduwm 10,10,30 1118 .long 0x13C87E82 1119 vadduwm 10,10,30 1120 vadduwm 10,10,19 1121 vadduwm 6,6,9 1122 vsel 29,5,4,3 1123 vadduwm 5,5,28 1124 vadduwm 6,6,29 1125 .long 0x13C3FE82 1126 vadduwm 6,6,30 1127 vxor 29,7,0 1128 vsel 29,0,1,29 1129 vadduwm 2,2,6 1130 .long 0x13C78682 1131 vadduwm 30,30,29 1132 vadduwm 6,6,30 1133 lvx 28,27,7 1134 .long 0x13CC0682 1135 vadduwm 11,11,30 1136 .long 0x13C97E82 1137 vadduwm 11,11,30 1138 vadduwm 11,11,24 1139 vadduwm 5,5,10 1140 vsel 29,4,3,2 1141 vadduwm 4,4,28 1142 vadduwm 5,5,29 1143 .long 0x13C2FE82 1144 vadduwm 5,5,30 1145 vxor 29,6,7 1146 vsel 29,7,0,29 1147 vadduwm 1,1,5 1148 .long 0x13C68682 1149 vadduwm 30,30,29 1150 vadduwm 5,5,30 1151 lvx 28,28,7 1152 .long 0x13CD0682 1153 vadduwm 12,12,30 1154 .long 0x13CA7E82 1155 vadduwm 12,12,30 1156 vadduwm 12,12,25 1157 vadduwm 4,4,11 1158 vsel 29,3,2,1 1159 vadduwm 3,3,28 1160 vadduwm 4,4,29 1161 .long 0x13C1FE82 1162 vadduwm 4,4,30 1163 vxor 29,5,6 1164 vsel 29,6,7,29 1165 vadduwm 0,0,4 1166 .long 0x13C58682 1167 vadduwm 30,30,29 1168 vadduwm 4,4,30 1169 lvx 28,29,7 1170 .long 0x13CE0682 1171 vadduwm 13,13,30 1172 .long 0x13CB7E82 1173 vadduwm 13,13,30 1174 vadduwm 13,13,26 1175 vadduwm 3,3,12 1176 vsel 29,2,1,0 1177 vadduwm 2,2,28 1178 vadduwm 3,3,29 1179 .long 0x13C0FE82 1180 vadduwm 3,3,30 1181 vxor 29,4,5 1182 vsel 29,5,6,29 1183 vadduwm 7,7,3 1184 .long 0x13C48682 1185 vadduwm 30,30,29 1186 vadduwm 3,3,30 1187 lvx 28,30,7 1188 .long 0x13CF0682 1189 vadduwm 14,14,30 1190 .long 0x13CC7E82 1191 vadduwm 14,14,30 1192 vadduwm 14,14,27 1193 vadduwm 2,2,13 1194 vsel 29,1,0,7 1195 vadduwm 1,1,28 1196 vadduwm 2,2,29 1197 .long 0x13C7FE82 1198 vadduwm 2,2,30 1199 vxor 29,3,4 1200 vsel 29,4,5,29 1201 vadduwm 6,6,2 1202 .long 0x13C38682 1203 vadduwm 30,30,29 1204 vadduwm 2,2,30 1205 lvx 28,31,7 1206 addi 7,7,0x80 1207 .long 0x13D00682 1208 vadduwm 15,15,30 1209 .long 0x13CD7E82 1210 vadduwm 15,15,30 1211 vadduwm 15,15,8 1212 vadduwm 1,1,14 1213 vsel 29,0,7,6 1214 vadduwm 0,0,28 1215 vadduwm 1,1,29 1216 .long 0x13C6FE82 1217 vadduwm 1,1,30 1218 vxor 29,2,3 1219 vsel 29,3,4,29 1220 vadduwm 5,5,1 1221 .long 0x13C28682 1222 vadduwm 30,30,29 1223 vadduwm 1,1,30 1224 lvx 28,0,7 1225 .long 0x13D10682 1226 vadduwm 16,16,30 1227 .long 0x13CE7E82 1228 vadduwm 16,16,30 1229 vadduwm 16,16,9 1230 vadduwm 0,0,15 1231 vsel 29,7,6,5 1232 vadduwm 7,7,28 1233 vadduwm 0,0,29 1234 .long 0x13C5FE82 1235 vadduwm 0,0,30 1236 vxor 29,1,2 1237 vsel 29,2,3,29 1238 vadduwm 4,4,0 1239 .long 0x13C18682 1240 vadduwm 30,30,29 1241 vadduwm 0,0,30 1242 lvx 28,10,7 1243 .long 0x13D20682 1244 vadduwm 17,17,30 1245 .long 0x13CF7E82 1246 vadduwm 17,17,30 1247 vadduwm 17,17,10 1248 vadduwm 7,7,16 1249 vsel 29,6,5,4 1250 vadduwm 6,6,28 1251 vadduwm 7,7,29 1252 .long 0x13C4FE82 1253 vadduwm 7,7,30 1254 vxor 29,0,1 1255 vsel 29,1,2,29 1256 vadduwm 3,3,7 1257 .long 0x13C08682 1258 vadduwm 30,30,29 1259 vadduwm 7,7,30 1260 lvx 28,26,7 1261 .long 0x13D30682 1262 vadduwm 18,18,30 1263 .long 0x13D07E82 1264 vadduwm 18,18,30 1265 vadduwm 18,18,11 1266 vadduwm 6,6,17 1267 vsel 29,5,4,3 1268 vadduwm 5,5,28 1269 vadduwm 6,6,29 1270 .long 0x13C3FE82 1271 vadduwm 6,6,30 1272 vxor 29,7,0 1273 vsel 29,0,1,29 1274 vadduwm 2,2,6 1275 .long 0x13C78682 1276 vadduwm 30,30,29 1277 vadduwm 6,6,30 1278 lvx 28,27,7 1279 .long 0x13D80682 1280 vadduwm 19,19,30 1281 .long 0x13D17E82 1282 vadduwm 19,19,30 1283 vadduwm 19,19,12 1284 vadduwm 5,5,18 1285 vsel 29,4,3,2 1286 vadduwm 4,4,28 1287 vadduwm 5,5,29 1288 .long 0x13C2FE82 1289 vadduwm 5,5,30 1290 vxor 29,6,7 1291 vsel 29,7,0,29 1292 vadduwm 1,1,5 1293 .long 0x13C68682 1294 vadduwm 30,30,29 1295 vadduwm 5,5,30 1296 lvx 28,28,7 1297 .long 0x13D90682 1298 vadduwm 24,24,30 1299 .long 0x13D27E82 1300 vadduwm 24,24,30 1301 vadduwm 24,24,13 1302 vadduwm 4,4,19 1303 vsel 29,3,2,1 1304 vadduwm 3,3,28 1305 vadduwm 4,4,29 1306 .long 0x13C1FE82 1307 vadduwm 4,4,30 1308 vxor 29,5,6 1309 vsel 29,6,7,29 1310 vadduwm 0,0,4 1311 .long 0x13C58682 1312 vadduwm 30,30,29 1313 vadduwm 4,4,30 1314 lvx 28,29,7 1315 .long 0x13DA0682 1316 vadduwm 25,25,30 1317 .long 0x13D37E82 1318 vadduwm 25,25,30 1319 vadduwm 25,25,14 1320 vadduwm 3,3,24 1321 vsel 29,2,1,0 1322 vadduwm 2,2,28 1323 vadduwm 3,3,29 1324 .long 0x13C0FE82 1325 vadduwm 3,3,30 1326 vxor 29,4,5 1327 vsel 29,5,6,29 1328 vadduwm 7,7,3 1329 .long 0x13C48682 1330 vadduwm 30,30,29 1331 vadduwm 3,3,30 1332 lvx 28,30,7 1333 .long 0x13DB0682 1334 vadduwm 26,26,30 1335 .long 0x13D87E82 1336 vadduwm 26,26,30 1337 vadduwm 26,26,15 1338 vadduwm 2,2,25 1339 vsel 29,1,0,7 1340 vadduwm 1,1,28 1341 vadduwm 2,2,29 1342 .long 0x13C7FE82 1343 vadduwm 2,2,30 1344 vxor 29,3,4 1345 vsel 29,4,5,29 1346 vadduwm 6,6,2 1347 .long 0x13C38682 1348 vadduwm 30,30,29 1349 vadduwm 2,2,30 1350 lvx 28,31,7 1351 addi 7,7,0x80 1352 .long 0x13C80682 1353 vadduwm 27,27,30 1354 .long 0x13D97E82 1355 vadduwm 27,27,30 1356 vadduwm 27,27,16 1357 vadduwm 1,1,26 1358 vsel 29,0,7,6 1359 vadduwm 0,0,28 1360 vadduwm 1,1,29 1361 .long 0x13C6FE82 1362 vadduwm 1,1,30 1363 vxor 29,2,3 1364 vsel 29,3,4,29 1365 vadduwm 5,5,1 1366 .long 0x13C28682 1367 vadduwm 30,30,29 1368 vadduwm 1,1,30 1369 lvx 28,0,7 1370 .long 0x13C90682 1371 vadduwm 8,8,30 1372 .long 0x13DA7E82 1373 vadduwm 8,8,30 1374 vadduwm 8,8,17 1375 vadduwm 0,0,27 1376 vsel 29,7,6,5 1377 vadduwm 7,7,28 1378 vadduwm 0,0,29 1379 .long 0x13C5FE82 1380 vadduwm 0,0,30 1381 vxor 29,1,2 1382 vsel 29,2,3,29 1383 vadduwm 4,4,0 1384 .long 0x13C18682 1385 vadduwm 30,30,29 1386 vadduwm 0,0,30 1387 lvx 28,10,7 1388 bdnz .L16_xx 1389 1390 lvx 10,0,11 1391 subic. 5,5,1 1392 lvx 11,10,11 1393 vadduwm 0,0,10 1394 lvx 12,26,11 1395 vadduwm 1,1,11 1396 lvx 13,27,11 1397 vadduwm 2,2,12 1398 lvx 14,28,11 1399 vadduwm 3,3,13 1400 lvx 15,29,11 1401 vadduwm 4,4,14 1402 lvx 16,30,11 1403 vadduwm 5,5,15 1404 lvx 17,31,11 1405 vadduwm 6,6,16 1406 vadduwm 7,7,17 1407 bne .Loop 1408 lvx 8,26,7 1409 vperm 0,0,1,28 1410 lvx 9,27,7 1411 vperm 4,4,5,28 1412 vperm 0,0,2,8 1413 vperm 4,4,6,8 1414 vperm 0,0,3,9 1415 vperm 4,4,7,9 1416 .long 0x7C001F19 1417 .long 0x7C8A1F19 1418 addi 11,1,207 1419 mtlr 8 1420 or 12,12,12 1421 lvx 24,0,11 1422 lvx 25,10,11 1423 lvx 26,26,11 1424 lvx 27,27,11 1425 lvx 28,28,11 1426 lvx 29,29,11 1427 lvx 30,30,11 1428 lvx 31,31,11 1429 ld 26,336(1) 1430 ld 27,344(1) 1431 ld 28,352(1) 1432 ld 29,360(1) 1433 ld 30,368(1) 1434 ld 31,376(1) 1435 addi 1,1,384 1436 blr 1437.long 0 1438.byte 0,12,4,1,0x80,6,3,0 1439.long 0 1440.size zfs_sha256_power8,.-zfs_sha256_power8 1441.align 6 1442.LPICmeup: 1443 mflr 0 1444 bcl 20,31,$+4 1445 mflr 6 1446 addi 6,6,56 1447 mtlr 0 1448 blr 1449.long 0 1450.byte 0,12,0x14,0,0,0,0,0 1451.space 28 1452.long 0x428a2f98,0x428a2f98,0x428a2f98,0x428a2f98 1453.long 0x71374491,0x71374491,0x71374491,0x71374491 1454.long 0xb5c0fbcf,0xb5c0fbcf,0xb5c0fbcf,0xb5c0fbcf 1455.long 0xe9b5dba5,0xe9b5dba5,0xe9b5dba5,0xe9b5dba5 1456.long 0x3956c25b,0x3956c25b,0x3956c25b,0x3956c25b 1457.long 0x59f111f1,0x59f111f1,0x59f111f1,0x59f111f1 1458.long 0x923f82a4,0x923f82a4,0x923f82a4,0x923f82a4 1459.long 0xab1c5ed5,0xab1c5ed5,0xab1c5ed5,0xab1c5ed5 1460.long 0xd807aa98,0xd807aa98,0xd807aa98,0xd807aa98 1461.long 0x12835b01,0x12835b01,0x12835b01,0x12835b01 1462.long 0x243185be,0x243185be,0x243185be,0x243185be 1463.long 0x550c7dc3,0x550c7dc3,0x550c7dc3,0x550c7dc3 1464.long 0x72be5d74,0x72be5d74,0x72be5d74,0x72be5d74 1465.long 0x80deb1fe,0x80deb1fe,0x80deb1fe,0x80deb1fe 1466.long 0x9bdc06a7,0x9bdc06a7,0x9bdc06a7,0x9bdc06a7 1467.long 0xc19bf174,0xc19bf174,0xc19bf174,0xc19bf174 1468.long 0xe49b69c1,0xe49b69c1,0xe49b69c1,0xe49b69c1 1469.long 0xefbe4786,0xefbe4786,0xefbe4786,0xefbe4786 1470.long 0x0fc19dc6,0x0fc19dc6,0x0fc19dc6,0x0fc19dc6 1471.long 0x240ca1cc,0x240ca1cc,0x240ca1cc,0x240ca1cc 1472.long 0x2de92c6f,0x2de92c6f,0x2de92c6f,0x2de92c6f 1473.long 0x4a7484aa,0x4a7484aa,0x4a7484aa,0x4a7484aa 1474.long 0x5cb0a9dc,0x5cb0a9dc,0x5cb0a9dc,0x5cb0a9dc 1475.long 0x76f988da,0x76f988da,0x76f988da,0x76f988da 1476.long 0x983e5152,0x983e5152,0x983e5152,0x983e5152 1477.long 0xa831c66d,0xa831c66d,0xa831c66d,0xa831c66d 1478.long 0xb00327c8,0xb00327c8,0xb00327c8,0xb00327c8 1479.long 0xbf597fc7,0xbf597fc7,0xbf597fc7,0xbf597fc7 1480.long 0xc6e00bf3,0xc6e00bf3,0xc6e00bf3,0xc6e00bf3 1481.long 0xd5a79147,0xd5a79147,0xd5a79147,0xd5a79147 1482.long 0x06ca6351,0x06ca6351,0x06ca6351,0x06ca6351 1483.long 0x14292967,0x14292967,0x14292967,0x14292967 1484.long 0x27b70a85,0x27b70a85,0x27b70a85,0x27b70a85 1485.long 0x2e1b2138,0x2e1b2138,0x2e1b2138,0x2e1b2138 1486.long 0x4d2c6dfc,0x4d2c6dfc,0x4d2c6dfc,0x4d2c6dfc 1487.long 0x53380d13,0x53380d13,0x53380d13,0x53380d13 1488.long 0x650a7354,0x650a7354,0x650a7354,0x650a7354 1489.long 0x766a0abb,0x766a0abb,0x766a0abb,0x766a0abb 1490.long 0x81c2c92e,0x81c2c92e,0x81c2c92e,0x81c2c92e 1491.long 0x92722c85,0x92722c85,0x92722c85,0x92722c85 1492.long 0xa2bfe8a1,0xa2bfe8a1,0xa2bfe8a1,0xa2bfe8a1 1493.long 0xa81a664b,0xa81a664b,0xa81a664b,0xa81a664b 1494.long 0xc24b8b70,0xc24b8b70,0xc24b8b70,0xc24b8b70 1495.long 0xc76c51a3,0xc76c51a3,0xc76c51a3,0xc76c51a3 1496.long 0xd192e819,0xd192e819,0xd192e819,0xd192e819 1497.long 0xd6990624,0xd6990624,0xd6990624,0xd6990624 1498.long 0xf40e3585,0xf40e3585,0xf40e3585,0xf40e3585 1499.long 0x106aa070,0x106aa070,0x106aa070,0x106aa070 1500.long 0x19a4c116,0x19a4c116,0x19a4c116,0x19a4c116 1501.long 0x1e376c08,0x1e376c08,0x1e376c08,0x1e376c08 1502.long 0x2748774c,0x2748774c,0x2748774c,0x2748774c 1503.long 0x34b0bcb5,0x34b0bcb5,0x34b0bcb5,0x34b0bcb5 1504.long 0x391c0cb3,0x391c0cb3,0x391c0cb3,0x391c0cb3 1505.long 0x4ed8aa4a,0x4ed8aa4a,0x4ed8aa4a,0x4ed8aa4a 1506.long 0x5b9cca4f,0x5b9cca4f,0x5b9cca4f,0x5b9cca4f 1507.long 0x682e6ff3,0x682e6ff3,0x682e6ff3,0x682e6ff3 1508.long 0x748f82ee,0x748f82ee,0x748f82ee,0x748f82ee 1509.long 0x78a5636f,0x78a5636f,0x78a5636f,0x78a5636f 1510.long 0x84c87814,0x84c87814,0x84c87814,0x84c87814 1511.long 0x8cc70208,0x8cc70208,0x8cc70208,0x8cc70208 1512.long 0x90befffa,0x90befffa,0x90befffa,0x90befffa 1513.long 0xa4506ceb,0xa4506ceb,0xa4506ceb,0xa4506ceb 1514.long 0xbef9a3f7,0xbef9a3f7,0xbef9a3f7,0xbef9a3f7 1515.long 0xc67178f2,0xc67178f2,0xc67178f2,0xc67178f2 1516.long 0,0,0,0 1517.long 0x10111213,0x10111213,0x10111213,0x00010203 1518.long 0x10111213,0x10111213,0x04050607,0x00010203 1519.long 0x10111213,0x08090a0b,0x04050607,0x00010203 1520#endif 1521