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