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_sha512_power8 28.globl .zfs_sha512_power8 29.type zfs_sha512_power8,@function 30.section ".opd","aw" 31.align 3 32zfs_sha512_power8: 33.quad .zfs_sha512_power8,.TOC.@tocbase,0 34.previous 35.align 6 36.zfs_sha512_power8: 37#else 38.abiversion 2 39.text 40 41.globl zfs_sha512_power8 42.type zfs_sha512_power8,@function 43.align 6 44zfs_sha512_power8: 45.localentry zfs_sha512_power8,0 46#endif 47 48 stdu 1,-384(1) 49 mflr 8 50 li 10,207 51 li 11,223 52 stvx 24,10,1 53 addi 10,10,32 54 mfspr 12,256 55 stvx 25,11,1 56 addi 11,11,32 57 stvx 26,10,1 58 addi 10,10,32 59 stvx 27,11,1 60 addi 11,11,32 61 stvx 28,10,1 62 addi 10,10,32 63 stvx 29,11,1 64 addi 11,11,32 65 stvx 30,10,1 66 stvx 31,11,1 67 li 11,-4096+255 68 stw 12,332(1) 69 li 10,0x10 70 std 26,336(1) 71 li 26,0x20 72 std 27,344(1) 73 li 27,0x30 74 std 28,352(1) 75 li 28,0x40 76 std 29,360(1) 77 li 29,0x50 78 std 30,368(1) 79 li 30,0x60 80 std 31,376(1) 81 li 31,0x70 82 std 8,400(1) 83 mtspr 256,11 84 85 bl .LPICmeup 86 addi 11,1,79 87 .long 0x7C001E99 88 .long 0x7C4A1E99 89 .long 0x7C9A1E99 90 vsldoi 1,0,0,8 91 .long 0x7CDB1E99 92 vsldoi 3,2,2,8 93 vsldoi 5,4,4,8 94 vsldoi 7,6,6,8 95 li 0,4 96 b .Loop 97.align 5 98.Loop: 99 lvx 28,0,6 100 .long 0x7D002699 101 addi 4,4,16 102 mr 7,6 103 stvx 0,0,11 104 stvx 1,10,11 105 stvx 2,26,11 106 stvx 3,27,11 107 stvx 4,28,11 108 stvx 5,29,11 109 stvx 6,30,11 110 stvx 7,31,11 111 .long 0x10E7E0C0 112 lvx 28,10,6 113 .long 0x10E740C0 114 vsel 29,6,5,4 115 .long 0x10C6E0C0 116 .long 0x10E7E8C0 117 .long 0x13C4FEC2 118 .long 0x10E7F0C0 119 vxor 29,0,1 120 vsel 29,1,2,29 121 .long 0x106338C0 122 .long 0x13C086C2 123 .long 0x13DEE8C0 124 .long 0x10E7F0C0 125 lvx 28,26,7 126 .long 0x7D402699 127 addi 4,4,16 128 vsldoi 9,8,8,8 129 .long 0x10C648C0 130 vsel 29,5,4,3 131 .long 0x10A5E0C0 132 .long 0x10C6E8C0 133 .long 0x13C3FEC2 134 .long 0x10C6F0C0 135 vxor 29,7,0 136 vsel 29,0,1,29 137 .long 0x104230C0 138 .long 0x13C786C2 139 .long 0x13DEE8C0 140 .long 0x10C6F0C0 141 lvx 28,27,7 142 .long 0x10A550C0 143 vsel 29,4,3,2 144 .long 0x1084E0C0 145 .long 0x10A5E8C0 146 .long 0x13C2FEC2 147 .long 0x10A5F0C0 148 vxor 29,6,7 149 vsel 29,7,0,29 150 .long 0x102128C0 151 .long 0x13C686C2 152 .long 0x13DEE8C0 153 .long 0x10A5F0C0 154 lvx 28,28,7 155 .long 0x7D802699 156 addi 4,4,16 157 vsldoi 11,10,10,8 158 .long 0x108458C0 159 vsel 29,3,2,1 160 .long 0x1063E0C0 161 .long 0x1084E8C0 162 .long 0x13C1FEC2 163 .long 0x1084F0C0 164 vxor 29,5,6 165 vsel 29,6,7,29 166 .long 0x100020C0 167 .long 0x13C586C2 168 .long 0x13DEE8C0 169 .long 0x1084F0C0 170 lvx 28,29,7 171 .long 0x106360C0 172 vsel 29,2,1,0 173 .long 0x1042E0C0 174 .long 0x1063E8C0 175 .long 0x13C0FEC2 176 .long 0x1063F0C0 177 vxor 29,4,5 178 vsel 29,5,6,29 179 .long 0x10E718C0 180 .long 0x13C486C2 181 .long 0x13DEE8C0 182 .long 0x1063F0C0 183 lvx 28,30,7 184 .long 0x7DC02699 185 addi 4,4,16 186 vsldoi 13,12,12,8 187 .long 0x104268C0 188 vsel 29,1,0,7 189 .long 0x1021E0C0 190 .long 0x1042E8C0 191 .long 0x13C7FEC2 192 .long 0x1042F0C0 193 vxor 29,3,4 194 vsel 29,4,5,29 195 .long 0x10C610C0 196 .long 0x13C386C2 197 .long 0x13DEE8C0 198 .long 0x1042F0C0 199 lvx 28,31,7 200 addi 7,7,0x80 201 .long 0x102170C0 202 vsel 29,0,7,6 203 .long 0x1000E0C0 204 .long 0x1021E8C0 205 .long 0x13C6FEC2 206 .long 0x1021F0C0 207 vxor 29,2,3 208 vsel 29,3,4,29 209 .long 0x10A508C0 210 .long 0x13C286C2 211 .long 0x13DEE8C0 212 .long 0x1021F0C0 213 lvx 28,0,7 214 .long 0x7E002699 215 addi 4,4,16 216 vsldoi 15,14,14,8 217 .long 0x100078C0 218 vsel 29,7,6,5 219 .long 0x10E7E0C0 220 .long 0x1000E8C0 221 .long 0x13C5FEC2 222 .long 0x1000F0C0 223 vxor 29,1,2 224 vsel 29,2,3,29 225 .long 0x108400C0 226 .long 0x13C186C2 227 .long 0x13DEE8C0 228 .long 0x1000F0C0 229 lvx 28,10,7 230 .long 0x10E780C0 231 vsel 29,6,5,4 232 .long 0x10C6E0C0 233 .long 0x10E7E8C0 234 .long 0x13C4FEC2 235 .long 0x10E7F0C0 236 vxor 29,0,1 237 vsel 29,1,2,29 238 .long 0x106338C0 239 .long 0x13C086C2 240 .long 0x13DEE8C0 241 .long 0x10E7F0C0 242 lvx 28,26,7 243 .long 0x7E402699 244 addi 4,4,16 245 vsldoi 17,16,16,8 246 .long 0x10C688C0 247 vsel 29,5,4,3 248 .long 0x10A5E0C0 249 .long 0x10C6E8C0 250 .long 0x13C3FEC2 251 .long 0x10C6F0C0 252 vxor 29,7,0 253 vsel 29,0,1,29 254 .long 0x104230C0 255 .long 0x13C786C2 256 .long 0x13DEE8C0 257 .long 0x10C6F0C0 258 lvx 28,27,7 259 .long 0x10A590C0 260 vsel 29,4,3,2 261 .long 0x1084E0C0 262 .long 0x10A5E8C0 263 .long 0x13C2FEC2 264 .long 0x10A5F0C0 265 vxor 29,6,7 266 vsel 29,7,0,29 267 .long 0x102128C0 268 .long 0x13C686C2 269 .long 0x13DEE8C0 270 .long 0x10A5F0C0 271 lvx 28,28,7 272 .long 0x7F002699 273 addi 4,4,16 274 vsldoi 19,18,18,8 275 .long 0x108498C0 276 vsel 29,3,2,1 277 .long 0x1063E0C0 278 .long 0x1084E8C0 279 .long 0x13C1FEC2 280 .long 0x1084F0C0 281 vxor 29,5,6 282 vsel 29,6,7,29 283 .long 0x100020C0 284 .long 0x13C586C2 285 .long 0x13DEE8C0 286 .long 0x1084F0C0 287 lvx 28,29,7 288 .long 0x1063C0C0 289 vsel 29,2,1,0 290 .long 0x1042E0C0 291 .long 0x1063E8C0 292 .long 0x13C0FEC2 293 .long 0x1063F0C0 294 vxor 29,4,5 295 vsel 29,5,6,29 296 .long 0x10E718C0 297 .long 0x13C486C2 298 .long 0x13DEE8C0 299 .long 0x1063F0C0 300 lvx 28,30,7 301 .long 0x7F402699 302 addi 4,4,16 303 vsldoi 25,24,24,8 304 .long 0x1042C8C0 305 vsel 29,1,0,7 306 .long 0x1021E0C0 307 .long 0x1042E8C0 308 .long 0x13C7FEC2 309 .long 0x1042F0C0 310 vxor 29,3,4 311 vsel 29,4,5,29 312 .long 0x10C610C0 313 .long 0x13C386C2 314 .long 0x13DEE8C0 315 .long 0x1042F0C0 316 lvx 28,31,7 317 addi 7,7,0x80 318 .long 0x1021D0C0 319 vsel 29,0,7,6 320 .long 0x1000E0C0 321 .long 0x1021E8C0 322 .long 0x13C6FEC2 323 .long 0x1021F0C0 324 vxor 29,2,3 325 vsel 29,3,4,29 326 .long 0x10A508C0 327 .long 0x13C286C2 328 .long 0x13DEE8C0 329 .long 0x1021F0C0 330 lvx 28,0,7 331 vsldoi 27,26,26,8 332 .long 0x13C906C2 333 .long 0x1108F0C0 334 .long 0x13DA7EC2 335 .long 0x1108F0C0 336 .long 0x110888C0 337 .long 0x1000D8C0 338 vsel 29,7,6,5 339 .long 0x10E7E0C0 340 .long 0x1000E8C0 341 .long 0x13C5FEC2 342 .long 0x1000F0C0 343 vxor 29,1,2 344 vsel 29,2,3,29 345 .long 0x108400C0 346 .long 0x13C186C2 347 .long 0x13DEE8C0 348 .long 0x1000F0C0 349 lvx 28,10,7 350 mtctr 0 351 b .L16_xx 352.align 5 353.L16_xx: 354 .long 0x13CA06C2 355 .long 0x1129F0C0 356 .long 0x13DB7EC2 357 .long 0x1129F0C0 358 .long 0x112990C0 359 .long 0x10E740C0 360 vsel 29,6,5,4 361 .long 0x10C6E0C0 362 .long 0x10E7E8C0 363 .long 0x13C4FEC2 364 .long 0x10E7F0C0 365 vxor 29,0,1 366 vsel 29,1,2,29 367 .long 0x106338C0 368 .long 0x13C086C2 369 .long 0x13DEE8C0 370 .long 0x10E7F0C0 371 lvx 28,26,7 372 .long 0x13CB06C2 373 .long 0x114AF0C0 374 .long 0x13C87EC2 375 .long 0x114AF0C0 376 .long 0x114A98C0 377 .long 0x10C648C0 378 vsel 29,5,4,3 379 .long 0x10A5E0C0 380 .long 0x10C6E8C0 381 .long 0x13C3FEC2 382 .long 0x10C6F0C0 383 vxor 29,7,0 384 vsel 29,0,1,29 385 .long 0x104230C0 386 .long 0x13C786C2 387 .long 0x13DEE8C0 388 .long 0x10C6F0C0 389 lvx 28,27,7 390 .long 0x13CC06C2 391 .long 0x116BF0C0 392 .long 0x13C97EC2 393 .long 0x116BF0C0 394 .long 0x116BC0C0 395 .long 0x10A550C0 396 vsel 29,4,3,2 397 .long 0x1084E0C0 398 .long 0x10A5E8C0 399 .long 0x13C2FEC2 400 .long 0x10A5F0C0 401 vxor 29,6,7 402 vsel 29,7,0,29 403 .long 0x102128C0 404 .long 0x13C686C2 405 .long 0x13DEE8C0 406 .long 0x10A5F0C0 407 lvx 28,28,7 408 .long 0x13CD06C2 409 .long 0x118CF0C0 410 .long 0x13CA7EC2 411 .long 0x118CF0C0 412 .long 0x118CC8C0 413 .long 0x108458C0 414 vsel 29,3,2,1 415 .long 0x1063E0C0 416 .long 0x1084E8C0 417 .long 0x13C1FEC2 418 .long 0x1084F0C0 419 vxor 29,5,6 420 vsel 29,6,7,29 421 .long 0x100020C0 422 .long 0x13C586C2 423 .long 0x13DEE8C0 424 .long 0x1084F0C0 425 lvx 28,29,7 426 .long 0x13CE06C2 427 .long 0x11ADF0C0 428 .long 0x13CB7EC2 429 .long 0x11ADF0C0 430 .long 0x11ADD0C0 431 .long 0x106360C0 432 vsel 29,2,1,0 433 .long 0x1042E0C0 434 .long 0x1063E8C0 435 .long 0x13C0FEC2 436 .long 0x1063F0C0 437 vxor 29,4,5 438 vsel 29,5,6,29 439 .long 0x10E718C0 440 .long 0x13C486C2 441 .long 0x13DEE8C0 442 .long 0x1063F0C0 443 lvx 28,30,7 444 .long 0x13CF06C2 445 .long 0x11CEF0C0 446 .long 0x13CC7EC2 447 .long 0x11CEF0C0 448 .long 0x11CED8C0 449 .long 0x104268C0 450 vsel 29,1,0,7 451 .long 0x1021E0C0 452 .long 0x1042E8C0 453 .long 0x13C7FEC2 454 .long 0x1042F0C0 455 vxor 29,3,4 456 vsel 29,4,5,29 457 .long 0x10C610C0 458 .long 0x13C386C2 459 .long 0x13DEE8C0 460 .long 0x1042F0C0 461 lvx 28,31,7 462 addi 7,7,0x80 463 .long 0x13D006C2 464 .long 0x11EFF0C0 465 .long 0x13CD7EC2 466 .long 0x11EFF0C0 467 .long 0x11EF40C0 468 .long 0x102170C0 469 vsel 29,0,7,6 470 .long 0x1000E0C0 471 .long 0x1021E8C0 472 .long 0x13C6FEC2 473 .long 0x1021F0C0 474 vxor 29,2,3 475 vsel 29,3,4,29 476 .long 0x10A508C0 477 .long 0x13C286C2 478 .long 0x13DEE8C0 479 .long 0x1021F0C0 480 lvx 28,0,7 481 .long 0x13D106C2 482 .long 0x1210F0C0 483 .long 0x13CE7EC2 484 .long 0x1210F0C0 485 .long 0x121048C0 486 .long 0x100078C0 487 vsel 29,7,6,5 488 .long 0x10E7E0C0 489 .long 0x1000E8C0 490 .long 0x13C5FEC2 491 .long 0x1000F0C0 492 vxor 29,1,2 493 vsel 29,2,3,29 494 .long 0x108400C0 495 .long 0x13C186C2 496 .long 0x13DEE8C0 497 .long 0x1000F0C0 498 lvx 28,10,7 499 .long 0x13D206C2 500 .long 0x1231F0C0 501 .long 0x13CF7EC2 502 .long 0x1231F0C0 503 .long 0x123150C0 504 .long 0x10E780C0 505 vsel 29,6,5,4 506 .long 0x10C6E0C0 507 .long 0x10E7E8C0 508 .long 0x13C4FEC2 509 .long 0x10E7F0C0 510 vxor 29,0,1 511 vsel 29,1,2,29 512 .long 0x106338C0 513 .long 0x13C086C2 514 .long 0x13DEE8C0 515 .long 0x10E7F0C0 516 lvx 28,26,7 517 .long 0x13D306C2 518 .long 0x1252F0C0 519 .long 0x13D07EC2 520 .long 0x1252F0C0 521 .long 0x125258C0 522 .long 0x10C688C0 523 vsel 29,5,4,3 524 .long 0x10A5E0C0 525 .long 0x10C6E8C0 526 .long 0x13C3FEC2 527 .long 0x10C6F0C0 528 vxor 29,7,0 529 vsel 29,0,1,29 530 .long 0x104230C0 531 .long 0x13C786C2 532 .long 0x13DEE8C0 533 .long 0x10C6F0C0 534 lvx 28,27,7 535 .long 0x13D806C2 536 .long 0x1273F0C0 537 .long 0x13D17EC2 538 .long 0x1273F0C0 539 .long 0x127360C0 540 .long 0x10A590C0 541 vsel 29,4,3,2 542 .long 0x1084E0C0 543 .long 0x10A5E8C0 544 .long 0x13C2FEC2 545 .long 0x10A5F0C0 546 vxor 29,6,7 547 vsel 29,7,0,29 548 .long 0x102128C0 549 .long 0x13C686C2 550 .long 0x13DEE8C0 551 .long 0x10A5F0C0 552 lvx 28,28,7 553 .long 0x13D906C2 554 .long 0x1318F0C0 555 .long 0x13D27EC2 556 .long 0x1318F0C0 557 .long 0x131868C0 558 .long 0x108498C0 559 vsel 29,3,2,1 560 .long 0x1063E0C0 561 .long 0x1084E8C0 562 .long 0x13C1FEC2 563 .long 0x1084F0C0 564 vxor 29,5,6 565 vsel 29,6,7,29 566 .long 0x100020C0 567 .long 0x13C586C2 568 .long 0x13DEE8C0 569 .long 0x1084F0C0 570 lvx 28,29,7 571 .long 0x13DA06C2 572 .long 0x1339F0C0 573 .long 0x13D37EC2 574 .long 0x1339F0C0 575 .long 0x133970C0 576 .long 0x1063C0C0 577 vsel 29,2,1,0 578 .long 0x1042E0C0 579 .long 0x1063E8C0 580 .long 0x13C0FEC2 581 .long 0x1063F0C0 582 vxor 29,4,5 583 vsel 29,5,6,29 584 .long 0x10E718C0 585 .long 0x13C486C2 586 .long 0x13DEE8C0 587 .long 0x1063F0C0 588 lvx 28,30,7 589 .long 0x13DB06C2 590 .long 0x135AF0C0 591 .long 0x13D87EC2 592 .long 0x135AF0C0 593 .long 0x135A78C0 594 .long 0x1042C8C0 595 vsel 29,1,0,7 596 .long 0x1021E0C0 597 .long 0x1042E8C0 598 .long 0x13C7FEC2 599 .long 0x1042F0C0 600 vxor 29,3,4 601 vsel 29,4,5,29 602 .long 0x10C610C0 603 .long 0x13C386C2 604 .long 0x13DEE8C0 605 .long 0x1042F0C0 606 lvx 28,31,7 607 addi 7,7,0x80 608 .long 0x13C806C2 609 .long 0x137BF0C0 610 .long 0x13D97EC2 611 .long 0x137BF0C0 612 .long 0x137B80C0 613 .long 0x1021D0C0 614 vsel 29,0,7,6 615 .long 0x1000E0C0 616 .long 0x1021E8C0 617 .long 0x13C6FEC2 618 .long 0x1021F0C0 619 vxor 29,2,3 620 vsel 29,3,4,29 621 .long 0x10A508C0 622 .long 0x13C286C2 623 .long 0x13DEE8C0 624 .long 0x1021F0C0 625 lvx 28,0,7 626 .long 0x13C906C2 627 .long 0x1108F0C0 628 .long 0x13DA7EC2 629 .long 0x1108F0C0 630 .long 0x110888C0 631 .long 0x1000D8C0 632 vsel 29,7,6,5 633 .long 0x10E7E0C0 634 .long 0x1000E8C0 635 .long 0x13C5FEC2 636 .long 0x1000F0C0 637 vxor 29,1,2 638 vsel 29,2,3,29 639 .long 0x108400C0 640 .long 0x13C186C2 641 .long 0x13DEE8C0 642 .long 0x1000F0C0 643 lvx 28,10,7 644 bdnz .L16_xx 645 646 lvx 10,0,11 647 subic. 5,5,1 648 lvx 11,10,11 649 .long 0x100050C0 650 lvx 12,26,11 651 .long 0x102158C0 652 lvx 13,27,11 653 .long 0x104260C0 654 lvx 14,28,11 655 .long 0x106368C0 656 lvx 15,29,11 657 .long 0x108470C0 658 lvx 16,30,11 659 .long 0x10A578C0 660 lvx 17,31,11 661 .long 0x10C680C0 662 .long 0x10E788C0 663 bne .Loop 664 vperm 0,0,1,28 665 vperm 2,2,3,28 666 vperm 4,4,5,28 667 vperm 6,6,7,28 668 .long 0x7C001F99 669 .long 0x7C4A1F99 670 .long 0x7C9A1F99 671 .long 0x7CDB1F99 672 addi 11,1,207 673 mtlr 8 674 mtspr 256,12 675 lvx 24,0,11 676 lvx 25,10,11 677 lvx 26,26,11 678 lvx 27,27,11 679 lvx 28,28,11 680 lvx 29,29,11 681 lvx 30,30,11 682 lvx 31,31,11 683 ld 26,336(1) 684 ld 27,344(1) 685 ld 28,352(1) 686 ld 29,360(1) 687 ld 30,368(1) 688 ld 31,376(1) 689 addi 1,1,384 690 blr 691.long 0 692.byte 0,12,4,1,0x80,6,3,0 693.long 0 694#if (!defined(_CALL_ELF) || _CALL_ELF == 1) 695.size .zfs_sha512_power8,.-.zfs_sha512_power8 696.size zfs_sha512_power8,.-.zfs_sha512_power8 697#else 698.size zfs_sha512_power8,.-zfs_sha512_power8 699#endif 700.align 6 701.LPICmeup: 702 mflr 0 703 bcl 20,31,$+4 704 mflr 6 705 addi 6,6,56 706 mtlr 0 707 blr 708.long 0 709.byte 0,12,0x14,0,0,0,0,0 710.space 28 711.long 0x428a2f98,0xd728ae22 712.long 0x428a2f98,0xd728ae22 713.long 0x71374491,0x23ef65cd 714.long 0x71374491,0x23ef65cd 715.long 0xb5c0fbcf,0xec4d3b2f 716.long 0xb5c0fbcf,0xec4d3b2f 717.long 0xe9b5dba5,0x8189dbbc 718.long 0xe9b5dba5,0x8189dbbc 719.long 0x3956c25b,0xf348b538 720.long 0x3956c25b,0xf348b538 721.long 0x59f111f1,0xb605d019 722.long 0x59f111f1,0xb605d019 723.long 0x923f82a4,0xaf194f9b 724.long 0x923f82a4,0xaf194f9b 725.long 0xab1c5ed5,0xda6d8118 726.long 0xab1c5ed5,0xda6d8118 727.long 0xd807aa98,0xa3030242 728.long 0xd807aa98,0xa3030242 729.long 0x12835b01,0x45706fbe 730.long 0x12835b01,0x45706fbe 731.long 0x243185be,0x4ee4b28c 732.long 0x243185be,0x4ee4b28c 733.long 0x550c7dc3,0xd5ffb4e2 734.long 0x550c7dc3,0xd5ffb4e2 735.long 0x72be5d74,0xf27b896f 736.long 0x72be5d74,0xf27b896f 737.long 0x80deb1fe,0x3b1696b1 738.long 0x80deb1fe,0x3b1696b1 739.long 0x9bdc06a7,0x25c71235 740.long 0x9bdc06a7,0x25c71235 741.long 0xc19bf174,0xcf692694 742.long 0xc19bf174,0xcf692694 743.long 0xe49b69c1,0x9ef14ad2 744.long 0xe49b69c1,0x9ef14ad2 745.long 0xefbe4786,0x384f25e3 746.long 0xefbe4786,0x384f25e3 747.long 0x0fc19dc6,0x8b8cd5b5 748.long 0x0fc19dc6,0x8b8cd5b5 749.long 0x240ca1cc,0x77ac9c65 750.long 0x240ca1cc,0x77ac9c65 751.long 0x2de92c6f,0x592b0275 752.long 0x2de92c6f,0x592b0275 753.long 0x4a7484aa,0x6ea6e483 754.long 0x4a7484aa,0x6ea6e483 755.long 0x5cb0a9dc,0xbd41fbd4 756.long 0x5cb0a9dc,0xbd41fbd4 757.long 0x76f988da,0x831153b5 758.long 0x76f988da,0x831153b5 759.long 0x983e5152,0xee66dfab 760.long 0x983e5152,0xee66dfab 761.long 0xa831c66d,0x2db43210 762.long 0xa831c66d,0x2db43210 763.long 0xb00327c8,0x98fb213f 764.long 0xb00327c8,0x98fb213f 765.long 0xbf597fc7,0xbeef0ee4 766.long 0xbf597fc7,0xbeef0ee4 767.long 0xc6e00bf3,0x3da88fc2 768.long 0xc6e00bf3,0x3da88fc2 769.long 0xd5a79147,0x930aa725 770.long 0xd5a79147,0x930aa725 771.long 0x06ca6351,0xe003826f 772.long 0x06ca6351,0xe003826f 773.long 0x14292967,0x0a0e6e70 774.long 0x14292967,0x0a0e6e70 775.long 0x27b70a85,0x46d22ffc 776.long 0x27b70a85,0x46d22ffc 777.long 0x2e1b2138,0x5c26c926 778.long 0x2e1b2138,0x5c26c926 779.long 0x4d2c6dfc,0x5ac42aed 780.long 0x4d2c6dfc,0x5ac42aed 781.long 0x53380d13,0x9d95b3df 782.long 0x53380d13,0x9d95b3df 783.long 0x650a7354,0x8baf63de 784.long 0x650a7354,0x8baf63de 785.long 0x766a0abb,0x3c77b2a8 786.long 0x766a0abb,0x3c77b2a8 787.long 0x81c2c92e,0x47edaee6 788.long 0x81c2c92e,0x47edaee6 789.long 0x92722c85,0x1482353b 790.long 0x92722c85,0x1482353b 791.long 0xa2bfe8a1,0x4cf10364 792.long 0xa2bfe8a1,0x4cf10364 793.long 0xa81a664b,0xbc423001 794.long 0xa81a664b,0xbc423001 795.long 0xc24b8b70,0xd0f89791 796.long 0xc24b8b70,0xd0f89791 797.long 0xc76c51a3,0x0654be30 798.long 0xc76c51a3,0x0654be30 799.long 0xd192e819,0xd6ef5218 800.long 0xd192e819,0xd6ef5218 801.long 0xd6990624,0x5565a910 802.long 0xd6990624,0x5565a910 803.long 0xf40e3585,0x5771202a 804.long 0xf40e3585,0x5771202a 805.long 0x106aa070,0x32bbd1b8 806.long 0x106aa070,0x32bbd1b8 807.long 0x19a4c116,0xb8d2d0c8 808.long 0x19a4c116,0xb8d2d0c8 809.long 0x1e376c08,0x5141ab53 810.long 0x1e376c08,0x5141ab53 811.long 0x2748774c,0xdf8eeb99 812.long 0x2748774c,0xdf8eeb99 813.long 0x34b0bcb5,0xe19b48a8 814.long 0x34b0bcb5,0xe19b48a8 815.long 0x391c0cb3,0xc5c95a63 816.long 0x391c0cb3,0xc5c95a63 817.long 0x4ed8aa4a,0xe3418acb 818.long 0x4ed8aa4a,0xe3418acb 819.long 0x5b9cca4f,0x7763e373 820.long 0x5b9cca4f,0x7763e373 821.long 0x682e6ff3,0xd6b2b8a3 822.long 0x682e6ff3,0xd6b2b8a3 823.long 0x748f82ee,0x5defb2fc 824.long 0x748f82ee,0x5defb2fc 825.long 0x78a5636f,0x43172f60 826.long 0x78a5636f,0x43172f60 827.long 0x84c87814,0xa1f0ab72 828.long 0x84c87814,0xa1f0ab72 829.long 0x8cc70208,0x1a6439ec 830.long 0x8cc70208,0x1a6439ec 831.long 0x90befffa,0x23631e28 832.long 0x90befffa,0x23631e28 833.long 0xa4506ceb,0xde82bde9 834.long 0xa4506ceb,0xde82bde9 835.long 0xbef9a3f7,0xb2c67915 836.long 0xbef9a3f7,0xb2c67915 837.long 0xc67178f2,0xe372532b 838.long 0xc67178f2,0xe372532b 839.long 0xca273ece,0xea26619c 840.long 0xca273ece,0xea26619c 841.long 0xd186b8c7,0x21c0c207 842.long 0xd186b8c7,0x21c0c207 843.long 0xeada7dd6,0xcde0eb1e 844.long 0xeada7dd6,0xcde0eb1e 845.long 0xf57d4f7f,0xee6ed178 846.long 0xf57d4f7f,0xee6ed178 847.long 0x06f067aa,0x72176fba 848.long 0x06f067aa,0x72176fba 849.long 0x0a637dc5,0xa2c898a6 850.long 0x0a637dc5,0xa2c898a6 851.long 0x113f9804,0xbef90dae 852.long 0x113f9804,0xbef90dae 853.long 0x1b710b35,0x131c471b 854.long 0x1b710b35,0x131c471b 855.long 0x28db77f5,0x23047d84 856.long 0x28db77f5,0x23047d84 857.long 0x32caab7b,0x40c72493 858.long 0x32caab7b,0x40c72493 859.long 0x3c9ebe0a,0x15c9bebc 860.long 0x3c9ebe0a,0x15c9bebc 861.long 0x431d67c4,0x9c100d4c 862.long 0x431d67c4,0x9c100d4c 863.long 0x4cc5d4be,0xcb3e42b6 864.long 0x4cc5d4be,0xcb3e42b6 865.long 0x597f299c,0xfc657e2a 866.long 0x597f299c,0xfc657e2a 867.long 0x5fcb6fab,0x3ad6faec 868.long 0x5fcb6fab,0x3ad6faec 869.long 0x6c44198c,0x4a475817 870.long 0x6c44198c,0x4a475817 871.long 0,0 872.long 0,0 873.long 0x00010203,0x04050607 874.long 0x10111213,0x14151617 875 876#elif (defined(__PPC64__) && defined(__LITTLE_ENDIAN__)) 877 878.abiversion 2 879.text 880 881.globl zfs_sha512_power8 882.type zfs_sha512_power8,@function 883.align 6 884zfs_sha512_power8: 885.localentry zfs_sha512_power8,0 886 887 stdu 1,-384(1) 888 mflr 8 889 li 10,207 890 li 11,223 891 stvx 24,10,1 892 addi 10,10,32 893 li 12,-1 894 stvx 25,11,1 895 addi 11,11,32 896 stvx 26,10,1 897 addi 10,10,32 898 stvx 27,11,1 899 addi 11,11,32 900 stvx 28,10,1 901 addi 10,10,32 902 stvx 29,11,1 903 addi 11,11,32 904 stvx 30,10,1 905 stvx 31,11,1 906 li 11,-4096+255 907 stw 12,332(1) 908 li 10,0x10 909 std 26,336(1) 910 li 26,0x20 911 std 27,344(1) 912 li 27,0x30 913 std 28,352(1) 914 li 28,0x40 915 std 29,360(1) 916 li 29,0x50 917 std 30,368(1) 918 li 30,0x60 919 std 31,376(1) 920 li 31,0x70 921 std 8,400(1) 922 or 11,11,11 923 924 bl .LPICmeup 925 addi 11,1,79 926 li 7,8 927 lvsl 31,0,7 928 vspltisb 28,0x0f 929 vxor 31,31,28 930 .long 0x7C001E99 931 .long 0x7C4A1E99 932 .long 0x7C9A1E99 933 vsldoi 1,0,0,8 934 .long 0x7CDB1E99 935 vsldoi 3,2,2,8 936 vsldoi 5,4,4,8 937 vsldoi 7,6,6,8 938 li 0,4 939 b .Loop 940.align 5 941.Loop: 942 lvx 28,0,6 943 .long 0x7D002699 944 addi 4,4,16 945 mr 7,6 946 stvx 0,0,11 947 stvx 1,10,11 948 stvx 2,26,11 949 stvx 3,27,11 950 stvx 4,28,11 951 stvx 5,29,11 952 stvx 6,30,11 953 stvx 7,31,11 954 .long 0x10E7E0C0 955 lvx 28,10,6 956 vperm 8,8,8,31 957 .long 0x10E740C0 958 vsel 29,6,5,4 959 .long 0x10C6E0C0 960 .long 0x10E7E8C0 961 .long 0x13C4FEC2 962 .long 0x10E7F0C0 963 vxor 29,0,1 964 vsel 29,1,2,29 965 .long 0x106338C0 966 .long 0x13C086C2 967 .long 0x13DEE8C0 968 .long 0x10E7F0C0 969 lvx 28,26,7 970 .long 0x7D402699 971 addi 4,4,16 972 vsldoi 9,8,8,8 973 .long 0x10C648C0 974 vsel 29,5,4,3 975 .long 0x10A5E0C0 976 .long 0x10C6E8C0 977 .long 0x13C3FEC2 978 .long 0x10C6F0C0 979 vxor 29,7,0 980 vsel 29,0,1,29 981 .long 0x104230C0 982 .long 0x13C786C2 983 .long 0x13DEE8C0 984 .long 0x10C6F0C0 985 lvx 28,27,7 986 vperm 10,10,10,31 987 .long 0x10A550C0 988 vsel 29,4,3,2 989 .long 0x1084E0C0 990 .long 0x10A5E8C0 991 .long 0x13C2FEC2 992 .long 0x10A5F0C0 993 vxor 29,6,7 994 vsel 29,7,0,29 995 .long 0x102128C0 996 .long 0x13C686C2 997 .long 0x13DEE8C0 998 .long 0x10A5F0C0 999 lvx 28,28,7 1000 .long 0x7D802699 1001 addi 4,4,16 1002 vsldoi 11,10,10,8 1003 .long 0x108458C0 1004 vsel 29,3,2,1 1005 .long 0x1063E0C0 1006 .long 0x1084E8C0 1007 .long 0x13C1FEC2 1008 .long 0x1084F0C0 1009 vxor 29,5,6 1010 vsel 29,6,7,29 1011 .long 0x100020C0 1012 .long 0x13C586C2 1013 .long 0x13DEE8C0 1014 .long 0x1084F0C0 1015 lvx 28,29,7 1016 vperm 12,12,12,31 1017 .long 0x106360C0 1018 vsel 29,2,1,0 1019 .long 0x1042E0C0 1020 .long 0x1063E8C0 1021 .long 0x13C0FEC2 1022 .long 0x1063F0C0 1023 vxor 29,4,5 1024 vsel 29,5,6,29 1025 .long 0x10E718C0 1026 .long 0x13C486C2 1027 .long 0x13DEE8C0 1028 .long 0x1063F0C0 1029 lvx 28,30,7 1030 .long 0x7DC02699 1031 addi 4,4,16 1032 vsldoi 13,12,12,8 1033 .long 0x104268C0 1034 vsel 29,1,0,7 1035 .long 0x1021E0C0 1036 .long 0x1042E8C0 1037 .long 0x13C7FEC2 1038 .long 0x1042F0C0 1039 vxor 29,3,4 1040 vsel 29,4,5,29 1041 .long 0x10C610C0 1042 .long 0x13C386C2 1043 .long 0x13DEE8C0 1044 .long 0x1042F0C0 1045 lvx 28,31,7 1046 addi 7,7,0x80 1047 vperm 14,14,14,31 1048 .long 0x102170C0 1049 vsel 29,0,7,6 1050 .long 0x1000E0C0 1051 .long 0x1021E8C0 1052 .long 0x13C6FEC2 1053 .long 0x1021F0C0 1054 vxor 29,2,3 1055 vsel 29,3,4,29 1056 .long 0x10A508C0 1057 .long 0x13C286C2 1058 .long 0x13DEE8C0 1059 .long 0x1021F0C0 1060 lvx 28,0,7 1061 .long 0x7E002699 1062 addi 4,4,16 1063 vsldoi 15,14,14,8 1064 .long 0x100078C0 1065 vsel 29,7,6,5 1066 .long 0x10E7E0C0 1067 .long 0x1000E8C0 1068 .long 0x13C5FEC2 1069 .long 0x1000F0C0 1070 vxor 29,1,2 1071 vsel 29,2,3,29 1072 .long 0x108400C0 1073 .long 0x13C186C2 1074 .long 0x13DEE8C0 1075 .long 0x1000F0C0 1076 lvx 28,10,7 1077 vperm 16,16,16,31 1078 .long 0x10E780C0 1079 vsel 29,6,5,4 1080 .long 0x10C6E0C0 1081 .long 0x10E7E8C0 1082 .long 0x13C4FEC2 1083 .long 0x10E7F0C0 1084 vxor 29,0,1 1085 vsel 29,1,2,29 1086 .long 0x106338C0 1087 .long 0x13C086C2 1088 .long 0x13DEE8C0 1089 .long 0x10E7F0C0 1090 lvx 28,26,7 1091 .long 0x7E402699 1092 addi 4,4,16 1093 vsldoi 17,16,16,8 1094 .long 0x10C688C0 1095 vsel 29,5,4,3 1096 .long 0x10A5E0C0 1097 .long 0x10C6E8C0 1098 .long 0x13C3FEC2 1099 .long 0x10C6F0C0 1100 vxor 29,7,0 1101 vsel 29,0,1,29 1102 .long 0x104230C0 1103 .long 0x13C786C2 1104 .long 0x13DEE8C0 1105 .long 0x10C6F0C0 1106 lvx 28,27,7 1107 vperm 18,18,18,31 1108 .long 0x10A590C0 1109 vsel 29,4,3,2 1110 .long 0x1084E0C0 1111 .long 0x10A5E8C0 1112 .long 0x13C2FEC2 1113 .long 0x10A5F0C0 1114 vxor 29,6,7 1115 vsel 29,7,0,29 1116 .long 0x102128C0 1117 .long 0x13C686C2 1118 .long 0x13DEE8C0 1119 .long 0x10A5F0C0 1120 lvx 28,28,7 1121 .long 0x7F002699 1122 addi 4,4,16 1123 vsldoi 19,18,18,8 1124 .long 0x108498C0 1125 vsel 29,3,2,1 1126 .long 0x1063E0C0 1127 .long 0x1084E8C0 1128 .long 0x13C1FEC2 1129 .long 0x1084F0C0 1130 vxor 29,5,6 1131 vsel 29,6,7,29 1132 .long 0x100020C0 1133 .long 0x13C586C2 1134 .long 0x13DEE8C0 1135 .long 0x1084F0C0 1136 lvx 28,29,7 1137 vperm 24,24,24,31 1138 .long 0x1063C0C0 1139 vsel 29,2,1,0 1140 .long 0x1042E0C0 1141 .long 0x1063E8C0 1142 .long 0x13C0FEC2 1143 .long 0x1063F0C0 1144 vxor 29,4,5 1145 vsel 29,5,6,29 1146 .long 0x10E718C0 1147 .long 0x13C486C2 1148 .long 0x13DEE8C0 1149 .long 0x1063F0C0 1150 lvx 28,30,7 1151 .long 0x7F402699 1152 addi 4,4,16 1153 vsldoi 25,24,24,8 1154 .long 0x1042C8C0 1155 vsel 29,1,0,7 1156 .long 0x1021E0C0 1157 .long 0x1042E8C0 1158 .long 0x13C7FEC2 1159 .long 0x1042F0C0 1160 vxor 29,3,4 1161 vsel 29,4,5,29 1162 .long 0x10C610C0 1163 .long 0x13C386C2 1164 .long 0x13DEE8C0 1165 .long 0x1042F0C0 1166 lvx 28,31,7 1167 addi 7,7,0x80 1168 vperm 26,26,26,31 1169 .long 0x1021D0C0 1170 vsel 29,0,7,6 1171 .long 0x1000E0C0 1172 .long 0x1021E8C0 1173 .long 0x13C6FEC2 1174 .long 0x1021F0C0 1175 vxor 29,2,3 1176 vsel 29,3,4,29 1177 .long 0x10A508C0 1178 .long 0x13C286C2 1179 .long 0x13DEE8C0 1180 .long 0x1021F0C0 1181 lvx 28,0,7 1182 vsldoi 27,26,26,8 1183 .long 0x13C906C2 1184 .long 0x1108F0C0 1185 .long 0x13DA7EC2 1186 .long 0x1108F0C0 1187 .long 0x110888C0 1188 .long 0x1000D8C0 1189 vsel 29,7,6,5 1190 .long 0x10E7E0C0 1191 .long 0x1000E8C0 1192 .long 0x13C5FEC2 1193 .long 0x1000F0C0 1194 vxor 29,1,2 1195 vsel 29,2,3,29 1196 .long 0x108400C0 1197 .long 0x13C186C2 1198 .long 0x13DEE8C0 1199 .long 0x1000F0C0 1200 lvx 28,10,7 1201 mtctr 0 1202 b .L16_xx 1203.align 5 1204.L16_xx: 1205 .long 0x13CA06C2 1206 .long 0x1129F0C0 1207 .long 0x13DB7EC2 1208 .long 0x1129F0C0 1209 .long 0x112990C0 1210 .long 0x10E740C0 1211 vsel 29,6,5,4 1212 .long 0x10C6E0C0 1213 .long 0x10E7E8C0 1214 .long 0x13C4FEC2 1215 .long 0x10E7F0C0 1216 vxor 29,0,1 1217 vsel 29,1,2,29 1218 .long 0x106338C0 1219 .long 0x13C086C2 1220 .long 0x13DEE8C0 1221 .long 0x10E7F0C0 1222 lvx 28,26,7 1223 .long 0x13CB06C2 1224 .long 0x114AF0C0 1225 .long 0x13C87EC2 1226 .long 0x114AF0C0 1227 .long 0x114A98C0 1228 .long 0x10C648C0 1229 vsel 29,5,4,3 1230 .long 0x10A5E0C0 1231 .long 0x10C6E8C0 1232 .long 0x13C3FEC2 1233 .long 0x10C6F0C0 1234 vxor 29,7,0 1235 vsel 29,0,1,29 1236 .long 0x104230C0 1237 .long 0x13C786C2 1238 .long 0x13DEE8C0 1239 .long 0x10C6F0C0 1240 lvx 28,27,7 1241 .long 0x13CC06C2 1242 .long 0x116BF0C0 1243 .long 0x13C97EC2 1244 .long 0x116BF0C0 1245 .long 0x116BC0C0 1246 .long 0x10A550C0 1247 vsel 29,4,3,2 1248 .long 0x1084E0C0 1249 .long 0x10A5E8C0 1250 .long 0x13C2FEC2 1251 .long 0x10A5F0C0 1252 vxor 29,6,7 1253 vsel 29,7,0,29 1254 .long 0x102128C0 1255 .long 0x13C686C2 1256 .long 0x13DEE8C0 1257 .long 0x10A5F0C0 1258 lvx 28,28,7 1259 .long 0x13CD06C2 1260 .long 0x118CF0C0 1261 .long 0x13CA7EC2 1262 .long 0x118CF0C0 1263 .long 0x118CC8C0 1264 .long 0x108458C0 1265 vsel 29,3,2,1 1266 .long 0x1063E0C0 1267 .long 0x1084E8C0 1268 .long 0x13C1FEC2 1269 .long 0x1084F0C0 1270 vxor 29,5,6 1271 vsel 29,6,7,29 1272 .long 0x100020C0 1273 .long 0x13C586C2 1274 .long 0x13DEE8C0 1275 .long 0x1084F0C0 1276 lvx 28,29,7 1277 .long 0x13CE06C2 1278 .long 0x11ADF0C0 1279 .long 0x13CB7EC2 1280 .long 0x11ADF0C0 1281 .long 0x11ADD0C0 1282 .long 0x106360C0 1283 vsel 29,2,1,0 1284 .long 0x1042E0C0 1285 .long 0x1063E8C0 1286 .long 0x13C0FEC2 1287 .long 0x1063F0C0 1288 vxor 29,4,5 1289 vsel 29,5,6,29 1290 .long 0x10E718C0 1291 .long 0x13C486C2 1292 .long 0x13DEE8C0 1293 .long 0x1063F0C0 1294 lvx 28,30,7 1295 .long 0x13CF06C2 1296 .long 0x11CEF0C0 1297 .long 0x13CC7EC2 1298 .long 0x11CEF0C0 1299 .long 0x11CED8C0 1300 .long 0x104268C0 1301 vsel 29,1,0,7 1302 .long 0x1021E0C0 1303 .long 0x1042E8C0 1304 .long 0x13C7FEC2 1305 .long 0x1042F0C0 1306 vxor 29,3,4 1307 vsel 29,4,5,29 1308 .long 0x10C610C0 1309 .long 0x13C386C2 1310 .long 0x13DEE8C0 1311 .long 0x1042F0C0 1312 lvx 28,31,7 1313 addi 7,7,0x80 1314 .long 0x13D006C2 1315 .long 0x11EFF0C0 1316 .long 0x13CD7EC2 1317 .long 0x11EFF0C0 1318 .long 0x11EF40C0 1319 .long 0x102170C0 1320 vsel 29,0,7,6 1321 .long 0x1000E0C0 1322 .long 0x1021E8C0 1323 .long 0x13C6FEC2 1324 .long 0x1021F0C0 1325 vxor 29,2,3 1326 vsel 29,3,4,29 1327 .long 0x10A508C0 1328 .long 0x13C286C2 1329 .long 0x13DEE8C0 1330 .long 0x1021F0C0 1331 lvx 28,0,7 1332 .long 0x13D106C2 1333 .long 0x1210F0C0 1334 .long 0x13CE7EC2 1335 .long 0x1210F0C0 1336 .long 0x121048C0 1337 .long 0x100078C0 1338 vsel 29,7,6,5 1339 .long 0x10E7E0C0 1340 .long 0x1000E8C0 1341 .long 0x13C5FEC2 1342 .long 0x1000F0C0 1343 vxor 29,1,2 1344 vsel 29,2,3,29 1345 .long 0x108400C0 1346 .long 0x13C186C2 1347 .long 0x13DEE8C0 1348 .long 0x1000F0C0 1349 lvx 28,10,7 1350 .long 0x13D206C2 1351 .long 0x1231F0C0 1352 .long 0x13CF7EC2 1353 .long 0x1231F0C0 1354 .long 0x123150C0 1355 .long 0x10E780C0 1356 vsel 29,6,5,4 1357 .long 0x10C6E0C0 1358 .long 0x10E7E8C0 1359 .long 0x13C4FEC2 1360 .long 0x10E7F0C0 1361 vxor 29,0,1 1362 vsel 29,1,2,29 1363 .long 0x106338C0 1364 .long 0x13C086C2 1365 .long 0x13DEE8C0 1366 .long 0x10E7F0C0 1367 lvx 28,26,7 1368 .long 0x13D306C2 1369 .long 0x1252F0C0 1370 .long 0x13D07EC2 1371 .long 0x1252F0C0 1372 .long 0x125258C0 1373 .long 0x10C688C0 1374 vsel 29,5,4,3 1375 .long 0x10A5E0C0 1376 .long 0x10C6E8C0 1377 .long 0x13C3FEC2 1378 .long 0x10C6F0C0 1379 vxor 29,7,0 1380 vsel 29,0,1,29 1381 .long 0x104230C0 1382 .long 0x13C786C2 1383 .long 0x13DEE8C0 1384 .long 0x10C6F0C0 1385 lvx 28,27,7 1386 .long 0x13D806C2 1387 .long 0x1273F0C0 1388 .long 0x13D17EC2 1389 .long 0x1273F0C0 1390 .long 0x127360C0 1391 .long 0x10A590C0 1392 vsel 29,4,3,2 1393 .long 0x1084E0C0 1394 .long 0x10A5E8C0 1395 .long 0x13C2FEC2 1396 .long 0x10A5F0C0 1397 vxor 29,6,7 1398 vsel 29,7,0,29 1399 .long 0x102128C0 1400 .long 0x13C686C2 1401 .long 0x13DEE8C0 1402 .long 0x10A5F0C0 1403 lvx 28,28,7 1404 .long 0x13D906C2 1405 .long 0x1318F0C0 1406 .long 0x13D27EC2 1407 .long 0x1318F0C0 1408 .long 0x131868C0 1409 .long 0x108498C0 1410 vsel 29,3,2,1 1411 .long 0x1063E0C0 1412 .long 0x1084E8C0 1413 .long 0x13C1FEC2 1414 .long 0x1084F0C0 1415 vxor 29,5,6 1416 vsel 29,6,7,29 1417 .long 0x100020C0 1418 .long 0x13C586C2 1419 .long 0x13DEE8C0 1420 .long 0x1084F0C0 1421 lvx 28,29,7 1422 .long 0x13DA06C2 1423 .long 0x1339F0C0 1424 .long 0x13D37EC2 1425 .long 0x1339F0C0 1426 .long 0x133970C0 1427 .long 0x1063C0C0 1428 vsel 29,2,1,0 1429 .long 0x1042E0C0 1430 .long 0x1063E8C0 1431 .long 0x13C0FEC2 1432 .long 0x1063F0C0 1433 vxor 29,4,5 1434 vsel 29,5,6,29 1435 .long 0x10E718C0 1436 .long 0x13C486C2 1437 .long 0x13DEE8C0 1438 .long 0x1063F0C0 1439 lvx 28,30,7 1440 .long 0x13DB06C2 1441 .long 0x135AF0C0 1442 .long 0x13D87EC2 1443 .long 0x135AF0C0 1444 .long 0x135A78C0 1445 .long 0x1042C8C0 1446 vsel 29,1,0,7 1447 .long 0x1021E0C0 1448 .long 0x1042E8C0 1449 .long 0x13C7FEC2 1450 .long 0x1042F0C0 1451 vxor 29,3,4 1452 vsel 29,4,5,29 1453 .long 0x10C610C0 1454 .long 0x13C386C2 1455 .long 0x13DEE8C0 1456 .long 0x1042F0C0 1457 lvx 28,31,7 1458 addi 7,7,0x80 1459 .long 0x13C806C2 1460 .long 0x137BF0C0 1461 .long 0x13D97EC2 1462 .long 0x137BF0C0 1463 .long 0x137B80C0 1464 .long 0x1021D0C0 1465 vsel 29,0,7,6 1466 .long 0x1000E0C0 1467 .long 0x1021E8C0 1468 .long 0x13C6FEC2 1469 .long 0x1021F0C0 1470 vxor 29,2,3 1471 vsel 29,3,4,29 1472 .long 0x10A508C0 1473 .long 0x13C286C2 1474 .long 0x13DEE8C0 1475 .long 0x1021F0C0 1476 lvx 28,0,7 1477 .long 0x13C906C2 1478 .long 0x1108F0C0 1479 .long 0x13DA7EC2 1480 .long 0x1108F0C0 1481 .long 0x110888C0 1482 .long 0x1000D8C0 1483 vsel 29,7,6,5 1484 .long 0x10E7E0C0 1485 .long 0x1000E8C0 1486 .long 0x13C5FEC2 1487 .long 0x1000F0C0 1488 vxor 29,1,2 1489 vsel 29,2,3,29 1490 .long 0x108400C0 1491 .long 0x13C186C2 1492 .long 0x13DEE8C0 1493 .long 0x1000F0C0 1494 lvx 28,10,7 1495 bdnz .L16_xx 1496 1497 lvx 10,0,11 1498 subic. 5,5,1 1499 lvx 11,10,11 1500 .long 0x100050C0 1501 lvx 12,26,11 1502 .long 0x102158C0 1503 lvx 13,27,11 1504 .long 0x104260C0 1505 lvx 14,28,11 1506 .long 0x106368C0 1507 lvx 15,29,11 1508 .long 0x108470C0 1509 lvx 16,30,11 1510 .long 0x10A578C0 1511 lvx 17,31,11 1512 .long 0x10C680C0 1513 .long 0x10E788C0 1514 bne .Loop 1515 vperm 0,0,1,28 1516 vperm 2,2,3,28 1517 vperm 4,4,5,28 1518 vperm 6,6,7,28 1519 .long 0x7C001F99 1520 .long 0x7C4A1F99 1521 .long 0x7C9A1F99 1522 .long 0x7CDB1F99 1523 addi 11,1,207 1524 mtlr 8 1525 or 12,12,12 1526 lvx 24,0,11 1527 lvx 25,10,11 1528 lvx 26,26,11 1529 lvx 27,27,11 1530 lvx 28,28,11 1531 lvx 29,29,11 1532 lvx 30,30,11 1533 lvx 31,31,11 1534 ld 26,336(1) 1535 ld 27,344(1) 1536 ld 28,352(1) 1537 ld 29,360(1) 1538 ld 30,368(1) 1539 ld 31,376(1) 1540 addi 1,1,384 1541 blr 1542.long 0 1543.byte 0,12,4,1,0x80,6,3,0 1544.long 0 1545.size zfs_sha512_power8,.-zfs_sha512_power8 1546.align 6 1547.LPICmeup: 1548 mflr 0 1549 bcl 20,31,$+4 1550 mflr 6 1551 addi 6,6,56 1552 mtlr 0 1553 blr 1554.long 0 1555.byte 0,12,0x14,0,0,0,0,0 1556.space 28 1557.long 0xd728ae22,0x428a2f98 1558.long 0xd728ae22,0x428a2f98 1559.long 0x23ef65cd,0x71374491 1560.long 0x23ef65cd,0x71374491 1561.long 0xec4d3b2f,0xb5c0fbcf 1562.long 0xec4d3b2f,0xb5c0fbcf 1563.long 0x8189dbbc,0xe9b5dba5 1564.long 0x8189dbbc,0xe9b5dba5 1565.long 0xf348b538,0x3956c25b 1566.long 0xf348b538,0x3956c25b 1567.long 0xb605d019,0x59f111f1 1568.long 0xb605d019,0x59f111f1 1569.long 0xaf194f9b,0x923f82a4 1570.long 0xaf194f9b,0x923f82a4 1571.long 0xda6d8118,0xab1c5ed5 1572.long 0xda6d8118,0xab1c5ed5 1573.long 0xa3030242,0xd807aa98 1574.long 0xa3030242,0xd807aa98 1575.long 0x45706fbe,0x12835b01 1576.long 0x45706fbe,0x12835b01 1577.long 0x4ee4b28c,0x243185be 1578.long 0x4ee4b28c,0x243185be 1579.long 0xd5ffb4e2,0x550c7dc3 1580.long 0xd5ffb4e2,0x550c7dc3 1581.long 0xf27b896f,0x72be5d74 1582.long 0xf27b896f,0x72be5d74 1583.long 0x3b1696b1,0x80deb1fe 1584.long 0x3b1696b1,0x80deb1fe 1585.long 0x25c71235,0x9bdc06a7 1586.long 0x25c71235,0x9bdc06a7 1587.long 0xcf692694,0xc19bf174 1588.long 0xcf692694,0xc19bf174 1589.long 0x9ef14ad2,0xe49b69c1 1590.long 0x9ef14ad2,0xe49b69c1 1591.long 0x384f25e3,0xefbe4786 1592.long 0x384f25e3,0xefbe4786 1593.long 0x8b8cd5b5,0x0fc19dc6 1594.long 0x8b8cd5b5,0x0fc19dc6 1595.long 0x77ac9c65,0x240ca1cc 1596.long 0x77ac9c65,0x240ca1cc 1597.long 0x592b0275,0x2de92c6f 1598.long 0x592b0275,0x2de92c6f 1599.long 0x6ea6e483,0x4a7484aa 1600.long 0x6ea6e483,0x4a7484aa 1601.long 0xbd41fbd4,0x5cb0a9dc 1602.long 0xbd41fbd4,0x5cb0a9dc 1603.long 0x831153b5,0x76f988da 1604.long 0x831153b5,0x76f988da 1605.long 0xee66dfab,0x983e5152 1606.long 0xee66dfab,0x983e5152 1607.long 0x2db43210,0xa831c66d 1608.long 0x2db43210,0xa831c66d 1609.long 0x98fb213f,0xb00327c8 1610.long 0x98fb213f,0xb00327c8 1611.long 0xbeef0ee4,0xbf597fc7 1612.long 0xbeef0ee4,0xbf597fc7 1613.long 0x3da88fc2,0xc6e00bf3 1614.long 0x3da88fc2,0xc6e00bf3 1615.long 0x930aa725,0xd5a79147 1616.long 0x930aa725,0xd5a79147 1617.long 0xe003826f,0x06ca6351 1618.long 0xe003826f,0x06ca6351 1619.long 0x0a0e6e70,0x14292967 1620.long 0x0a0e6e70,0x14292967 1621.long 0x46d22ffc,0x27b70a85 1622.long 0x46d22ffc,0x27b70a85 1623.long 0x5c26c926,0x2e1b2138 1624.long 0x5c26c926,0x2e1b2138 1625.long 0x5ac42aed,0x4d2c6dfc 1626.long 0x5ac42aed,0x4d2c6dfc 1627.long 0x9d95b3df,0x53380d13 1628.long 0x9d95b3df,0x53380d13 1629.long 0x8baf63de,0x650a7354 1630.long 0x8baf63de,0x650a7354 1631.long 0x3c77b2a8,0x766a0abb 1632.long 0x3c77b2a8,0x766a0abb 1633.long 0x47edaee6,0x81c2c92e 1634.long 0x47edaee6,0x81c2c92e 1635.long 0x1482353b,0x92722c85 1636.long 0x1482353b,0x92722c85 1637.long 0x4cf10364,0xa2bfe8a1 1638.long 0x4cf10364,0xa2bfe8a1 1639.long 0xbc423001,0xa81a664b 1640.long 0xbc423001,0xa81a664b 1641.long 0xd0f89791,0xc24b8b70 1642.long 0xd0f89791,0xc24b8b70 1643.long 0x0654be30,0xc76c51a3 1644.long 0x0654be30,0xc76c51a3 1645.long 0xd6ef5218,0xd192e819 1646.long 0xd6ef5218,0xd192e819 1647.long 0x5565a910,0xd6990624 1648.long 0x5565a910,0xd6990624 1649.long 0x5771202a,0xf40e3585 1650.long 0x5771202a,0xf40e3585 1651.long 0x32bbd1b8,0x106aa070 1652.long 0x32bbd1b8,0x106aa070 1653.long 0xb8d2d0c8,0x19a4c116 1654.long 0xb8d2d0c8,0x19a4c116 1655.long 0x5141ab53,0x1e376c08 1656.long 0x5141ab53,0x1e376c08 1657.long 0xdf8eeb99,0x2748774c 1658.long 0xdf8eeb99,0x2748774c 1659.long 0xe19b48a8,0x34b0bcb5 1660.long 0xe19b48a8,0x34b0bcb5 1661.long 0xc5c95a63,0x391c0cb3 1662.long 0xc5c95a63,0x391c0cb3 1663.long 0xe3418acb,0x4ed8aa4a 1664.long 0xe3418acb,0x4ed8aa4a 1665.long 0x7763e373,0x5b9cca4f 1666.long 0x7763e373,0x5b9cca4f 1667.long 0xd6b2b8a3,0x682e6ff3 1668.long 0xd6b2b8a3,0x682e6ff3 1669.long 0x5defb2fc,0x748f82ee 1670.long 0x5defb2fc,0x748f82ee 1671.long 0x43172f60,0x78a5636f 1672.long 0x43172f60,0x78a5636f 1673.long 0xa1f0ab72,0x84c87814 1674.long 0xa1f0ab72,0x84c87814 1675.long 0x1a6439ec,0x8cc70208 1676.long 0x1a6439ec,0x8cc70208 1677.long 0x23631e28,0x90befffa 1678.long 0x23631e28,0x90befffa 1679.long 0xde82bde9,0xa4506ceb 1680.long 0xde82bde9,0xa4506ceb 1681.long 0xb2c67915,0xbef9a3f7 1682.long 0xb2c67915,0xbef9a3f7 1683.long 0xe372532b,0xc67178f2 1684.long 0xe372532b,0xc67178f2 1685.long 0xea26619c,0xca273ece 1686.long 0xea26619c,0xca273ece 1687.long 0x21c0c207,0xd186b8c7 1688.long 0x21c0c207,0xd186b8c7 1689.long 0xcde0eb1e,0xeada7dd6 1690.long 0xcde0eb1e,0xeada7dd6 1691.long 0xee6ed178,0xf57d4f7f 1692.long 0xee6ed178,0xf57d4f7f 1693.long 0x72176fba,0x06f067aa 1694.long 0x72176fba,0x06f067aa 1695.long 0xa2c898a6,0x0a637dc5 1696.long 0xa2c898a6,0x0a637dc5 1697.long 0xbef90dae,0x113f9804 1698.long 0xbef90dae,0x113f9804 1699.long 0x131c471b,0x1b710b35 1700.long 0x131c471b,0x1b710b35 1701.long 0x23047d84,0x28db77f5 1702.long 0x23047d84,0x28db77f5 1703.long 0x40c72493,0x32caab7b 1704.long 0x40c72493,0x32caab7b 1705.long 0x15c9bebc,0x3c9ebe0a 1706.long 0x15c9bebc,0x3c9ebe0a 1707.long 0x9c100d4c,0x431d67c4 1708.long 0x9c100d4c,0x431d67c4 1709.long 0xcb3e42b6,0x4cc5d4be 1710.long 0xcb3e42b6,0x4cc5d4be 1711.long 0xfc657e2a,0x597f299c 1712.long 0xfc657e2a,0x597f299c 1713.long 0x3ad6faec,0x5fcb6fab 1714.long 0x3ad6faec,0x5fcb6fab 1715.long 0x4a475817,0x6c44198c 1716.long 0x4a475817,0x6c44198c 1717.long 0,0 1718.long 0,0 1719.long 0x14151617,0x10111213 1720.long 0x04050607,0x00010203 1721 1722#endif 1723