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