1#include "mips_arch.h" 2 3.text 4 5.set noat 6.set noreorder 7.align 5 8.globl sha1_block_data_order 9.ent sha1_block_data_order 10sha1_block_data_order: 11 .frame $29,16*4,$31 12 .mask 0xc0ff0000,-4 13 .set noreorder 14 subu $29,16*4 15 sw $31,(16-1)*4($29) 16 sw $30,(16-2)*4($29) 17 sw $23,(16-3)*4($29) 18 sw $22,(16-4)*4($29) 19 sw $21,(16-5)*4($29) 20 sw $20,(16-6)*4($29) 21 sw $19,(16-7)*4($29) 22 sw $18,(16-8)*4($29) 23 sw $17,(16-9)*4($29) 24 sw $16,(16-10)*4($29) 25 sll $6,6 26 addu $6,$5 27 sw $6,0($29) 28 lw $1,0($4) 29 lw $2,4($4) 30 lw $3,8($4) 31 lw $7,12($4) 32 b .Loop 33 lw $24,16($4) 34.align 4 35.Loop: 36 .set reorder 37#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 38 lui $31,0x5a82 39 lw $8,($5) 40 ori $31,0x7999 # K_00_19 41#else 42 lwl $8,3($5) 43 lui $31,0x5a82 44 lwr $8,0($5) 45 ori $31,0x7999 # K_00_19 46#endif 47#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 48 wsbh $8,$8 # byte swap(0) 49 rotr $8,$8,16 50#else 51 srl $25,$8,24 # byte swap(0) 52 srl $6,$8,8 53 andi $30,$8,0xFF00 54 sll $8,$8,24 55 andi $6,0xFF00 56 sll $30,$30,8 57 or $8,$25 58 or $6,$30 59 or $8,$6 60#endif 61#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 62 addu $24,$31 # 0 63 xor $25,$3,$7 64 rotr $6,$1,27 65 and $25,$2 66 addu $24,$6 67#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 68 lw $9,1*4($5) 69#else 70 lwl $9,1*4+3($5) 71 lwr $9,1*4+0($5) 72#endif 73 xor $25,$7 74 addu $24,$8 75 rotr $2,$2,2 76 addu $24,$25 77#else 78 lwl $9,1*4+3($5) 79 sll $25,$1,5 # 0 80 addu $24,$31 81 lwr $9,1*4+0($5) 82 srl $6,$1,27 83 addu $24,$25 84 xor $25,$3,$7 85 addu $24,$6 86 sll $30,$2,30 87 and $25,$2 88 srl $2,$2,2 89 xor $25,$7 90 addu $24,$8 91 or $2,$30 92 addu $24,$25 93#endif 94#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 95 wsbh $9,$9 # byte swap(1) 96 rotr $9,$9,16 97#else 98 srl $25,$9,24 # byte swap(1) 99 srl $6,$9,8 100 andi $30,$9,0xFF00 101 sll $9,$9,24 102 andi $6,0xFF00 103 sll $30,$30,8 104 or $9,$25 105 or $6,$30 106 or $9,$6 107#endif 108#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 109 addu $7,$31 # 1 110 xor $25,$2,$3 111 rotr $6,$24,27 112 and $25,$1 113 addu $7,$6 114#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 115 lw $10,2*4($5) 116#else 117 lwl $10,2*4+3($5) 118 lwr $10,2*4+0($5) 119#endif 120 xor $25,$3 121 addu $7,$9 122 rotr $1,$1,2 123 addu $7,$25 124#else 125 lwl $10,2*4+3($5) 126 sll $25,$24,5 # 1 127 addu $7,$31 128 lwr $10,2*4+0($5) 129 srl $6,$24,27 130 addu $7,$25 131 xor $25,$2,$3 132 addu $7,$6 133 sll $30,$1,30 134 and $25,$1 135 srl $1,$1,2 136 xor $25,$3 137 addu $7,$9 138 or $1,$30 139 addu $7,$25 140#endif 141#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 142 wsbh $10,$10 # byte swap(2) 143 rotr $10,$10,16 144#else 145 srl $25,$10,24 # byte swap(2) 146 srl $6,$10,8 147 andi $30,$10,0xFF00 148 sll $10,$10,24 149 andi $6,0xFF00 150 sll $30,$30,8 151 or $10,$25 152 or $6,$30 153 or $10,$6 154#endif 155#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 156 addu $3,$31 # 2 157 xor $25,$1,$2 158 rotr $6,$7,27 159 and $25,$24 160 addu $3,$6 161#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 162 lw $11,3*4($5) 163#else 164 lwl $11,3*4+3($5) 165 lwr $11,3*4+0($5) 166#endif 167 xor $25,$2 168 addu $3,$10 169 rotr $24,$24,2 170 addu $3,$25 171#else 172 lwl $11,3*4+3($5) 173 sll $25,$7,5 # 2 174 addu $3,$31 175 lwr $11,3*4+0($5) 176 srl $6,$7,27 177 addu $3,$25 178 xor $25,$1,$2 179 addu $3,$6 180 sll $30,$24,30 181 and $25,$24 182 srl $24,$24,2 183 xor $25,$2 184 addu $3,$10 185 or $24,$30 186 addu $3,$25 187#endif 188#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 189 wsbh $11,$11 # byte swap(3) 190 rotr $11,$11,16 191#else 192 srl $25,$11,24 # byte swap(3) 193 srl $6,$11,8 194 andi $30,$11,0xFF00 195 sll $11,$11,24 196 andi $6,0xFF00 197 sll $30,$30,8 198 or $11,$25 199 or $6,$30 200 or $11,$6 201#endif 202#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 203 addu $2,$31 # 3 204 xor $25,$24,$1 205 rotr $6,$3,27 206 and $25,$7 207 addu $2,$6 208#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 209 lw $12,4*4($5) 210#else 211 lwl $12,4*4+3($5) 212 lwr $12,4*4+0($5) 213#endif 214 xor $25,$1 215 addu $2,$11 216 rotr $7,$7,2 217 addu $2,$25 218#else 219 lwl $12,4*4+3($5) 220 sll $25,$3,5 # 3 221 addu $2,$31 222 lwr $12,4*4+0($5) 223 srl $6,$3,27 224 addu $2,$25 225 xor $25,$24,$1 226 addu $2,$6 227 sll $30,$7,30 228 and $25,$7 229 srl $7,$7,2 230 xor $25,$1 231 addu $2,$11 232 or $7,$30 233 addu $2,$25 234#endif 235#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 236 wsbh $12,$12 # byte swap(4) 237 rotr $12,$12,16 238#else 239 srl $25,$12,24 # byte swap(4) 240 srl $6,$12,8 241 andi $30,$12,0xFF00 242 sll $12,$12,24 243 andi $6,0xFF00 244 sll $30,$30,8 245 or $12,$25 246 or $6,$30 247 or $12,$6 248#endif 249#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 250 addu $1,$31 # 4 251 xor $25,$7,$24 252 rotr $6,$2,27 253 and $25,$3 254 addu $1,$6 255#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 256 lw $13,5*4($5) 257#else 258 lwl $13,5*4+3($5) 259 lwr $13,5*4+0($5) 260#endif 261 xor $25,$24 262 addu $1,$12 263 rotr $3,$3,2 264 addu $1,$25 265#else 266 lwl $13,5*4+3($5) 267 sll $25,$2,5 # 4 268 addu $1,$31 269 lwr $13,5*4+0($5) 270 srl $6,$2,27 271 addu $1,$25 272 xor $25,$7,$24 273 addu $1,$6 274 sll $30,$3,30 275 and $25,$3 276 srl $3,$3,2 277 xor $25,$24 278 addu $1,$12 279 or $3,$30 280 addu $1,$25 281#endif 282#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 283 wsbh $13,$13 # byte swap(5) 284 rotr $13,$13,16 285#else 286 srl $25,$13,24 # byte swap(5) 287 srl $6,$13,8 288 andi $30,$13,0xFF00 289 sll $13,$13,24 290 andi $6,0xFF00 291 sll $30,$30,8 292 or $13,$25 293 or $6,$30 294 or $13,$6 295#endif 296#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 297 addu $24,$31 # 5 298 xor $25,$3,$7 299 rotr $6,$1,27 300 and $25,$2 301 addu $24,$6 302#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 303 lw $14,6*4($5) 304#else 305 lwl $14,6*4+3($5) 306 lwr $14,6*4+0($5) 307#endif 308 xor $25,$7 309 addu $24,$13 310 rotr $2,$2,2 311 addu $24,$25 312#else 313 lwl $14,6*4+3($5) 314 sll $25,$1,5 # 5 315 addu $24,$31 316 lwr $14,6*4+0($5) 317 srl $6,$1,27 318 addu $24,$25 319 xor $25,$3,$7 320 addu $24,$6 321 sll $30,$2,30 322 and $25,$2 323 srl $2,$2,2 324 xor $25,$7 325 addu $24,$13 326 or $2,$30 327 addu $24,$25 328#endif 329#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 330 wsbh $14,$14 # byte swap(6) 331 rotr $14,$14,16 332#else 333 srl $25,$14,24 # byte swap(6) 334 srl $6,$14,8 335 andi $30,$14,0xFF00 336 sll $14,$14,24 337 andi $6,0xFF00 338 sll $30,$30,8 339 or $14,$25 340 or $6,$30 341 or $14,$6 342#endif 343#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 344 addu $7,$31 # 6 345 xor $25,$2,$3 346 rotr $6,$24,27 347 and $25,$1 348 addu $7,$6 349#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 350 lw $15,7*4($5) 351#else 352 lwl $15,7*4+3($5) 353 lwr $15,7*4+0($5) 354#endif 355 xor $25,$3 356 addu $7,$14 357 rotr $1,$1,2 358 addu $7,$25 359#else 360 lwl $15,7*4+3($5) 361 sll $25,$24,5 # 6 362 addu $7,$31 363 lwr $15,7*4+0($5) 364 srl $6,$24,27 365 addu $7,$25 366 xor $25,$2,$3 367 addu $7,$6 368 sll $30,$1,30 369 and $25,$1 370 srl $1,$1,2 371 xor $25,$3 372 addu $7,$14 373 or $1,$30 374 addu $7,$25 375#endif 376#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 377 wsbh $15,$15 # byte swap(7) 378 rotr $15,$15,16 379#else 380 srl $25,$15,24 # byte swap(7) 381 srl $6,$15,8 382 andi $30,$15,0xFF00 383 sll $15,$15,24 384 andi $6,0xFF00 385 sll $30,$30,8 386 or $15,$25 387 or $6,$30 388 or $15,$6 389#endif 390#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 391 addu $3,$31 # 7 392 xor $25,$1,$2 393 rotr $6,$7,27 394 and $25,$24 395 addu $3,$6 396#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 397 lw $16,8*4($5) 398#else 399 lwl $16,8*4+3($5) 400 lwr $16,8*4+0($5) 401#endif 402 xor $25,$2 403 addu $3,$15 404 rotr $24,$24,2 405 addu $3,$25 406#else 407 lwl $16,8*4+3($5) 408 sll $25,$7,5 # 7 409 addu $3,$31 410 lwr $16,8*4+0($5) 411 srl $6,$7,27 412 addu $3,$25 413 xor $25,$1,$2 414 addu $3,$6 415 sll $30,$24,30 416 and $25,$24 417 srl $24,$24,2 418 xor $25,$2 419 addu $3,$15 420 or $24,$30 421 addu $3,$25 422#endif 423#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 424 wsbh $16,$16 # byte swap(8) 425 rotr $16,$16,16 426#else 427 srl $25,$16,24 # byte swap(8) 428 srl $6,$16,8 429 andi $30,$16,0xFF00 430 sll $16,$16,24 431 andi $6,0xFF00 432 sll $30,$30,8 433 or $16,$25 434 or $6,$30 435 or $16,$6 436#endif 437#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 438 addu $2,$31 # 8 439 xor $25,$24,$1 440 rotr $6,$3,27 441 and $25,$7 442 addu $2,$6 443#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 444 lw $17,9*4($5) 445#else 446 lwl $17,9*4+3($5) 447 lwr $17,9*4+0($5) 448#endif 449 xor $25,$1 450 addu $2,$16 451 rotr $7,$7,2 452 addu $2,$25 453#else 454 lwl $17,9*4+3($5) 455 sll $25,$3,5 # 8 456 addu $2,$31 457 lwr $17,9*4+0($5) 458 srl $6,$3,27 459 addu $2,$25 460 xor $25,$24,$1 461 addu $2,$6 462 sll $30,$7,30 463 and $25,$7 464 srl $7,$7,2 465 xor $25,$1 466 addu $2,$16 467 or $7,$30 468 addu $2,$25 469#endif 470#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 471 wsbh $17,$17 # byte swap(9) 472 rotr $17,$17,16 473#else 474 srl $25,$17,24 # byte swap(9) 475 srl $6,$17,8 476 andi $30,$17,0xFF00 477 sll $17,$17,24 478 andi $6,0xFF00 479 sll $30,$30,8 480 or $17,$25 481 or $6,$30 482 or $17,$6 483#endif 484#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 485 addu $1,$31 # 9 486 xor $25,$7,$24 487 rotr $6,$2,27 488 and $25,$3 489 addu $1,$6 490#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 491 lw $18,10*4($5) 492#else 493 lwl $18,10*4+3($5) 494 lwr $18,10*4+0($5) 495#endif 496 xor $25,$24 497 addu $1,$17 498 rotr $3,$3,2 499 addu $1,$25 500#else 501 lwl $18,10*4+3($5) 502 sll $25,$2,5 # 9 503 addu $1,$31 504 lwr $18,10*4+0($5) 505 srl $6,$2,27 506 addu $1,$25 507 xor $25,$7,$24 508 addu $1,$6 509 sll $30,$3,30 510 and $25,$3 511 srl $3,$3,2 512 xor $25,$24 513 addu $1,$17 514 or $3,$30 515 addu $1,$25 516#endif 517#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 518 wsbh $18,$18 # byte swap(10) 519 rotr $18,$18,16 520#else 521 srl $25,$18,24 # byte swap(10) 522 srl $6,$18,8 523 andi $30,$18,0xFF00 524 sll $18,$18,24 525 andi $6,0xFF00 526 sll $30,$30,8 527 or $18,$25 528 or $6,$30 529 or $18,$6 530#endif 531#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 532 addu $24,$31 # 10 533 xor $25,$3,$7 534 rotr $6,$1,27 535 and $25,$2 536 addu $24,$6 537#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 538 lw $19,11*4($5) 539#else 540 lwl $19,11*4+3($5) 541 lwr $19,11*4+0($5) 542#endif 543 xor $25,$7 544 addu $24,$18 545 rotr $2,$2,2 546 addu $24,$25 547#else 548 lwl $19,11*4+3($5) 549 sll $25,$1,5 # 10 550 addu $24,$31 551 lwr $19,11*4+0($5) 552 srl $6,$1,27 553 addu $24,$25 554 xor $25,$3,$7 555 addu $24,$6 556 sll $30,$2,30 557 and $25,$2 558 srl $2,$2,2 559 xor $25,$7 560 addu $24,$18 561 or $2,$30 562 addu $24,$25 563#endif 564#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 565 wsbh $19,$19 # byte swap(11) 566 rotr $19,$19,16 567#else 568 srl $25,$19,24 # byte swap(11) 569 srl $6,$19,8 570 andi $30,$19,0xFF00 571 sll $19,$19,24 572 andi $6,0xFF00 573 sll $30,$30,8 574 or $19,$25 575 or $6,$30 576 or $19,$6 577#endif 578#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 579 addu $7,$31 # 11 580 xor $25,$2,$3 581 rotr $6,$24,27 582 and $25,$1 583 addu $7,$6 584#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 585 lw $20,12*4($5) 586#else 587 lwl $20,12*4+3($5) 588 lwr $20,12*4+0($5) 589#endif 590 xor $25,$3 591 addu $7,$19 592 rotr $1,$1,2 593 addu $7,$25 594#else 595 lwl $20,12*4+3($5) 596 sll $25,$24,5 # 11 597 addu $7,$31 598 lwr $20,12*4+0($5) 599 srl $6,$24,27 600 addu $7,$25 601 xor $25,$2,$3 602 addu $7,$6 603 sll $30,$1,30 604 and $25,$1 605 srl $1,$1,2 606 xor $25,$3 607 addu $7,$19 608 or $1,$30 609 addu $7,$25 610#endif 611#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 612 wsbh $20,$20 # byte swap(12) 613 rotr $20,$20,16 614#else 615 srl $25,$20,24 # byte swap(12) 616 srl $6,$20,8 617 andi $30,$20,0xFF00 618 sll $20,$20,24 619 andi $6,0xFF00 620 sll $30,$30,8 621 or $20,$25 622 or $6,$30 623 or $20,$6 624#endif 625#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 626 addu $3,$31 # 12 627 xor $25,$1,$2 628 rotr $6,$7,27 629 and $25,$24 630 addu $3,$6 631#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 632 lw $21,13*4($5) 633#else 634 lwl $21,13*4+3($5) 635 lwr $21,13*4+0($5) 636#endif 637 xor $25,$2 638 addu $3,$20 639 rotr $24,$24,2 640 addu $3,$25 641#else 642 lwl $21,13*4+3($5) 643 sll $25,$7,5 # 12 644 addu $3,$31 645 lwr $21,13*4+0($5) 646 srl $6,$7,27 647 addu $3,$25 648 xor $25,$1,$2 649 addu $3,$6 650 sll $30,$24,30 651 and $25,$24 652 srl $24,$24,2 653 xor $25,$2 654 addu $3,$20 655 or $24,$30 656 addu $3,$25 657#endif 658#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 659 wsbh $21,$21 # byte swap(13) 660 rotr $21,$21,16 661#else 662 srl $25,$21,24 # byte swap(13) 663 srl $6,$21,8 664 andi $30,$21,0xFF00 665 sll $21,$21,24 666 andi $6,0xFF00 667 sll $30,$30,8 668 or $21,$25 669 or $6,$30 670 or $21,$6 671#endif 672#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 673 addu $2,$31 # 13 674 xor $25,$24,$1 675 rotr $6,$3,27 676 and $25,$7 677 addu $2,$6 678#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 679 lw $22,14*4($5) 680#else 681 lwl $22,14*4+3($5) 682 lwr $22,14*4+0($5) 683#endif 684 xor $25,$1 685 addu $2,$21 686 rotr $7,$7,2 687 addu $2,$25 688#else 689 lwl $22,14*4+3($5) 690 sll $25,$3,5 # 13 691 addu $2,$31 692 lwr $22,14*4+0($5) 693 srl $6,$3,27 694 addu $2,$25 695 xor $25,$24,$1 696 addu $2,$6 697 sll $30,$7,30 698 and $25,$7 699 srl $7,$7,2 700 xor $25,$1 701 addu $2,$21 702 or $7,$30 703 addu $2,$25 704#endif 705#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 706 wsbh $22,$22 # byte swap(14) 707 rotr $22,$22,16 708#else 709 srl $25,$22,24 # byte swap(14) 710 srl $6,$22,8 711 andi $30,$22,0xFF00 712 sll $22,$22,24 713 andi $6,0xFF00 714 sll $30,$30,8 715 or $22,$25 716 or $6,$30 717 or $22,$6 718#endif 719#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 720 addu $1,$31 # 14 721 xor $25,$7,$24 722 rotr $6,$2,27 723 and $25,$3 724 addu $1,$6 725#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 726 lw $23,15*4($5) 727#else 728 lwl $23,15*4+3($5) 729 lwr $23,15*4+0($5) 730#endif 731 xor $25,$24 732 addu $1,$22 733 rotr $3,$3,2 734 addu $1,$25 735#else 736 lwl $23,15*4+3($5) 737 sll $25,$2,5 # 14 738 addu $1,$31 739 lwr $23,15*4+0($5) 740 srl $6,$2,27 741 addu $1,$25 742 xor $25,$7,$24 743 addu $1,$6 744 sll $30,$3,30 745 and $25,$3 746 srl $3,$3,2 747 xor $25,$24 748 addu $1,$22 749 or $3,$30 750 addu $1,$25 751#endif 752#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 753 wsbh $23,$23 # byte swap(15) 754 rotr $23,$23,16 755#else 756 srl $25,$23,24 # byte swap(15) 757 srl $6,$23,8 758 andi $30,$23,0xFF00 759 sll $23,$23,24 760 andi $6,0xFF00 761 sll $30,$30,8 762 or $23,$25 763 or $23,$6 764 or $23,$30 765#endif 766#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 767 addu $24,$31 # 15 768 xor $8,$10 769 xor $25,$3,$7 770 rotr $6,$1,27 771 xor $8,$16 772 and $25,$2 773 addu $24,$6 774 xor $8,$21 775 xor $25,$7 776 addu $24,$23 777 rotr $8,$8,31 778 rotr $2,$2,2 779 addu $24,$25 780#else 781 xor $8,$10 782 sll $25,$1,5 # 15 783 addu $24,$31 784 srl $6,$1,27 785 addu $24,$25 786 xor $8,$16 787 xor $25,$3,$7 788 addu $24,$6 789 xor $8,$21 790 sll $30,$2,30 791 and $25,$2 792 srl $6,$8,31 793 addu $8,$8 794 srl $2,$2,2 795 xor $25,$7 796 or $8,$6 797 addu $24,$23 798 or $2,$30 799 addu $24,$25 800#endif 801#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 802 addu $7,$31 # 16 803 xor $9,$11 804 xor $25,$2,$3 805 rotr $6,$24,27 806 xor $9,$17 807 and $25,$1 808 addu $7,$6 809 xor $9,$22 810 xor $25,$3 811 addu $7,$8 812 rotr $9,$9,31 813 rotr $1,$1,2 814 addu $7,$25 815#else 816 xor $9,$11 817 sll $25,$24,5 # 16 818 addu $7,$31 819 srl $6,$24,27 820 addu $7,$25 821 xor $9,$17 822 xor $25,$2,$3 823 addu $7,$6 824 xor $9,$22 825 sll $30,$1,30 826 and $25,$1 827 srl $6,$9,31 828 addu $9,$9 829 srl $1,$1,2 830 xor $25,$3 831 or $9,$6 832 addu $7,$8 833 or $1,$30 834 addu $7,$25 835#endif 836#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 837 addu $3,$31 # 17 838 xor $10,$12 839 xor $25,$1,$2 840 rotr $6,$7,27 841 xor $10,$18 842 and $25,$24 843 addu $3,$6 844 xor $10,$23 845 xor $25,$2 846 addu $3,$9 847 rotr $10,$10,31 848 rotr $24,$24,2 849 addu $3,$25 850#else 851 xor $10,$12 852 sll $25,$7,5 # 17 853 addu $3,$31 854 srl $6,$7,27 855 addu $3,$25 856 xor $10,$18 857 xor $25,$1,$2 858 addu $3,$6 859 xor $10,$23 860 sll $30,$24,30 861 and $25,$24 862 srl $6,$10,31 863 addu $10,$10 864 srl $24,$24,2 865 xor $25,$2 866 or $10,$6 867 addu $3,$9 868 or $24,$30 869 addu $3,$25 870#endif 871#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 872 addu $2,$31 # 18 873 xor $11,$13 874 xor $25,$24,$1 875 rotr $6,$3,27 876 xor $11,$19 877 and $25,$7 878 addu $2,$6 879 xor $11,$8 880 xor $25,$1 881 addu $2,$10 882 rotr $11,$11,31 883 rotr $7,$7,2 884 addu $2,$25 885#else 886 xor $11,$13 887 sll $25,$3,5 # 18 888 addu $2,$31 889 srl $6,$3,27 890 addu $2,$25 891 xor $11,$19 892 xor $25,$24,$1 893 addu $2,$6 894 xor $11,$8 895 sll $30,$7,30 896 and $25,$7 897 srl $6,$11,31 898 addu $11,$11 899 srl $7,$7,2 900 xor $25,$1 901 or $11,$6 902 addu $2,$10 903 or $7,$30 904 addu $2,$25 905#endif 906#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 907 addu $1,$31 # 19 908 xor $12,$14 909 xor $25,$7,$24 910 rotr $6,$2,27 911 xor $12,$20 912 and $25,$3 913 addu $1,$6 914 xor $12,$9 915 xor $25,$24 916 addu $1,$11 917 rotr $12,$12,31 918 rotr $3,$3,2 919 addu $1,$25 920#else 921 xor $12,$14 922 sll $25,$2,5 # 19 923 addu $1,$31 924 srl $6,$2,27 925 addu $1,$25 926 xor $12,$20 927 xor $25,$7,$24 928 addu $1,$6 929 xor $12,$9 930 sll $30,$3,30 931 and $25,$3 932 srl $6,$12,31 933 addu $12,$12 934 srl $3,$3,2 935 xor $25,$24 936 or $12,$6 937 addu $1,$11 938 or $3,$30 939 addu $1,$25 940#endif 941 lui $31,0x6ed9 942 ori $31,0xeba1 # K_20_39 943#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 944 xor $13,$15 945 addu $24,$31 # 20 946 rotr $6,$1,27 947 xor $13,$21 948 xor $25,$3,$7 949 addu $24,$6 950 xor $13,$10 951 xor $25,$2 952 addu $24,$12 953 rotr $13,$13,31 954 rotr $2,$2,2 955 addu $24,$25 956#else 957 xor $13,$15 958 sll $25,$1,5 # 20 959 addu $24,$31 960 srl $6,$1,27 961 addu $24,$25 962 xor $13,$21 963 xor $25,$3,$7 964 addu $24,$6 965 xor $13,$10 966 sll $30,$2,30 967 xor $25,$2 968 srl $6,$13,31 969 addu $13,$13 970 srl $2,$2,2 971 addu $24,$12 972 or $13,$6 973 or $2,$30 974 addu $24,$25 975#endif 976#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 977 xor $14,$16 978 addu $7,$31 # 21 979 rotr $6,$24,27 980 xor $14,$22 981 xor $25,$2,$3 982 addu $7,$6 983 xor $14,$11 984 xor $25,$1 985 addu $7,$13 986 rotr $14,$14,31 987 rotr $1,$1,2 988 addu $7,$25 989#else 990 xor $14,$16 991 sll $25,$24,5 # 21 992 addu $7,$31 993 srl $6,$24,27 994 addu $7,$25 995 xor $14,$22 996 xor $25,$2,$3 997 addu $7,$6 998 xor $14,$11 999 sll $30,$1,30 1000 xor $25,$1 1001 srl $6,$14,31 1002 addu $14,$14 1003 srl $1,$1,2 1004 addu $7,$13 1005 or $14,$6 1006 or $1,$30 1007 addu $7,$25 1008#endif 1009#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1010 xor $15,$17 1011 addu $3,$31 # 22 1012 rotr $6,$7,27 1013 xor $15,$23 1014 xor $25,$1,$2 1015 addu $3,$6 1016 xor $15,$12 1017 xor $25,$24 1018 addu $3,$14 1019 rotr $15,$15,31 1020 rotr $24,$24,2 1021 addu $3,$25 1022#else 1023 xor $15,$17 1024 sll $25,$7,5 # 22 1025 addu $3,$31 1026 srl $6,$7,27 1027 addu $3,$25 1028 xor $15,$23 1029 xor $25,$1,$2 1030 addu $3,$6 1031 xor $15,$12 1032 sll $30,$24,30 1033 xor $25,$24 1034 srl $6,$15,31 1035 addu $15,$15 1036 srl $24,$24,2 1037 addu $3,$14 1038 or $15,$6 1039 or $24,$30 1040 addu $3,$25 1041#endif 1042#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1043 xor $16,$18 1044 addu $2,$31 # 23 1045 rotr $6,$3,27 1046 xor $16,$8 1047 xor $25,$24,$1 1048 addu $2,$6 1049 xor $16,$13 1050 xor $25,$7 1051 addu $2,$15 1052 rotr $16,$16,31 1053 rotr $7,$7,2 1054 addu $2,$25 1055#else 1056 xor $16,$18 1057 sll $25,$3,5 # 23 1058 addu $2,$31 1059 srl $6,$3,27 1060 addu $2,$25 1061 xor $16,$8 1062 xor $25,$24,$1 1063 addu $2,$6 1064 xor $16,$13 1065 sll $30,$7,30 1066 xor $25,$7 1067 srl $6,$16,31 1068 addu $16,$16 1069 srl $7,$7,2 1070 addu $2,$15 1071 or $16,$6 1072 or $7,$30 1073 addu $2,$25 1074#endif 1075#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1076 xor $17,$19 1077 addu $1,$31 # 24 1078 rotr $6,$2,27 1079 xor $17,$9 1080 xor $25,$7,$24 1081 addu $1,$6 1082 xor $17,$14 1083 xor $25,$3 1084 addu $1,$16 1085 rotr $17,$17,31 1086 rotr $3,$3,2 1087 addu $1,$25 1088#else 1089 xor $17,$19 1090 sll $25,$2,5 # 24 1091 addu $1,$31 1092 srl $6,$2,27 1093 addu $1,$25 1094 xor $17,$9 1095 xor $25,$7,$24 1096 addu $1,$6 1097 xor $17,$14 1098 sll $30,$3,30 1099 xor $25,$3 1100 srl $6,$17,31 1101 addu $17,$17 1102 srl $3,$3,2 1103 addu $1,$16 1104 or $17,$6 1105 or $3,$30 1106 addu $1,$25 1107#endif 1108#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1109 xor $18,$20 1110 addu $24,$31 # 25 1111 rotr $6,$1,27 1112 xor $18,$10 1113 xor $25,$3,$7 1114 addu $24,$6 1115 xor $18,$15 1116 xor $25,$2 1117 addu $24,$17 1118 rotr $18,$18,31 1119 rotr $2,$2,2 1120 addu $24,$25 1121#else 1122 xor $18,$20 1123 sll $25,$1,5 # 25 1124 addu $24,$31 1125 srl $6,$1,27 1126 addu $24,$25 1127 xor $18,$10 1128 xor $25,$3,$7 1129 addu $24,$6 1130 xor $18,$15 1131 sll $30,$2,30 1132 xor $25,$2 1133 srl $6,$18,31 1134 addu $18,$18 1135 srl $2,$2,2 1136 addu $24,$17 1137 or $18,$6 1138 or $2,$30 1139 addu $24,$25 1140#endif 1141#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1142 xor $19,$21 1143 addu $7,$31 # 26 1144 rotr $6,$24,27 1145 xor $19,$11 1146 xor $25,$2,$3 1147 addu $7,$6 1148 xor $19,$16 1149 xor $25,$1 1150 addu $7,$18 1151 rotr $19,$19,31 1152 rotr $1,$1,2 1153 addu $7,$25 1154#else 1155 xor $19,$21 1156 sll $25,$24,5 # 26 1157 addu $7,$31 1158 srl $6,$24,27 1159 addu $7,$25 1160 xor $19,$11 1161 xor $25,$2,$3 1162 addu $7,$6 1163 xor $19,$16 1164 sll $30,$1,30 1165 xor $25,$1 1166 srl $6,$19,31 1167 addu $19,$19 1168 srl $1,$1,2 1169 addu $7,$18 1170 or $19,$6 1171 or $1,$30 1172 addu $7,$25 1173#endif 1174#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1175 xor $20,$22 1176 addu $3,$31 # 27 1177 rotr $6,$7,27 1178 xor $20,$12 1179 xor $25,$1,$2 1180 addu $3,$6 1181 xor $20,$17 1182 xor $25,$24 1183 addu $3,$19 1184 rotr $20,$20,31 1185 rotr $24,$24,2 1186 addu $3,$25 1187#else 1188 xor $20,$22 1189 sll $25,$7,5 # 27 1190 addu $3,$31 1191 srl $6,$7,27 1192 addu $3,$25 1193 xor $20,$12 1194 xor $25,$1,$2 1195 addu $3,$6 1196 xor $20,$17 1197 sll $30,$24,30 1198 xor $25,$24 1199 srl $6,$20,31 1200 addu $20,$20 1201 srl $24,$24,2 1202 addu $3,$19 1203 or $20,$6 1204 or $24,$30 1205 addu $3,$25 1206#endif 1207#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1208 xor $21,$23 1209 addu $2,$31 # 28 1210 rotr $6,$3,27 1211 xor $21,$13 1212 xor $25,$24,$1 1213 addu $2,$6 1214 xor $21,$18 1215 xor $25,$7 1216 addu $2,$20 1217 rotr $21,$21,31 1218 rotr $7,$7,2 1219 addu $2,$25 1220#else 1221 xor $21,$23 1222 sll $25,$3,5 # 28 1223 addu $2,$31 1224 srl $6,$3,27 1225 addu $2,$25 1226 xor $21,$13 1227 xor $25,$24,$1 1228 addu $2,$6 1229 xor $21,$18 1230 sll $30,$7,30 1231 xor $25,$7 1232 srl $6,$21,31 1233 addu $21,$21 1234 srl $7,$7,2 1235 addu $2,$20 1236 or $21,$6 1237 or $7,$30 1238 addu $2,$25 1239#endif 1240#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1241 xor $22,$8 1242 addu $1,$31 # 29 1243 rotr $6,$2,27 1244 xor $22,$14 1245 xor $25,$7,$24 1246 addu $1,$6 1247 xor $22,$19 1248 xor $25,$3 1249 addu $1,$21 1250 rotr $22,$22,31 1251 rotr $3,$3,2 1252 addu $1,$25 1253#else 1254 xor $22,$8 1255 sll $25,$2,5 # 29 1256 addu $1,$31 1257 srl $6,$2,27 1258 addu $1,$25 1259 xor $22,$14 1260 xor $25,$7,$24 1261 addu $1,$6 1262 xor $22,$19 1263 sll $30,$3,30 1264 xor $25,$3 1265 srl $6,$22,31 1266 addu $22,$22 1267 srl $3,$3,2 1268 addu $1,$21 1269 or $22,$6 1270 or $3,$30 1271 addu $1,$25 1272#endif 1273#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1274 xor $23,$9 1275 addu $24,$31 # 30 1276 rotr $6,$1,27 1277 xor $23,$15 1278 xor $25,$3,$7 1279 addu $24,$6 1280 xor $23,$20 1281 xor $25,$2 1282 addu $24,$22 1283 rotr $23,$23,31 1284 rotr $2,$2,2 1285 addu $24,$25 1286#else 1287 xor $23,$9 1288 sll $25,$1,5 # 30 1289 addu $24,$31 1290 srl $6,$1,27 1291 addu $24,$25 1292 xor $23,$15 1293 xor $25,$3,$7 1294 addu $24,$6 1295 xor $23,$20 1296 sll $30,$2,30 1297 xor $25,$2 1298 srl $6,$23,31 1299 addu $23,$23 1300 srl $2,$2,2 1301 addu $24,$22 1302 or $23,$6 1303 or $2,$30 1304 addu $24,$25 1305#endif 1306#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1307 xor $8,$10 1308 addu $7,$31 # 31 1309 rotr $6,$24,27 1310 xor $8,$16 1311 xor $25,$2,$3 1312 addu $7,$6 1313 xor $8,$21 1314 xor $25,$1 1315 addu $7,$23 1316 rotr $8,$8,31 1317 rotr $1,$1,2 1318 addu $7,$25 1319#else 1320 xor $8,$10 1321 sll $25,$24,5 # 31 1322 addu $7,$31 1323 srl $6,$24,27 1324 addu $7,$25 1325 xor $8,$16 1326 xor $25,$2,$3 1327 addu $7,$6 1328 xor $8,$21 1329 sll $30,$1,30 1330 xor $25,$1 1331 srl $6,$8,31 1332 addu $8,$8 1333 srl $1,$1,2 1334 addu $7,$23 1335 or $8,$6 1336 or $1,$30 1337 addu $7,$25 1338#endif 1339#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1340 xor $9,$11 1341 addu $3,$31 # 32 1342 rotr $6,$7,27 1343 xor $9,$17 1344 xor $25,$1,$2 1345 addu $3,$6 1346 xor $9,$22 1347 xor $25,$24 1348 addu $3,$8 1349 rotr $9,$9,31 1350 rotr $24,$24,2 1351 addu $3,$25 1352#else 1353 xor $9,$11 1354 sll $25,$7,5 # 32 1355 addu $3,$31 1356 srl $6,$7,27 1357 addu $3,$25 1358 xor $9,$17 1359 xor $25,$1,$2 1360 addu $3,$6 1361 xor $9,$22 1362 sll $30,$24,30 1363 xor $25,$24 1364 srl $6,$9,31 1365 addu $9,$9 1366 srl $24,$24,2 1367 addu $3,$8 1368 or $9,$6 1369 or $24,$30 1370 addu $3,$25 1371#endif 1372#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1373 xor $10,$12 1374 addu $2,$31 # 33 1375 rotr $6,$3,27 1376 xor $10,$18 1377 xor $25,$24,$1 1378 addu $2,$6 1379 xor $10,$23 1380 xor $25,$7 1381 addu $2,$9 1382 rotr $10,$10,31 1383 rotr $7,$7,2 1384 addu $2,$25 1385#else 1386 xor $10,$12 1387 sll $25,$3,5 # 33 1388 addu $2,$31 1389 srl $6,$3,27 1390 addu $2,$25 1391 xor $10,$18 1392 xor $25,$24,$1 1393 addu $2,$6 1394 xor $10,$23 1395 sll $30,$7,30 1396 xor $25,$7 1397 srl $6,$10,31 1398 addu $10,$10 1399 srl $7,$7,2 1400 addu $2,$9 1401 or $10,$6 1402 or $7,$30 1403 addu $2,$25 1404#endif 1405#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1406 xor $11,$13 1407 addu $1,$31 # 34 1408 rotr $6,$2,27 1409 xor $11,$19 1410 xor $25,$7,$24 1411 addu $1,$6 1412 xor $11,$8 1413 xor $25,$3 1414 addu $1,$10 1415 rotr $11,$11,31 1416 rotr $3,$3,2 1417 addu $1,$25 1418#else 1419 xor $11,$13 1420 sll $25,$2,5 # 34 1421 addu $1,$31 1422 srl $6,$2,27 1423 addu $1,$25 1424 xor $11,$19 1425 xor $25,$7,$24 1426 addu $1,$6 1427 xor $11,$8 1428 sll $30,$3,30 1429 xor $25,$3 1430 srl $6,$11,31 1431 addu $11,$11 1432 srl $3,$3,2 1433 addu $1,$10 1434 or $11,$6 1435 or $3,$30 1436 addu $1,$25 1437#endif 1438#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1439 xor $12,$14 1440 addu $24,$31 # 35 1441 rotr $6,$1,27 1442 xor $12,$20 1443 xor $25,$3,$7 1444 addu $24,$6 1445 xor $12,$9 1446 xor $25,$2 1447 addu $24,$11 1448 rotr $12,$12,31 1449 rotr $2,$2,2 1450 addu $24,$25 1451#else 1452 xor $12,$14 1453 sll $25,$1,5 # 35 1454 addu $24,$31 1455 srl $6,$1,27 1456 addu $24,$25 1457 xor $12,$20 1458 xor $25,$3,$7 1459 addu $24,$6 1460 xor $12,$9 1461 sll $30,$2,30 1462 xor $25,$2 1463 srl $6,$12,31 1464 addu $12,$12 1465 srl $2,$2,2 1466 addu $24,$11 1467 or $12,$6 1468 or $2,$30 1469 addu $24,$25 1470#endif 1471#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1472 xor $13,$15 1473 addu $7,$31 # 36 1474 rotr $6,$24,27 1475 xor $13,$21 1476 xor $25,$2,$3 1477 addu $7,$6 1478 xor $13,$10 1479 xor $25,$1 1480 addu $7,$12 1481 rotr $13,$13,31 1482 rotr $1,$1,2 1483 addu $7,$25 1484#else 1485 xor $13,$15 1486 sll $25,$24,5 # 36 1487 addu $7,$31 1488 srl $6,$24,27 1489 addu $7,$25 1490 xor $13,$21 1491 xor $25,$2,$3 1492 addu $7,$6 1493 xor $13,$10 1494 sll $30,$1,30 1495 xor $25,$1 1496 srl $6,$13,31 1497 addu $13,$13 1498 srl $1,$1,2 1499 addu $7,$12 1500 or $13,$6 1501 or $1,$30 1502 addu $7,$25 1503#endif 1504#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1505 xor $14,$16 1506 addu $3,$31 # 37 1507 rotr $6,$7,27 1508 xor $14,$22 1509 xor $25,$1,$2 1510 addu $3,$6 1511 xor $14,$11 1512 xor $25,$24 1513 addu $3,$13 1514 rotr $14,$14,31 1515 rotr $24,$24,2 1516 addu $3,$25 1517#else 1518 xor $14,$16 1519 sll $25,$7,5 # 37 1520 addu $3,$31 1521 srl $6,$7,27 1522 addu $3,$25 1523 xor $14,$22 1524 xor $25,$1,$2 1525 addu $3,$6 1526 xor $14,$11 1527 sll $30,$24,30 1528 xor $25,$24 1529 srl $6,$14,31 1530 addu $14,$14 1531 srl $24,$24,2 1532 addu $3,$13 1533 or $14,$6 1534 or $24,$30 1535 addu $3,$25 1536#endif 1537#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1538 xor $15,$17 1539 addu $2,$31 # 38 1540 rotr $6,$3,27 1541 xor $15,$23 1542 xor $25,$24,$1 1543 addu $2,$6 1544 xor $15,$12 1545 xor $25,$7 1546 addu $2,$14 1547 rotr $15,$15,31 1548 rotr $7,$7,2 1549 addu $2,$25 1550#else 1551 xor $15,$17 1552 sll $25,$3,5 # 38 1553 addu $2,$31 1554 srl $6,$3,27 1555 addu $2,$25 1556 xor $15,$23 1557 xor $25,$24,$1 1558 addu $2,$6 1559 xor $15,$12 1560 sll $30,$7,30 1561 xor $25,$7 1562 srl $6,$15,31 1563 addu $15,$15 1564 srl $7,$7,2 1565 addu $2,$14 1566 or $15,$6 1567 or $7,$30 1568 addu $2,$25 1569#endif 1570#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1571 xor $16,$18 1572 addu $1,$31 # 39 1573 rotr $6,$2,27 1574 xor $16,$8 1575 xor $25,$7,$24 1576 addu $1,$6 1577 xor $16,$13 1578 xor $25,$3 1579 addu $1,$15 1580 rotr $16,$16,31 1581 rotr $3,$3,2 1582 addu $1,$25 1583#else 1584 xor $16,$18 1585 sll $25,$2,5 # 39 1586 addu $1,$31 1587 srl $6,$2,27 1588 addu $1,$25 1589 xor $16,$8 1590 xor $25,$7,$24 1591 addu $1,$6 1592 xor $16,$13 1593 sll $30,$3,30 1594 xor $25,$3 1595 srl $6,$16,31 1596 addu $16,$16 1597 srl $3,$3,2 1598 addu $1,$15 1599 or $16,$6 1600 or $3,$30 1601 addu $1,$25 1602#endif 1603 lui $31,0x8f1b 1604 ori $31,0xbcdc # K_40_59 1605#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1606 addu $24,$31 # 40 1607 and $25,$3,$7 1608 xor $17,$19 1609 rotr $6,$1,27 1610 addu $24,$25 1611 xor $17,$9 1612 xor $25,$3,$7 1613 addu $24,$6 1614 xor $17,$14 1615 and $25,$2 1616 addu $24,$16 1617 rotr $17,$17,31 1618 rotr $2,$2,2 1619 addu $24,$25 1620#else 1621 xor $17,$19 1622 sll $25,$1,5 # 40 1623 addu $24,$31 1624 srl $6,$1,27 1625 addu $24,$25 1626 xor $17,$9 1627 and $25,$3,$7 1628 addu $24,$6 1629 xor $17,$14 1630 sll $30,$2,30 1631 addu $24,$25 1632 srl $6,$17,31 1633 xor $25,$3,$7 1634 addu $17,$17 1635 and $25,$2 1636 srl $2,$2,2 1637 or $17,$6 1638 addu $24,$16 1639 or $2,$30 1640 addu $24,$25 1641#endif 1642#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1643 addu $7,$31 # 41 1644 and $25,$2,$3 1645 xor $18,$20 1646 rotr $6,$24,27 1647 addu $7,$25 1648 xor $18,$10 1649 xor $25,$2,$3 1650 addu $7,$6 1651 xor $18,$15 1652 and $25,$1 1653 addu $7,$17 1654 rotr $18,$18,31 1655 rotr $1,$1,2 1656 addu $7,$25 1657#else 1658 xor $18,$20 1659 sll $25,$24,5 # 41 1660 addu $7,$31 1661 srl $6,$24,27 1662 addu $7,$25 1663 xor $18,$10 1664 and $25,$2,$3 1665 addu $7,$6 1666 xor $18,$15 1667 sll $30,$1,30 1668 addu $7,$25 1669 srl $6,$18,31 1670 xor $25,$2,$3 1671 addu $18,$18 1672 and $25,$1 1673 srl $1,$1,2 1674 or $18,$6 1675 addu $7,$17 1676 or $1,$30 1677 addu $7,$25 1678#endif 1679#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1680 addu $3,$31 # 42 1681 and $25,$1,$2 1682 xor $19,$21 1683 rotr $6,$7,27 1684 addu $3,$25 1685 xor $19,$11 1686 xor $25,$1,$2 1687 addu $3,$6 1688 xor $19,$16 1689 and $25,$24 1690 addu $3,$18 1691 rotr $19,$19,31 1692 rotr $24,$24,2 1693 addu $3,$25 1694#else 1695 xor $19,$21 1696 sll $25,$7,5 # 42 1697 addu $3,$31 1698 srl $6,$7,27 1699 addu $3,$25 1700 xor $19,$11 1701 and $25,$1,$2 1702 addu $3,$6 1703 xor $19,$16 1704 sll $30,$24,30 1705 addu $3,$25 1706 srl $6,$19,31 1707 xor $25,$1,$2 1708 addu $19,$19 1709 and $25,$24 1710 srl $24,$24,2 1711 or $19,$6 1712 addu $3,$18 1713 or $24,$30 1714 addu $3,$25 1715#endif 1716#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1717 addu $2,$31 # 43 1718 and $25,$24,$1 1719 xor $20,$22 1720 rotr $6,$3,27 1721 addu $2,$25 1722 xor $20,$12 1723 xor $25,$24,$1 1724 addu $2,$6 1725 xor $20,$17 1726 and $25,$7 1727 addu $2,$19 1728 rotr $20,$20,31 1729 rotr $7,$7,2 1730 addu $2,$25 1731#else 1732 xor $20,$22 1733 sll $25,$3,5 # 43 1734 addu $2,$31 1735 srl $6,$3,27 1736 addu $2,$25 1737 xor $20,$12 1738 and $25,$24,$1 1739 addu $2,$6 1740 xor $20,$17 1741 sll $30,$7,30 1742 addu $2,$25 1743 srl $6,$20,31 1744 xor $25,$24,$1 1745 addu $20,$20 1746 and $25,$7 1747 srl $7,$7,2 1748 or $20,$6 1749 addu $2,$19 1750 or $7,$30 1751 addu $2,$25 1752#endif 1753#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1754 addu $1,$31 # 44 1755 and $25,$7,$24 1756 xor $21,$23 1757 rotr $6,$2,27 1758 addu $1,$25 1759 xor $21,$13 1760 xor $25,$7,$24 1761 addu $1,$6 1762 xor $21,$18 1763 and $25,$3 1764 addu $1,$20 1765 rotr $21,$21,31 1766 rotr $3,$3,2 1767 addu $1,$25 1768#else 1769 xor $21,$23 1770 sll $25,$2,5 # 44 1771 addu $1,$31 1772 srl $6,$2,27 1773 addu $1,$25 1774 xor $21,$13 1775 and $25,$7,$24 1776 addu $1,$6 1777 xor $21,$18 1778 sll $30,$3,30 1779 addu $1,$25 1780 srl $6,$21,31 1781 xor $25,$7,$24 1782 addu $21,$21 1783 and $25,$3 1784 srl $3,$3,2 1785 or $21,$6 1786 addu $1,$20 1787 or $3,$30 1788 addu $1,$25 1789#endif 1790#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1791 addu $24,$31 # 45 1792 and $25,$3,$7 1793 xor $22,$8 1794 rotr $6,$1,27 1795 addu $24,$25 1796 xor $22,$14 1797 xor $25,$3,$7 1798 addu $24,$6 1799 xor $22,$19 1800 and $25,$2 1801 addu $24,$21 1802 rotr $22,$22,31 1803 rotr $2,$2,2 1804 addu $24,$25 1805#else 1806 xor $22,$8 1807 sll $25,$1,5 # 45 1808 addu $24,$31 1809 srl $6,$1,27 1810 addu $24,$25 1811 xor $22,$14 1812 and $25,$3,$7 1813 addu $24,$6 1814 xor $22,$19 1815 sll $30,$2,30 1816 addu $24,$25 1817 srl $6,$22,31 1818 xor $25,$3,$7 1819 addu $22,$22 1820 and $25,$2 1821 srl $2,$2,2 1822 or $22,$6 1823 addu $24,$21 1824 or $2,$30 1825 addu $24,$25 1826#endif 1827#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1828 addu $7,$31 # 46 1829 and $25,$2,$3 1830 xor $23,$9 1831 rotr $6,$24,27 1832 addu $7,$25 1833 xor $23,$15 1834 xor $25,$2,$3 1835 addu $7,$6 1836 xor $23,$20 1837 and $25,$1 1838 addu $7,$22 1839 rotr $23,$23,31 1840 rotr $1,$1,2 1841 addu $7,$25 1842#else 1843 xor $23,$9 1844 sll $25,$24,5 # 46 1845 addu $7,$31 1846 srl $6,$24,27 1847 addu $7,$25 1848 xor $23,$15 1849 and $25,$2,$3 1850 addu $7,$6 1851 xor $23,$20 1852 sll $30,$1,30 1853 addu $7,$25 1854 srl $6,$23,31 1855 xor $25,$2,$3 1856 addu $23,$23 1857 and $25,$1 1858 srl $1,$1,2 1859 or $23,$6 1860 addu $7,$22 1861 or $1,$30 1862 addu $7,$25 1863#endif 1864#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1865 addu $3,$31 # 47 1866 and $25,$1,$2 1867 xor $8,$10 1868 rotr $6,$7,27 1869 addu $3,$25 1870 xor $8,$16 1871 xor $25,$1,$2 1872 addu $3,$6 1873 xor $8,$21 1874 and $25,$24 1875 addu $3,$23 1876 rotr $8,$8,31 1877 rotr $24,$24,2 1878 addu $3,$25 1879#else 1880 xor $8,$10 1881 sll $25,$7,5 # 47 1882 addu $3,$31 1883 srl $6,$7,27 1884 addu $3,$25 1885 xor $8,$16 1886 and $25,$1,$2 1887 addu $3,$6 1888 xor $8,$21 1889 sll $30,$24,30 1890 addu $3,$25 1891 srl $6,$8,31 1892 xor $25,$1,$2 1893 addu $8,$8 1894 and $25,$24 1895 srl $24,$24,2 1896 or $8,$6 1897 addu $3,$23 1898 or $24,$30 1899 addu $3,$25 1900#endif 1901#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1902 addu $2,$31 # 48 1903 and $25,$24,$1 1904 xor $9,$11 1905 rotr $6,$3,27 1906 addu $2,$25 1907 xor $9,$17 1908 xor $25,$24,$1 1909 addu $2,$6 1910 xor $9,$22 1911 and $25,$7 1912 addu $2,$8 1913 rotr $9,$9,31 1914 rotr $7,$7,2 1915 addu $2,$25 1916#else 1917 xor $9,$11 1918 sll $25,$3,5 # 48 1919 addu $2,$31 1920 srl $6,$3,27 1921 addu $2,$25 1922 xor $9,$17 1923 and $25,$24,$1 1924 addu $2,$6 1925 xor $9,$22 1926 sll $30,$7,30 1927 addu $2,$25 1928 srl $6,$9,31 1929 xor $25,$24,$1 1930 addu $9,$9 1931 and $25,$7 1932 srl $7,$7,2 1933 or $9,$6 1934 addu $2,$8 1935 or $7,$30 1936 addu $2,$25 1937#endif 1938#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1939 addu $1,$31 # 49 1940 and $25,$7,$24 1941 xor $10,$12 1942 rotr $6,$2,27 1943 addu $1,$25 1944 xor $10,$18 1945 xor $25,$7,$24 1946 addu $1,$6 1947 xor $10,$23 1948 and $25,$3 1949 addu $1,$9 1950 rotr $10,$10,31 1951 rotr $3,$3,2 1952 addu $1,$25 1953#else 1954 xor $10,$12 1955 sll $25,$2,5 # 49 1956 addu $1,$31 1957 srl $6,$2,27 1958 addu $1,$25 1959 xor $10,$18 1960 and $25,$7,$24 1961 addu $1,$6 1962 xor $10,$23 1963 sll $30,$3,30 1964 addu $1,$25 1965 srl $6,$10,31 1966 xor $25,$7,$24 1967 addu $10,$10 1968 and $25,$3 1969 srl $3,$3,2 1970 or $10,$6 1971 addu $1,$9 1972 or $3,$30 1973 addu $1,$25 1974#endif 1975#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1976 addu $24,$31 # 50 1977 and $25,$3,$7 1978 xor $11,$13 1979 rotr $6,$1,27 1980 addu $24,$25 1981 xor $11,$19 1982 xor $25,$3,$7 1983 addu $24,$6 1984 xor $11,$8 1985 and $25,$2 1986 addu $24,$10 1987 rotr $11,$11,31 1988 rotr $2,$2,2 1989 addu $24,$25 1990#else 1991 xor $11,$13 1992 sll $25,$1,5 # 50 1993 addu $24,$31 1994 srl $6,$1,27 1995 addu $24,$25 1996 xor $11,$19 1997 and $25,$3,$7 1998 addu $24,$6 1999 xor $11,$8 2000 sll $30,$2,30 2001 addu $24,$25 2002 srl $6,$11,31 2003 xor $25,$3,$7 2004 addu $11,$11 2005 and $25,$2 2006 srl $2,$2,2 2007 or $11,$6 2008 addu $24,$10 2009 or $2,$30 2010 addu $24,$25 2011#endif 2012#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2013 addu $7,$31 # 51 2014 and $25,$2,$3 2015 xor $12,$14 2016 rotr $6,$24,27 2017 addu $7,$25 2018 xor $12,$20 2019 xor $25,$2,$3 2020 addu $7,$6 2021 xor $12,$9 2022 and $25,$1 2023 addu $7,$11 2024 rotr $12,$12,31 2025 rotr $1,$1,2 2026 addu $7,$25 2027#else 2028 xor $12,$14 2029 sll $25,$24,5 # 51 2030 addu $7,$31 2031 srl $6,$24,27 2032 addu $7,$25 2033 xor $12,$20 2034 and $25,$2,$3 2035 addu $7,$6 2036 xor $12,$9 2037 sll $30,$1,30 2038 addu $7,$25 2039 srl $6,$12,31 2040 xor $25,$2,$3 2041 addu $12,$12 2042 and $25,$1 2043 srl $1,$1,2 2044 or $12,$6 2045 addu $7,$11 2046 or $1,$30 2047 addu $7,$25 2048#endif 2049#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2050 addu $3,$31 # 52 2051 and $25,$1,$2 2052 xor $13,$15 2053 rotr $6,$7,27 2054 addu $3,$25 2055 xor $13,$21 2056 xor $25,$1,$2 2057 addu $3,$6 2058 xor $13,$10 2059 and $25,$24 2060 addu $3,$12 2061 rotr $13,$13,31 2062 rotr $24,$24,2 2063 addu $3,$25 2064#else 2065 xor $13,$15 2066 sll $25,$7,5 # 52 2067 addu $3,$31 2068 srl $6,$7,27 2069 addu $3,$25 2070 xor $13,$21 2071 and $25,$1,$2 2072 addu $3,$6 2073 xor $13,$10 2074 sll $30,$24,30 2075 addu $3,$25 2076 srl $6,$13,31 2077 xor $25,$1,$2 2078 addu $13,$13 2079 and $25,$24 2080 srl $24,$24,2 2081 or $13,$6 2082 addu $3,$12 2083 or $24,$30 2084 addu $3,$25 2085#endif 2086#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2087 addu $2,$31 # 53 2088 and $25,$24,$1 2089 xor $14,$16 2090 rotr $6,$3,27 2091 addu $2,$25 2092 xor $14,$22 2093 xor $25,$24,$1 2094 addu $2,$6 2095 xor $14,$11 2096 and $25,$7 2097 addu $2,$13 2098 rotr $14,$14,31 2099 rotr $7,$7,2 2100 addu $2,$25 2101#else 2102 xor $14,$16 2103 sll $25,$3,5 # 53 2104 addu $2,$31 2105 srl $6,$3,27 2106 addu $2,$25 2107 xor $14,$22 2108 and $25,$24,$1 2109 addu $2,$6 2110 xor $14,$11 2111 sll $30,$7,30 2112 addu $2,$25 2113 srl $6,$14,31 2114 xor $25,$24,$1 2115 addu $14,$14 2116 and $25,$7 2117 srl $7,$7,2 2118 or $14,$6 2119 addu $2,$13 2120 or $7,$30 2121 addu $2,$25 2122#endif 2123#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2124 addu $1,$31 # 54 2125 and $25,$7,$24 2126 xor $15,$17 2127 rotr $6,$2,27 2128 addu $1,$25 2129 xor $15,$23 2130 xor $25,$7,$24 2131 addu $1,$6 2132 xor $15,$12 2133 and $25,$3 2134 addu $1,$14 2135 rotr $15,$15,31 2136 rotr $3,$3,2 2137 addu $1,$25 2138#else 2139 xor $15,$17 2140 sll $25,$2,5 # 54 2141 addu $1,$31 2142 srl $6,$2,27 2143 addu $1,$25 2144 xor $15,$23 2145 and $25,$7,$24 2146 addu $1,$6 2147 xor $15,$12 2148 sll $30,$3,30 2149 addu $1,$25 2150 srl $6,$15,31 2151 xor $25,$7,$24 2152 addu $15,$15 2153 and $25,$3 2154 srl $3,$3,2 2155 or $15,$6 2156 addu $1,$14 2157 or $3,$30 2158 addu $1,$25 2159#endif 2160#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2161 addu $24,$31 # 55 2162 and $25,$3,$7 2163 xor $16,$18 2164 rotr $6,$1,27 2165 addu $24,$25 2166 xor $16,$8 2167 xor $25,$3,$7 2168 addu $24,$6 2169 xor $16,$13 2170 and $25,$2 2171 addu $24,$15 2172 rotr $16,$16,31 2173 rotr $2,$2,2 2174 addu $24,$25 2175#else 2176 xor $16,$18 2177 sll $25,$1,5 # 55 2178 addu $24,$31 2179 srl $6,$1,27 2180 addu $24,$25 2181 xor $16,$8 2182 and $25,$3,$7 2183 addu $24,$6 2184 xor $16,$13 2185 sll $30,$2,30 2186 addu $24,$25 2187 srl $6,$16,31 2188 xor $25,$3,$7 2189 addu $16,$16 2190 and $25,$2 2191 srl $2,$2,2 2192 or $16,$6 2193 addu $24,$15 2194 or $2,$30 2195 addu $24,$25 2196#endif 2197#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2198 addu $7,$31 # 56 2199 and $25,$2,$3 2200 xor $17,$19 2201 rotr $6,$24,27 2202 addu $7,$25 2203 xor $17,$9 2204 xor $25,$2,$3 2205 addu $7,$6 2206 xor $17,$14 2207 and $25,$1 2208 addu $7,$16 2209 rotr $17,$17,31 2210 rotr $1,$1,2 2211 addu $7,$25 2212#else 2213 xor $17,$19 2214 sll $25,$24,5 # 56 2215 addu $7,$31 2216 srl $6,$24,27 2217 addu $7,$25 2218 xor $17,$9 2219 and $25,$2,$3 2220 addu $7,$6 2221 xor $17,$14 2222 sll $30,$1,30 2223 addu $7,$25 2224 srl $6,$17,31 2225 xor $25,$2,$3 2226 addu $17,$17 2227 and $25,$1 2228 srl $1,$1,2 2229 or $17,$6 2230 addu $7,$16 2231 or $1,$30 2232 addu $7,$25 2233#endif 2234#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2235 addu $3,$31 # 57 2236 and $25,$1,$2 2237 xor $18,$20 2238 rotr $6,$7,27 2239 addu $3,$25 2240 xor $18,$10 2241 xor $25,$1,$2 2242 addu $3,$6 2243 xor $18,$15 2244 and $25,$24 2245 addu $3,$17 2246 rotr $18,$18,31 2247 rotr $24,$24,2 2248 addu $3,$25 2249#else 2250 xor $18,$20 2251 sll $25,$7,5 # 57 2252 addu $3,$31 2253 srl $6,$7,27 2254 addu $3,$25 2255 xor $18,$10 2256 and $25,$1,$2 2257 addu $3,$6 2258 xor $18,$15 2259 sll $30,$24,30 2260 addu $3,$25 2261 srl $6,$18,31 2262 xor $25,$1,$2 2263 addu $18,$18 2264 and $25,$24 2265 srl $24,$24,2 2266 or $18,$6 2267 addu $3,$17 2268 or $24,$30 2269 addu $3,$25 2270#endif 2271#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2272 addu $2,$31 # 58 2273 and $25,$24,$1 2274 xor $19,$21 2275 rotr $6,$3,27 2276 addu $2,$25 2277 xor $19,$11 2278 xor $25,$24,$1 2279 addu $2,$6 2280 xor $19,$16 2281 and $25,$7 2282 addu $2,$18 2283 rotr $19,$19,31 2284 rotr $7,$7,2 2285 addu $2,$25 2286#else 2287 xor $19,$21 2288 sll $25,$3,5 # 58 2289 addu $2,$31 2290 srl $6,$3,27 2291 addu $2,$25 2292 xor $19,$11 2293 and $25,$24,$1 2294 addu $2,$6 2295 xor $19,$16 2296 sll $30,$7,30 2297 addu $2,$25 2298 srl $6,$19,31 2299 xor $25,$24,$1 2300 addu $19,$19 2301 and $25,$7 2302 srl $7,$7,2 2303 or $19,$6 2304 addu $2,$18 2305 or $7,$30 2306 addu $2,$25 2307#endif 2308#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2309 addu $1,$31 # 59 2310 and $25,$7,$24 2311 xor $20,$22 2312 rotr $6,$2,27 2313 addu $1,$25 2314 xor $20,$12 2315 xor $25,$7,$24 2316 addu $1,$6 2317 xor $20,$17 2318 and $25,$3 2319 addu $1,$19 2320 rotr $20,$20,31 2321 rotr $3,$3,2 2322 addu $1,$25 2323#else 2324 xor $20,$22 2325 sll $25,$2,5 # 59 2326 addu $1,$31 2327 srl $6,$2,27 2328 addu $1,$25 2329 xor $20,$12 2330 and $25,$7,$24 2331 addu $1,$6 2332 xor $20,$17 2333 sll $30,$3,30 2334 addu $1,$25 2335 srl $6,$20,31 2336 xor $25,$7,$24 2337 addu $20,$20 2338 and $25,$3 2339 srl $3,$3,2 2340 or $20,$6 2341 addu $1,$19 2342 or $3,$30 2343 addu $1,$25 2344#endif 2345 lui $31,0xca62 2346 ori $31,0xc1d6 # K_60_79 2347#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2348 xor $21,$23 2349 addu $24,$31 # 60 2350 rotr $6,$1,27 2351 xor $21,$13 2352 xor $25,$3,$7 2353 addu $24,$6 2354 xor $21,$18 2355 xor $25,$2 2356 addu $24,$20 2357 rotr $21,$21,31 2358 rotr $2,$2,2 2359 addu $24,$25 2360#else 2361 xor $21,$23 2362 sll $25,$1,5 # 60 2363 addu $24,$31 2364 srl $6,$1,27 2365 addu $24,$25 2366 xor $21,$13 2367 xor $25,$3,$7 2368 addu $24,$6 2369 xor $21,$18 2370 sll $30,$2,30 2371 xor $25,$2 2372 srl $6,$21,31 2373 addu $21,$21 2374 srl $2,$2,2 2375 addu $24,$20 2376 or $21,$6 2377 or $2,$30 2378 addu $24,$25 2379#endif 2380#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2381 xor $22,$8 2382 addu $7,$31 # 61 2383 rotr $6,$24,27 2384 xor $22,$14 2385 xor $25,$2,$3 2386 addu $7,$6 2387 xor $22,$19 2388 xor $25,$1 2389 addu $7,$21 2390 rotr $22,$22,31 2391 rotr $1,$1,2 2392 addu $7,$25 2393#else 2394 xor $22,$8 2395 sll $25,$24,5 # 61 2396 addu $7,$31 2397 srl $6,$24,27 2398 addu $7,$25 2399 xor $22,$14 2400 xor $25,$2,$3 2401 addu $7,$6 2402 xor $22,$19 2403 sll $30,$1,30 2404 xor $25,$1 2405 srl $6,$22,31 2406 addu $22,$22 2407 srl $1,$1,2 2408 addu $7,$21 2409 or $22,$6 2410 or $1,$30 2411 addu $7,$25 2412#endif 2413#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2414 xor $23,$9 2415 addu $3,$31 # 62 2416 rotr $6,$7,27 2417 xor $23,$15 2418 xor $25,$1,$2 2419 addu $3,$6 2420 xor $23,$20 2421 xor $25,$24 2422 addu $3,$22 2423 rotr $23,$23,31 2424 rotr $24,$24,2 2425 addu $3,$25 2426#else 2427 xor $23,$9 2428 sll $25,$7,5 # 62 2429 addu $3,$31 2430 srl $6,$7,27 2431 addu $3,$25 2432 xor $23,$15 2433 xor $25,$1,$2 2434 addu $3,$6 2435 xor $23,$20 2436 sll $30,$24,30 2437 xor $25,$24 2438 srl $6,$23,31 2439 addu $23,$23 2440 srl $24,$24,2 2441 addu $3,$22 2442 or $23,$6 2443 or $24,$30 2444 addu $3,$25 2445#endif 2446#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2447 xor $8,$10 2448 addu $2,$31 # 63 2449 rotr $6,$3,27 2450 xor $8,$16 2451 xor $25,$24,$1 2452 addu $2,$6 2453 xor $8,$21 2454 xor $25,$7 2455 addu $2,$23 2456 rotr $8,$8,31 2457 rotr $7,$7,2 2458 addu $2,$25 2459#else 2460 xor $8,$10 2461 sll $25,$3,5 # 63 2462 addu $2,$31 2463 srl $6,$3,27 2464 addu $2,$25 2465 xor $8,$16 2466 xor $25,$24,$1 2467 addu $2,$6 2468 xor $8,$21 2469 sll $30,$7,30 2470 xor $25,$7 2471 srl $6,$8,31 2472 addu $8,$8 2473 srl $7,$7,2 2474 addu $2,$23 2475 or $8,$6 2476 or $7,$30 2477 addu $2,$25 2478#endif 2479#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2480 xor $9,$11 2481 addu $1,$31 # 64 2482 rotr $6,$2,27 2483 xor $9,$17 2484 xor $25,$7,$24 2485 addu $1,$6 2486 xor $9,$22 2487 xor $25,$3 2488 addu $1,$8 2489 rotr $9,$9,31 2490 rotr $3,$3,2 2491 addu $1,$25 2492#else 2493 xor $9,$11 2494 sll $25,$2,5 # 64 2495 addu $1,$31 2496 srl $6,$2,27 2497 addu $1,$25 2498 xor $9,$17 2499 xor $25,$7,$24 2500 addu $1,$6 2501 xor $9,$22 2502 sll $30,$3,30 2503 xor $25,$3 2504 srl $6,$9,31 2505 addu $9,$9 2506 srl $3,$3,2 2507 addu $1,$8 2508 or $9,$6 2509 or $3,$30 2510 addu $1,$25 2511#endif 2512#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2513 xor $10,$12 2514 addu $24,$31 # 65 2515 rotr $6,$1,27 2516 xor $10,$18 2517 xor $25,$3,$7 2518 addu $24,$6 2519 xor $10,$23 2520 xor $25,$2 2521 addu $24,$9 2522 rotr $10,$10,31 2523 rotr $2,$2,2 2524 addu $24,$25 2525#else 2526 xor $10,$12 2527 sll $25,$1,5 # 65 2528 addu $24,$31 2529 srl $6,$1,27 2530 addu $24,$25 2531 xor $10,$18 2532 xor $25,$3,$7 2533 addu $24,$6 2534 xor $10,$23 2535 sll $30,$2,30 2536 xor $25,$2 2537 srl $6,$10,31 2538 addu $10,$10 2539 srl $2,$2,2 2540 addu $24,$9 2541 or $10,$6 2542 or $2,$30 2543 addu $24,$25 2544#endif 2545#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2546 xor $11,$13 2547 addu $7,$31 # 66 2548 rotr $6,$24,27 2549 xor $11,$19 2550 xor $25,$2,$3 2551 addu $7,$6 2552 xor $11,$8 2553 xor $25,$1 2554 addu $7,$10 2555 rotr $11,$11,31 2556 rotr $1,$1,2 2557 addu $7,$25 2558#else 2559 xor $11,$13 2560 sll $25,$24,5 # 66 2561 addu $7,$31 2562 srl $6,$24,27 2563 addu $7,$25 2564 xor $11,$19 2565 xor $25,$2,$3 2566 addu $7,$6 2567 xor $11,$8 2568 sll $30,$1,30 2569 xor $25,$1 2570 srl $6,$11,31 2571 addu $11,$11 2572 srl $1,$1,2 2573 addu $7,$10 2574 or $11,$6 2575 or $1,$30 2576 addu $7,$25 2577#endif 2578#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2579 xor $12,$14 2580 addu $3,$31 # 67 2581 rotr $6,$7,27 2582 xor $12,$20 2583 xor $25,$1,$2 2584 addu $3,$6 2585 xor $12,$9 2586 xor $25,$24 2587 addu $3,$11 2588 rotr $12,$12,31 2589 rotr $24,$24,2 2590 addu $3,$25 2591#else 2592 xor $12,$14 2593 sll $25,$7,5 # 67 2594 addu $3,$31 2595 srl $6,$7,27 2596 addu $3,$25 2597 xor $12,$20 2598 xor $25,$1,$2 2599 addu $3,$6 2600 xor $12,$9 2601 sll $30,$24,30 2602 xor $25,$24 2603 srl $6,$12,31 2604 addu $12,$12 2605 srl $24,$24,2 2606 addu $3,$11 2607 or $12,$6 2608 or $24,$30 2609 addu $3,$25 2610#endif 2611#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2612 xor $13,$15 2613 addu $2,$31 # 68 2614 rotr $6,$3,27 2615 xor $13,$21 2616 xor $25,$24,$1 2617 addu $2,$6 2618 xor $13,$10 2619 xor $25,$7 2620 addu $2,$12 2621 rotr $13,$13,31 2622 rotr $7,$7,2 2623 addu $2,$25 2624#else 2625 xor $13,$15 2626 sll $25,$3,5 # 68 2627 addu $2,$31 2628 srl $6,$3,27 2629 addu $2,$25 2630 xor $13,$21 2631 xor $25,$24,$1 2632 addu $2,$6 2633 xor $13,$10 2634 sll $30,$7,30 2635 xor $25,$7 2636 srl $6,$13,31 2637 addu $13,$13 2638 srl $7,$7,2 2639 addu $2,$12 2640 or $13,$6 2641 or $7,$30 2642 addu $2,$25 2643#endif 2644#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2645 xor $14,$16 2646 addu $1,$31 # 69 2647 rotr $6,$2,27 2648 xor $14,$22 2649 xor $25,$7,$24 2650 addu $1,$6 2651 xor $14,$11 2652 xor $25,$3 2653 addu $1,$13 2654 rotr $14,$14,31 2655 rotr $3,$3,2 2656 addu $1,$25 2657#else 2658 xor $14,$16 2659 sll $25,$2,5 # 69 2660 addu $1,$31 2661 srl $6,$2,27 2662 addu $1,$25 2663 xor $14,$22 2664 xor $25,$7,$24 2665 addu $1,$6 2666 xor $14,$11 2667 sll $30,$3,30 2668 xor $25,$3 2669 srl $6,$14,31 2670 addu $14,$14 2671 srl $3,$3,2 2672 addu $1,$13 2673 or $14,$6 2674 or $3,$30 2675 addu $1,$25 2676#endif 2677#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2678 xor $15,$17 2679 addu $24,$31 # 70 2680 rotr $6,$1,27 2681 xor $15,$23 2682 xor $25,$3,$7 2683 addu $24,$6 2684 xor $15,$12 2685 xor $25,$2 2686 addu $24,$14 2687 rotr $15,$15,31 2688 rotr $2,$2,2 2689 addu $24,$25 2690#else 2691 xor $15,$17 2692 sll $25,$1,5 # 70 2693 addu $24,$31 2694 srl $6,$1,27 2695 addu $24,$25 2696 xor $15,$23 2697 xor $25,$3,$7 2698 addu $24,$6 2699 xor $15,$12 2700 sll $30,$2,30 2701 xor $25,$2 2702 srl $6,$15,31 2703 addu $15,$15 2704 srl $2,$2,2 2705 addu $24,$14 2706 or $15,$6 2707 or $2,$30 2708 addu $24,$25 2709#endif 2710#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2711 xor $16,$18 2712 addu $7,$31 # 71 2713 rotr $6,$24,27 2714 xor $16,$8 2715 xor $25,$2,$3 2716 addu $7,$6 2717 xor $16,$13 2718 xor $25,$1 2719 addu $7,$15 2720 rotr $16,$16,31 2721 rotr $1,$1,2 2722 addu $7,$25 2723#else 2724 xor $16,$18 2725 sll $25,$24,5 # 71 2726 addu $7,$31 2727 srl $6,$24,27 2728 addu $7,$25 2729 xor $16,$8 2730 xor $25,$2,$3 2731 addu $7,$6 2732 xor $16,$13 2733 sll $30,$1,30 2734 xor $25,$1 2735 srl $6,$16,31 2736 addu $16,$16 2737 srl $1,$1,2 2738 addu $7,$15 2739 or $16,$6 2740 or $1,$30 2741 addu $7,$25 2742#endif 2743#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2744 xor $17,$19 2745 addu $3,$31 # 72 2746 rotr $6,$7,27 2747 xor $17,$9 2748 xor $25,$1,$2 2749 addu $3,$6 2750 xor $17,$14 2751 xor $25,$24 2752 addu $3,$16 2753 rotr $17,$17,31 2754 rotr $24,$24,2 2755 addu $3,$25 2756#else 2757 xor $17,$19 2758 sll $25,$7,5 # 72 2759 addu $3,$31 2760 srl $6,$7,27 2761 addu $3,$25 2762 xor $17,$9 2763 xor $25,$1,$2 2764 addu $3,$6 2765 xor $17,$14 2766 sll $30,$24,30 2767 xor $25,$24 2768 srl $6,$17,31 2769 addu $17,$17 2770 srl $24,$24,2 2771 addu $3,$16 2772 or $17,$6 2773 or $24,$30 2774 addu $3,$25 2775#endif 2776#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2777 xor $18,$20 2778 addu $2,$31 # 73 2779 rotr $6,$3,27 2780 xor $18,$10 2781 xor $25,$24,$1 2782 addu $2,$6 2783 xor $18,$15 2784 xor $25,$7 2785 addu $2,$17 2786 rotr $18,$18,31 2787 rotr $7,$7,2 2788 addu $2,$25 2789#else 2790 xor $18,$20 2791 sll $25,$3,5 # 73 2792 addu $2,$31 2793 srl $6,$3,27 2794 addu $2,$25 2795 xor $18,$10 2796 xor $25,$24,$1 2797 addu $2,$6 2798 xor $18,$15 2799 sll $30,$7,30 2800 xor $25,$7 2801 srl $6,$18,31 2802 addu $18,$18 2803 srl $7,$7,2 2804 addu $2,$17 2805 or $18,$6 2806 or $7,$30 2807 addu $2,$25 2808#endif 2809#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2810 xor $19,$21 2811 addu $1,$31 # 74 2812 rotr $6,$2,27 2813 xor $19,$11 2814 xor $25,$7,$24 2815 addu $1,$6 2816 xor $19,$16 2817 xor $25,$3 2818 addu $1,$18 2819 rotr $19,$19,31 2820 rotr $3,$3,2 2821 addu $1,$25 2822#else 2823 xor $19,$21 2824 sll $25,$2,5 # 74 2825 addu $1,$31 2826 srl $6,$2,27 2827 addu $1,$25 2828 xor $19,$11 2829 xor $25,$7,$24 2830 addu $1,$6 2831 xor $19,$16 2832 sll $30,$3,30 2833 xor $25,$3 2834 srl $6,$19,31 2835 addu $19,$19 2836 srl $3,$3,2 2837 addu $1,$18 2838 or $19,$6 2839 or $3,$30 2840 addu $1,$25 2841#endif 2842#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2843 xor $20,$22 2844 addu $24,$31 # 75 2845 rotr $6,$1,27 2846 xor $20,$12 2847 xor $25,$3,$7 2848 addu $24,$6 2849 xor $20,$17 2850 xor $25,$2 2851 addu $24,$19 2852 rotr $20,$20,31 2853 rotr $2,$2,2 2854 addu $24,$25 2855#else 2856 xor $20,$22 2857 sll $25,$1,5 # 75 2858 addu $24,$31 2859 srl $6,$1,27 2860 addu $24,$25 2861 xor $20,$12 2862 xor $25,$3,$7 2863 addu $24,$6 2864 xor $20,$17 2865 sll $30,$2,30 2866 xor $25,$2 2867 srl $6,$20,31 2868 addu $20,$20 2869 srl $2,$2,2 2870 addu $24,$19 2871 or $20,$6 2872 or $2,$30 2873 addu $24,$25 2874#endif 2875#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2876 xor $21,$23 2877 addu $7,$31 # 76 2878 rotr $6,$24,27 2879 xor $21,$13 2880 xor $25,$2,$3 2881 addu $7,$6 2882 xor $21,$18 2883 xor $25,$1 2884 addu $7,$20 2885 rotr $21,$21,31 2886 rotr $1,$1,2 2887 addu $7,$25 2888#else 2889 xor $21,$23 2890 sll $25,$24,5 # 76 2891 addu $7,$31 2892 srl $6,$24,27 2893 addu $7,$25 2894 xor $21,$13 2895 xor $25,$2,$3 2896 addu $7,$6 2897 xor $21,$18 2898 sll $30,$1,30 2899 xor $25,$1 2900 srl $6,$21,31 2901 addu $21,$21 2902 srl $1,$1,2 2903 addu $7,$20 2904 or $21,$6 2905 or $1,$30 2906 addu $7,$25 2907#endif 2908#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2909 xor $22,$8 2910 addu $3,$31 # 77 2911 rotr $6,$7,27 2912 xor $22,$14 2913 xor $25,$1,$2 2914 addu $3,$6 2915 xor $22,$19 2916 xor $25,$24 2917 addu $3,$21 2918 rotr $22,$22,31 2919 rotr $24,$24,2 2920 addu $3,$25 2921#else 2922 xor $22,$8 2923 sll $25,$7,5 # 77 2924 addu $3,$31 2925 srl $6,$7,27 2926 addu $3,$25 2927 xor $22,$14 2928 xor $25,$1,$2 2929 addu $3,$6 2930 xor $22,$19 2931 sll $30,$24,30 2932 xor $25,$24 2933 srl $6,$22,31 2934 addu $22,$22 2935 srl $24,$24,2 2936 addu $3,$21 2937 or $22,$6 2938 or $24,$30 2939 addu $3,$25 2940#endif 2941#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2942 xor $23,$9 2943 addu $2,$31 # 78 2944 rotr $6,$3,27 2945 xor $23,$15 2946 xor $25,$24,$1 2947 addu $2,$6 2948 xor $23,$20 2949 xor $25,$7 2950 addu $2,$22 2951 rotr $23,$23,31 2952 rotr $7,$7,2 2953 addu $2,$25 2954#else 2955 xor $23,$9 2956 sll $25,$3,5 # 78 2957 addu $2,$31 2958 srl $6,$3,27 2959 addu $2,$25 2960 xor $23,$15 2961 xor $25,$24,$1 2962 addu $2,$6 2963 xor $23,$20 2964 sll $30,$7,30 2965 xor $25,$7 2966 srl $6,$23,31 2967 addu $23,$23 2968 srl $7,$7,2 2969 addu $2,$22 2970 or $23,$6 2971 or $7,$30 2972 addu $2,$25 2973#endif 2974#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2975 lw $8,0($4) 2976 addu $1,$31 # 79 2977 lw $9,4($4) 2978 rotr $6,$2,27 2979 lw $10,8($4) 2980 xor $25,$7,$24 2981 addu $1,$6 2982 lw $11,12($4) 2983 xor $25,$3 2984 addu $1,$23 2985 lw $12,16($4) 2986 rotr $3,$3,2 2987 addu $1,$25 2988#else 2989 lw $8,0($4) 2990 sll $25,$2,5 # 79 2991 addu $1,$31 2992 lw $9,4($4) 2993 srl $6,$2,27 2994 addu $1,$25 2995 lw $10,8($4) 2996 xor $25,$7,$24 2997 addu $1,$6 2998 lw $11,12($4) 2999 sll $30,$3,30 3000 xor $25,$3 3001 lw $12,16($4) 3002 srl $3,$3,2 3003 addu $1,$23 3004 or $3,$30 3005 addu $1,$25 3006#endif 3007 addu $5,64 3008 lw $6,0($29) 3009 3010 addu $1,$8 3011 addu $2,$9 3012 sw $1,0($4) 3013 addu $3,$10 3014 addu $7,$11 3015 sw $2,4($4) 3016 addu $24,$12 3017 sw $3,8($4) 3018 sw $7,12($4) 3019 sw $24,16($4) 3020 .set noreorder 3021 bne $5,$6,.Loop 3022 nop 3023 3024 .set noreorder 3025 lw $31,(16-1)*4($29) 3026 lw $30,(16-2)*4($29) 3027 lw $23,(16-3)*4($29) 3028 lw $22,(16-4)*4($29) 3029 lw $21,(16-5)*4($29) 3030 lw $20,(16-6)*4($29) 3031 lw $19,(16-7)*4($29) 3032 lw $18,(16-8)*4($29) 3033 lw $17,(16-9)*4($29) 3034 lw $16,(16-10)*4($29) 3035 jr $31 3036 addu $29,16*4 3037.end sha1_block_data_order 3038.rdata 3039.asciiz "SHA1 for MIPS, CRYPTOGAMS by <appro@openssl.org>" 3040