1*e0ea3921Schristos#include "mips_arch.h" 26410c867Schristos 36410c867Schristos.text 46410c867Schristos 56410c867Schristos.set noat 66410c867Schristos.set noreorder 76410c867Schristos.align 5 86410c867Schristos.globl sha1_block_data_order 96410c867Schristos.ent sha1_block_data_order 106410c867Schristossha1_block_data_order: 116410c867Schristos .frame $29,16*8,$31 126410c867Schristos .mask 0xc0ff0000,-8 136410c867Schristos .set noreorder 14*e0ea3921Schristos dsubu $29,16*8 156410c867Schristos sd $31,(16-1)*8($29) 166410c867Schristos sd $30,(16-2)*8($29) 176410c867Schristos sd $23,(16-3)*8($29) 186410c867Schristos sd $22,(16-4)*8($29) 196410c867Schristos sd $21,(16-5)*8($29) 206410c867Schristos sd $20,(16-6)*8($29) 216410c867Schristos sd $19,(16-7)*8($29) 226410c867Schristos sd $18,(16-8)*8($29) 236410c867Schristos sd $17,(16-9)*8($29) 246410c867Schristos sd $16,(16-10)*8($29) 256410c867Schristos dsll $6,6 26*e0ea3921Schristos daddu $6,$5 276410c867Schristos sd $6,0($29) 286410c867Schristos lw $1,0($4) 296410c867Schristos lw $2,4($4) 306410c867Schristos lw $3,8($4) 316410c867Schristos lw $7,12($4) 326410c867Schristos b .Loop 336410c867Schristos lw $24,16($4) 346410c867Schristos.align 4 356410c867Schristos.Loop: 366410c867Schristos .set reorder 37*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 38*e0ea3921Schristos lui $31,0x5a82 39*e0ea3921Schristos lw $8,($5) 40*e0ea3921Schristos ori $31,0x7999 # K_00_19 41*e0ea3921Schristos#else 426410c867Schristos lwl $8,3($5) 436410c867Schristos lui $31,0x5a82 446410c867Schristos lwr $8,0($5) 456410c867Schristos ori $31,0x7999 # K_00_19 46*e0ea3921Schristos#endif 476410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 486410c867Schristos wsbh $8,$8 # byte swap(0) 496410c867Schristos rotr $8,$8,16 506410c867Schristos#else 516410c867Schristos srl $25,$8,24 # byte swap(0) 526410c867Schristos srl $6,$8,8 536410c867Schristos andi $30,$8,0xFF00 546410c867Schristos sll $8,$8,24 556410c867Schristos andi $6,0xFF00 566410c867Schristos sll $30,$30,8 576410c867Schristos or $8,$25 586410c867Schristos or $6,$30 596410c867Schristos or $8,$6 606410c867Schristos#endif 616410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 626410c867Schristos addu $24,$31 # 0 636410c867Schristos xor $25,$3,$7 646410c867Schristos rotr $6,$1,27 656410c867Schristos and $25,$2 666410c867Schristos addu $24,$6 67*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 68*e0ea3921Schristos lw $9,1*4($5) 69*e0ea3921Schristos#else 70*e0ea3921Schristos lwl $9,1*4+3($5) 716410c867Schristos lwr $9,1*4+0($5) 72*e0ea3921Schristos#endif 736410c867Schristos xor $25,$7 746410c867Schristos addu $24,$8 756410c867Schristos rotr $2,$2,2 766410c867Schristos addu $24,$25 776410c867Schristos#else 786410c867Schristos lwl $9,1*4+3($5) 796410c867Schristos sll $25,$1,5 # 0 806410c867Schristos addu $24,$31 816410c867Schristos lwr $9,1*4+0($5) 826410c867Schristos srl $6,$1,27 836410c867Schristos addu $24,$25 846410c867Schristos xor $25,$3,$7 856410c867Schristos addu $24,$6 866410c867Schristos sll $30,$2,30 876410c867Schristos and $25,$2 886410c867Schristos srl $2,$2,2 896410c867Schristos xor $25,$7 906410c867Schristos addu $24,$8 916410c867Schristos or $2,$30 926410c867Schristos addu $24,$25 936410c867Schristos#endif 946410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 956410c867Schristos wsbh $9,$9 # byte swap(1) 966410c867Schristos rotr $9,$9,16 976410c867Schristos#else 986410c867Schristos srl $25,$9,24 # byte swap(1) 996410c867Schristos srl $6,$9,8 1006410c867Schristos andi $30,$9,0xFF00 1016410c867Schristos sll $9,$9,24 1026410c867Schristos andi $6,0xFF00 1036410c867Schristos sll $30,$30,8 1046410c867Schristos or $9,$25 1056410c867Schristos or $6,$30 1066410c867Schristos or $9,$6 1076410c867Schristos#endif 1086410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1096410c867Schristos addu $7,$31 # 1 1106410c867Schristos xor $25,$2,$3 1116410c867Schristos rotr $6,$24,27 1126410c867Schristos and $25,$1 1136410c867Schristos addu $7,$6 114*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 115*e0ea3921Schristos lw $10,2*4($5) 116*e0ea3921Schristos#else 117*e0ea3921Schristos lwl $10,2*4+3($5) 1186410c867Schristos lwr $10,2*4+0($5) 119*e0ea3921Schristos#endif 1206410c867Schristos xor $25,$3 1216410c867Schristos addu $7,$9 1226410c867Schristos rotr $1,$1,2 1236410c867Schristos addu $7,$25 1246410c867Schristos#else 1256410c867Schristos lwl $10,2*4+3($5) 1266410c867Schristos sll $25,$24,5 # 1 1276410c867Schristos addu $7,$31 1286410c867Schristos lwr $10,2*4+0($5) 1296410c867Schristos srl $6,$24,27 1306410c867Schristos addu $7,$25 1316410c867Schristos xor $25,$2,$3 1326410c867Schristos addu $7,$6 1336410c867Schristos sll $30,$1,30 1346410c867Schristos and $25,$1 1356410c867Schristos srl $1,$1,2 1366410c867Schristos xor $25,$3 1376410c867Schristos addu $7,$9 1386410c867Schristos or $1,$30 1396410c867Schristos addu $7,$25 1406410c867Schristos#endif 1416410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1426410c867Schristos wsbh $10,$10 # byte swap(2) 1436410c867Schristos rotr $10,$10,16 1446410c867Schristos#else 1456410c867Schristos srl $25,$10,24 # byte swap(2) 1466410c867Schristos srl $6,$10,8 1476410c867Schristos andi $30,$10,0xFF00 1486410c867Schristos sll $10,$10,24 1496410c867Schristos andi $6,0xFF00 1506410c867Schristos sll $30,$30,8 1516410c867Schristos or $10,$25 1526410c867Schristos or $6,$30 1536410c867Schristos or $10,$6 1546410c867Schristos#endif 1556410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1566410c867Schristos addu $3,$31 # 2 1576410c867Schristos xor $25,$1,$2 1586410c867Schristos rotr $6,$7,27 1596410c867Schristos and $25,$24 1606410c867Schristos addu $3,$6 161*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 162*e0ea3921Schristos lw $11,3*4($5) 163*e0ea3921Schristos#else 164*e0ea3921Schristos lwl $11,3*4+3($5) 1656410c867Schristos lwr $11,3*4+0($5) 166*e0ea3921Schristos#endif 1676410c867Schristos xor $25,$2 1686410c867Schristos addu $3,$10 1696410c867Schristos rotr $24,$24,2 1706410c867Schristos addu $3,$25 1716410c867Schristos#else 1726410c867Schristos lwl $11,3*4+3($5) 1736410c867Schristos sll $25,$7,5 # 2 1746410c867Schristos addu $3,$31 1756410c867Schristos lwr $11,3*4+0($5) 1766410c867Schristos srl $6,$7,27 1776410c867Schristos addu $3,$25 1786410c867Schristos xor $25,$1,$2 1796410c867Schristos addu $3,$6 1806410c867Schristos sll $30,$24,30 1816410c867Schristos and $25,$24 1826410c867Schristos srl $24,$24,2 1836410c867Schristos xor $25,$2 1846410c867Schristos addu $3,$10 1856410c867Schristos or $24,$30 1866410c867Schristos addu $3,$25 1876410c867Schristos#endif 1886410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 1896410c867Schristos wsbh $11,$11 # byte swap(3) 1906410c867Schristos rotr $11,$11,16 1916410c867Schristos#else 1926410c867Schristos srl $25,$11,24 # byte swap(3) 1936410c867Schristos srl $6,$11,8 1946410c867Schristos andi $30,$11,0xFF00 1956410c867Schristos sll $11,$11,24 1966410c867Schristos andi $6,0xFF00 1976410c867Schristos sll $30,$30,8 1986410c867Schristos or $11,$25 1996410c867Schristos or $6,$30 2006410c867Schristos or $11,$6 2016410c867Schristos#endif 2026410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2036410c867Schristos addu $2,$31 # 3 2046410c867Schristos xor $25,$24,$1 2056410c867Schristos rotr $6,$3,27 2066410c867Schristos and $25,$7 2076410c867Schristos addu $2,$6 208*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 209*e0ea3921Schristos lw $12,4*4($5) 210*e0ea3921Schristos#else 211*e0ea3921Schristos lwl $12,4*4+3($5) 2126410c867Schristos lwr $12,4*4+0($5) 213*e0ea3921Schristos#endif 2146410c867Schristos xor $25,$1 2156410c867Schristos addu $2,$11 2166410c867Schristos rotr $7,$7,2 2176410c867Schristos addu $2,$25 2186410c867Schristos#else 2196410c867Schristos lwl $12,4*4+3($5) 2206410c867Schristos sll $25,$3,5 # 3 2216410c867Schristos addu $2,$31 2226410c867Schristos lwr $12,4*4+0($5) 2236410c867Schristos srl $6,$3,27 2246410c867Schristos addu $2,$25 2256410c867Schristos xor $25,$24,$1 2266410c867Schristos addu $2,$6 2276410c867Schristos sll $30,$7,30 2286410c867Schristos and $25,$7 2296410c867Schristos srl $7,$7,2 2306410c867Schristos xor $25,$1 2316410c867Schristos addu $2,$11 2326410c867Schristos or $7,$30 2336410c867Schristos addu $2,$25 2346410c867Schristos#endif 2356410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2366410c867Schristos wsbh $12,$12 # byte swap(4) 2376410c867Schristos rotr $12,$12,16 2386410c867Schristos#else 2396410c867Schristos srl $25,$12,24 # byte swap(4) 2406410c867Schristos srl $6,$12,8 2416410c867Schristos andi $30,$12,0xFF00 2426410c867Schristos sll $12,$12,24 2436410c867Schristos andi $6,0xFF00 2446410c867Schristos sll $30,$30,8 2456410c867Schristos or $12,$25 2466410c867Schristos or $6,$30 2476410c867Schristos or $12,$6 2486410c867Schristos#endif 2496410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2506410c867Schristos addu $1,$31 # 4 2516410c867Schristos xor $25,$7,$24 2526410c867Schristos rotr $6,$2,27 2536410c867Schristos and $25,$3 2546410c867Schristos addu $1,$6 255*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 256*e0ea3921Schristos lw $13,5*4($5) 257*e0ea3921Schristos#else 258*e0ea3921Schristos lwl $13,5*4+3($5) 2596410c867Schristos lwr $13,5*4+0($5) 260*e0ea3921Schristos#endif 2616410c867Schristos xor $25,$24 2626410c867Schristos addu $1,$12 2636410c867Schristos rotr $3,$3,2 2646410c867Schristos addu $1,$25 2656410c867Schristos#else 2666410c867Schristos lwl $13,5*4+3($5) 2676410c867Schristos sll $25,$2,5 # 4 2686410c867Schristos addu $1,$31 2696410c867Schristos lwr $13,5*4+0($5) 2706410c867Schristos srl $6,$2,27 2716410c867Schristos addu $1,$25 2726410c867Schristos xor $25,$7,$24 2736410c867Schristos addu $1,$6 2746410c867Schristos sll $30,$3,30 2756410c867Schristos and $25,$3 2766410c867Schristos srl $3,$3,2 2776410c867Schristos xor $25,$24 2786410c867Schristos addu $1,$12 2796410c867Schristos or $3,$30 2806410c867Schristos addu $1,$25 2816410c867Schristos#endif 2826410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2836410c867Schristos wsbh $13,$13 # byte swap(5) 2846410c867Schristos rotr $13,$13,16 2856410c867Schristos#else 2866410c867Schristos srl $25,$13,24 # byte swap(5) 2876410c867Schristos srl $6,$13,8 2886410c867Schristos andi $30,$13,0xFF00 2896410c867Schristos sll $13,$13,24 2906410c867Schristos andi $6,0xFF00 2916410c867Schristos sll $30,$30,8 2926410c867Schristos or $13,$25 2936410c867Schristos or $6,$30 2946410c867Schristos or $13,$6 2956410c867Schristos#endif 2966410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 2976410c867Schristos addu $24,$31 # 5 2986410c867Schristos xor $25,$3,$7 2996410c867Schristos rotr $6,$1,27 3006410c867Schristos and $25,$2 3016410c867Schristos addu $24,$6 302*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 303*e0ea3921Schristos lw $14,6*4($5) 304*e0ea3921Schristos#else 305*e0ea3921Schristos lwl $14,6*4+3($5) 3066410c867Schristos lwr $14,6*4+0($5) 307*e0ea3921Schristos#endif 3086410c867Schristos xor $25,$7 3096410c867Schristos addu $24,$13 3106410c867Schristos rotr $2,$2,2 3116410c867Schristos addu $24,$25 3126410c867Schristos#else 3136410c867Schristos lwl $14,6*4+3($5) 3146410c867Schristos sll $25,$1,5 # 5 3156410c867Schristos addu $24,$31 3166410c867Schristos lwr $14,6*4+0($5) 3176410c867Schristos srl $6,$1,27 3186410c867Schristos addu $24,$25 3196410c867Schristos xor $25,$3,$7 3206410c867Schristos addu $24,$6 3216410c867Schristos sll $30,$2,30 3226410c867Schristos and $25,$2 3236410c867Schristos srl $2,$2,2 3246410c867Schristos xor $25,$7 3256410c867Schristos addu $24,$13 3266410c867Schristos or $2,$30 3276410c867Schristos addu $24,$25 3286410c867Schristos#endif 3296410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 3306410c867Schristos wsbh $14,$14 # byte swap(6) 3316410c867Schristos rotr $14,$14,16 3326410c867Schristos#else 3336410c867Schristos srl $25,$14,24 # byte swap(6) 3346410c867Schristos srl $6,$14,8 3356410c867Schristos andi $30,$14,0xFF00 3366410c867Schristos sll $14,$14,24 3376410c867Schristos andi $6,0xFF00 3386410c867Schristos sll $30,$30,8 3396410c867Schristos or $14,$25 3406410c867Schristos or $6,$30 3416410c867Schristos or $14,$6 3426410c867Schristos#endif 3436410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 3446410c867Schristos addu $7,$31 # 6 3456410c867Schristos xor $25,$2,$3 3466410c867Schristos rotr $6,$24,27 3476410c867Schristos and $25,$1 3486410c867Schristos addu $7,$6 349*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 350*e0ea3921Schristos lw $15,7*4($5) 351*e0ea3921Schristos#else 352*e0ea3921Schristos lwl $15,7*4+3($5) 3536410c867Schristos lwr $15,7*4+0($5) 354*e0ea3921Schristos#endif 3556410c867Schristos xor $25,$3 3566410c867Schristos addu $7,$14 3576410c867Schristos rotr $1,$1,2 3586410c867Schristos addu $7,$25 3596410c867Schristos#else 3606410c867Schristos lwl $15,7*4+3($5) 3616410c867Schristos sll $25,$24,5 # 6 3626410c867Schristos addu $7,$31 3636410c867Schristos lwr $15,7*4+0($5) 3646410c867Schristos srl $6,$24,27 3656410c867Schristos addu $7,$25 3666410c867Schristos xor $25,$2,$3 3676410c867Schristos addu $7,$6 3686410c867Schristos sll $30,$1,30 3696410c867Schristos and $25,$1 3706410c867Schristos srl $1,$1,2 3716410c867Schristos xor $25,$3 3726410c867Schristos addu $7,$14 3736410c867Schristos or $1,$30 3746410c867Schristos addu $7,$25 3756410c867Schristos#endif 3766410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 3776410c867Schristos wsbh $15,$15 # byte swap(7) 3786410c867Schristos rotr $15,$15,16 3796410c867Schristos#else 3806410c867Schristos srl $25,$15,24 # byte swap(7) 3816410c867Schristos srl $6,$15,8 3826410c867Schristos andi $30,$15,0xFF00 3836410c867Schristos sll $15,$15,24 3846410c867Schristos andi $6,0xFF00 3856410c867Schristos sll $30,$30,8 3866410c867Schristos or $15,$25 3876410c867Schristos or $6,$30 3886410c867Schristos or $15,$6 3896410c867Schristos#endif 3906410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 3916410c867Schristos addu $3,$31 # 7 3926410c867Schristos xor $25,$1,$2 3936410c867Schristos rotr $6,$7,27 3946410c867Schristos and $25,$24 3956410c867Schristos addu $3,$6 396*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 397*e0ea3921Schristos lw $16,8*4($5) 398*e0ea3921Schristos#else 399*e0ea3921Schristos lwl $16,8*4+3($5) 4006410c867Schristos lwr $16,8*4+0($5) 401*e0ea3921Schristos#endif 4026410c867Schristos xor $25,$2 4036410c867Schristos addu $3,$15 4046410c867Schristos rotr $24,$24,2 4056410c867Schristos addu $3,$25 4066410c867Schristos#else 4076410c867Schristos lwl $16,8*4+3($5) 4086410c867Schristos sll $25,$7,5 # 7 4096410c867Schristos addu $3,$31 4106410c867Schristos lwr $16,8*4+0($5) 4116410c867Schristos srl $6,$7,27 4126410c867Schristos addu $3,$25 4136410c867Schristos xor $25,$1,$2 4146410c867Schristos addu $3,$6 4156410c867Schristos sll $30,$24,30 4166410c867Schristos and $25,$24 4176410c867Schristos srl $24,$24,2 4186410c867Schristos xor $25,$2 4196410c867Schristos addu $3,$15 4206410c867Schristos or $24,$30 4216410c867Schristos addu $3,$25 4226410c867Schristos#endif 4236410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 4246410c867Schristos wsbh $16,$16 # byte swap(8) 4256410c867Schristos rotr $16,$16,16 4266410c867Schristos#else 4276410c867Schristos srl $25,$16,24 # byte swap(8) 4286410c867Schristos srl $6,$16,8 4296410c867Schristos andi $30,$16,0xFF00 4306410c867Schristos sll $16,$16,24 4316410c867Schristos andi $6,0xFF00 4326410c867Schristos sll $30,$30,8 4336410c867Schristos or $16,$25 4346410c867Schristos or $6,$30 4356410c867Schristos or $16,$6 4366410c867Schristos#endif 4376410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 4386410c867Schristos addu $2,$31 # 8 4396410c867Schristos xor $25,$24,$1 4406410c867Schristos rotr $6,$3,27 4416410c867Schristos and $25,$7 4426410c867Schristos addu $2,$6 443*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 444*e0ea3921Schristos lw $17,9*4($5) 445*e0ea3921Schristos#else 446*e0ea3921Schristos lwl $17,9*4+3($5) 4476410c867Schristos lwr $17,9*4+0($5) 448*e0ea3921Schristos#endif 4496410c867Schristos xor $25,$1 4506410c867Schristos addu $2,$16 4516410c867Schristos rotr $7,$7,2 4526410c867Schristos addu $2,$25 4536410c867Schristos#else 4546410c867Schristos lwl $17,9*4+3($5) 4556410c867Schristos sll $25,$3,5 # 8 4566410c867Schristos addu $2,$31 4576410c867Schristos lwr $17,9*4+0($5) 4586410c867Schristos srl $6,$3,27 4596410c867Schristos addu $2,$25 4606410c867Schristos xor $25,$24,$1 4616410c867Schristos addu $2,$6 4626410c867Schristos sll $30,$7,30 4636410c867Schristos and $25,$7 4646410c867Schristos srl $7,$7,2 4656410c867Schristos xor $25,$1 4666410c867Schristos addu $2,$16 4676410c867Schristos or $7,$30 4686410c867Schristos addu $2,$25 4696410c867Schristos#endif 4706410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 4716410c867Schristos wsbh $17,$17 # byte swap(9) 4726410c867Schristos rotr $17,$17,16 4736410c867Schristos#else 4746410c867Schristos srl $25,$17,24 # byte swap(9) 4756410c867Schristos srl $6,$17,8 4766410c867Schristos andi $30,$17,0xFF00 4776410c867Schristos sll $17,$17,24 4786410c867Schristos andi $6,0xFF00 4796410c867Schristos sll $30,$30,8 4806410c867Schristos or $17,$25 4816410c867Schristos or $6,$30 4826410c867Schristos or $17,$6 4836410c867Schristos#endif 4846410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 4856410c867Schristos addu $1,$31 # 9 4866410c867Schristos xor $25,$7,$24 4876410c867Schristos rotr $6,$2,27 4886410c867Schristos and $25,$3 4896410c867Schristos addu $1,$6 490*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 491*e0ea3921Schristos lw $18,10*4($5) 492*e0ea3921Schristos#else 493*e0ea3921Schristos lwl $18,10*4+3($5) 4946410c867Schristos lwr $18,10*4+0($5) 495*e0ea3921Schristos#endif 4966410c867Schristos xor $25,$24 4976410c867Schristos addu $1,$17 4986410c867Schristos rotr $3,$3,2 4996410c867Schristos addu $1,$25 5006410c867Schristos#else 5016410c867Schristos lwl $18,10*4+3($5) 5026410c867Schristos sll $25,$2,5 # 9 5036410c867Schristos addu $1,$31 5046410c867Schristos lwr $18,10*4+0($5) 5056410c867Schristos srl $6,$2,27 5066410c867Schristos addu $1,$25 5076410c867Schristos xor $25,$7,$24 5086410c867Schristos addu $1,$6 5096410c867Schristos sll $30,$3,30 5106410c867Schristos and $25,$3 5116410c867Schristos srl $3,$3,2 5126410c867Schristos xor $25,$24 5136410c867Schristos addu $1,$17 5146410c867Schristos or $3,$30 5156410c867Schristos addu $1,$25 5166410c867Schristos#endif 5176410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 5186410c867Schristos wsbh $18,$18 # byte swap(10) 5196410c867Schristos rotr $18,$18,16 5206410c867Schristos#else 5216410c867Schristos srl $25,$18,24 # byte swap(10) 5226410c867Schristos srl $6,$18,8 5236410c867Schristos andi $30,$18,0xFF00 5246410c867Schristos sll $18,$18,24 5256410c867Schristos andi $6,0xFF00 5266410c867Schristos sll $30,$30,8 5276410c867Schristos or $18,$25 5286410c867Schristos or $6,$30 5296410c867Schristos or $18,$6 5306410c867Schristos#endif 5316410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 5326410c867Schristos addu $24,$31 # 10 5336410c867Schristos xor $25,$3,$7 5346410c867Schristos rotr $6,$1,27 5356410c867Schristos and $25,$2 5366410c867Schristos addu $24,$6 537*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 538*e0ea3921Schristos lw $19,11*4($5) 539*e0ea3921Schristos#else 540*e0ea3921Schristos lwl $19,11*4+3($5) 5416410c867Schristos lwr $19,11*4+0($5) 542*e0ea3921Schristos#endif 5436410c867Schristos xor $25,$7 5446410c867Schristos addu $24,$18 5456410c867Schristos rotr $2,$2,2 5466410c867Schristos addu $24,$25 5476410c867Schristos#else 5486410c867Schristos lwl $19,11*4+3($5) 5496410c867Schristos sll $25,$1,5 # 10 5506410c867Schristos addu $24,$31 5516410c867Schristos lwr $19,11*4+0($5) 5526410c867Schristos srl $6,$1,27 5536410c867Schristos addu $24,$25 5546410c867Schristos xor $25,$3,$7 5556410c867Schristos addu $24,$6 5566410c867Schristos sll $30,$2,30 5576410c867Schristos and $25,$2 5586410c867Schristos srl $2,$2,2 5596410c867Schristos xor $25,$7 5606410c867Schristos addu $24,$18 5616410c867Schristos or $2,$30 5626410c867Schristos addu $24,$25 5636410c867Schristos#endif 5646410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 5656410c867Schristos wsbh $19,$19 # byte swap(11) 5666410c867Schristos rotr $19,$19,16 5676410c867Schristos#else 5686410c867Schristos srl $25,$19,24 # byte swap(11) 5696410c867Schristos srl $6,$19,8 5706410c867Schristos andi $30,$19,0xFF00 5716410c867Schristos sll $19,$19,24 5726410c867Schristos andi $6,0xFF00 5736410c867Schristos sll $30,$30,8 5746410c867Schristos or $19,$25 5756410c867Schristos or $6,$30 5766410c867Schristos or $19,$6 5776410c867Schristos#endif 5786410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 5796410c867Schristos addu $7,$31 # 11 5806410c867Schristos xor $25,$2,$3 5816410c867Schristos rotr $6,$24,27 5826410c867Schristos and $25,$1 5836410c867Schristos addu $7,$6 584*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 585*e0ea3921Schristos lw $20,12*4($5) 586*e0ea3921Schristos#else 587*e0ea3921Schristos lwl $20,12*4+3($5) 5886410c867Schristos lwr $20,12*4+0($5) 589*e0ea3921Schristos#endif 5906410c867Schristos xor $25,$3 5916410c867Schristos addu $7,$19 5926410c867Schristos rotr $1,$1,2 5936410c867Schristos addu $7,$25 5946410c867Schristos#else 5956410c867Schristos lwl $20,12*4+3($5) 5966410c867Schristos sll $25,$24,5 # 11 5976410c867Schristos addu $7,$31 5986410c867Schristos lwr $20,12*4+0($5) 5996410c867Schristos srl $6,$24,27 6006410c867Schristos addu $7,$25 6016410c867Schristos xor $25,$2,$3 6026410c867Schristos addu $7,$6 6036410c867Schristos sll $30,$1,30 6046410c867Schristos and $25,$1 6056410c867Schristos srl $1,$1,2 6066410c867Schristos xor $25,$3 6076410c867Schristos addu $7,$19 6086410c867Schristos or $1,$30 6096410c867Schristos addu $7,$25 6106410c867Schristos#endif 6116410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 6126410c867Schristos wsbh $20,$20 # byte swap(12) 6136410c867Schristos rotr $20,$20,16 6146410c867Schristos#else 6156410c867Schristos srl $25,$20,24 # byte swap(12) 6166410c867Schristos srl $6,$20,8 6176410c867Schristos andi $30,$20,0xFF00 6186410c867Schristos sll $20,$20,24 6196410c867Schristos andi $6,0xFF00 6206410c867Schristos sll $30,$30,8 6216410c867Schristos or $20,$25 6226410c867Schristos or $6,$30 6236410c867Schristos or $20,$6 6246410c867Schristos#endif 6256410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 6266410c867Schristos addu $3,$31 # 12 6276410c867Schristos xor $25,$1,$2 6286410c867Schristos rotr $6,$7,27 6296410c867Schristos and $25,$24 6306410c867Schristos addu $3,$6 631*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 632*e0ea3921Schristos lw $21,13*4($5) 633*e0ea3921Schristos#else 634*e0ea3921Schristos lwl $21,13*4+3($5) 6356410c867Schristos lwr $21,13*4+0($5) 636*e0ea3921Schristos#endif 6376410c867Schristos xor $25,$2 6386410c867Schristos addu $3,$20 6396410c867Schristos rotr $24,$24,2 6406410c867Schristos addu $3,$25 6416410c867Schristos#else 6426410c867Schristos lwl $21,13*4+3($5) 6436410c867Schristos sll $25,$7,5 # 12 6446410c867Schristos addu $3,$31 6456410c867Schristos lwr $21,13*4+0($5) 6466410c867Schristos srl $6,$7,27 6476410c867Schristos addu $3,$25 6486410c867Schristos xor $25,$1,$2 6496410c867Schristos addu $3,$6 6506410c867Schristos sll $30,$24,30 6516410c867Schristos and $25,$24 6526410c867Schristos srl $24,$24,2 6536410c867Schristos xor $25,$2 6546410c867Schristos addu $3,$20 6556410c867Schristos or $24,$30 6566410c867Schristos addu $3,$25 6576410c867Schristos#endif 6586410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 6596410c867Schristos wsbh $21,$21 # byte swap(13) 6606410c867Schristos rotr $21,$21,16 6616410c867Schristos#else 6626410c867Schristos srl $25,$21,24 # byte swap(13) 6636410c867Schristos srl $6,$21,8 6646410c867Schristos andi $30,$21,0xFF00 6656410c867Schristos sll $21,$21,24 6666410c867Schristos andi $6,0xFF00 6676410c867Schristos sll $30,$30,8 6686410c867Schristos or $21,$25 6696410c867Schristos or $6,$30 6706410c867Schristos or $21,$6 6716410c867Schristos#endif 6726410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 6736410c867Schristos addu $2,$31 # 13 6746410c867Schristos xor $25,$24,$1 6756410c867Schristos rotr $6,$3,27 6766410c867Schristos and $25,$7 6776410c867Schristos addu $2,$6 678*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 679*e0ea3921Schristos lw $22,14*4($5) 680*e0ea3921Schristos#else 681*e0ea3921Schristos lwl $22,14*4+3($5) 6826410c867Schristos lwr $22,14*4+0($5) 683*e0ea3921Schristos#endif 6846410c867Schristos xor $25,$1 6856410c867Schristos addu $2,$21 6866410c867Schristos rotr $7,$7,2 6876410c867Schristos addu $2,$25 6886410c867Schristos#else 6896410c867Schristos lwl $22,14*4+3($5) 6906410c867Schristos sll $25,$3,5 # 13 6916410c867Schristos addu $2,$31 6926410c867Schristos lwr $22,14*4+0($5) 6936410c867Schristos srl $6,$3,27 6946410c867Schristos addu $2,$25 6956410c867Schristos xor $25,$24,$1 6966410c867Schristos addu $2,$6 6976410c867Schristos sll $30,$7,30 6986410c867Schristos and $25,$7 6996410c867Schristos srl $7,$7,2 7006410c867Schristos xor $25,$1 7016410c867Schristos addu $2,$21 7026410c867Schristos or $7,$30 7036410c867Schristos addu $2,$25 7046410c867Schristos#endif 7056410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 7066410c867Schristos wsbh $22,$22 # byte swap(14) 7076410c867Schristos rotr $22,$22,16 7086410c867Schristos#else 7096410c867Schristos srl $25,$22,24 # byte swap(14) 7106410c867Schristos srl $6,$22,8 7116410c867Schristos andi $30,$22,0xFF00 7126410c867Schristos sll $22,$22,24 7136410c867Schristos andi $6,0xFF00 7146410c867Schristos sll $30,$30,8 7156410c867Schristos or $22,$25 7166410c867Schristos or $6,$30 7176410c867Schristos or $22,$6 7186410c867Schristos#endif 7196410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 7206410c867Schristos addu $1,$31 # 14 7216410c867Schristos xor $25,$7,$24 7226410c867Schristos rotr $6,$2,27 7236410c867Schristos and $25,$3 7246410c867Schristos addu $1,$6 725*e0ea3921Schristos#if defined(_MIPS_ARCH_MIPS32R6) || defined(_MIPS_ARCH_MIPS64R6) 726*e0ea3921Schristos lw $23,15*4($5) 727*e0ea3921Schristos#else 728*e0ea3921Schristos lwl $23,15*4+3($5) 7296410c867Schristos lwr $23,15*4+0($5) 730*e0ea3921Schristos#endif 7316410c867Schristos xor $25,$24 7326410c867Schristos addu $1,$22 7336410c867Schristos rotr $3,$3,2 7346410c867Schristos addu $1,$25 7356410c867Schristos#else 7366410c867Schristos lwl $23,15*4+3($5) 7376410c867Schristos sll $25,$2,5 # 14 7386410c867Schristos addu $1,$31 7396410c867Schristos lwr $23,15*4+0($5) 7406410c867Schristos srl $6,$2,27 7416410c867Schristos addu $1,$25 7426410c867Schristos xor $25,$7,$24 7436410c867Schristos addu $1,$6 7446410c867Schristos sll $30,$3,30 7456410c867Schristos and $25,$3 7466410c867Schristos srl $3,$3,2 7476410c867Schristos xor $25,$24 7486410c867Schristos addu $1,$22 7496410c867Schristos or $3,$30 7506410c867Schristos addu $1,$25 7516410c867Schristos#endif 7526410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 7536410c867Schristos wsbh $23,$23 # byte swap(15) 7546410c867Schristos rotr $23,$23,16 7556410c867Schristos#else 7566410c867Schristos srl $25,$23,24 # byte swap(15) 7576410c867Schristos srl $6,$23,8 7586410c867Schristos andi $30,$23,0xFF00 7596410c867Schristos sll $23,$23,24 7606410c867Schristos andi $6,0xFF00 7616410c867Schristos sll $30,$30,8 7626410c867Schristos or $23,$25 7636410c867Schristos or $23,$6 7646410c867Schristos or $23,$30 7656410c867Schristos#endif 7666410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 7676410c867Schristos addu $24,$31 # 15 7686410c867Schristos xor $8,$10 7696410c867Schristos xor $25,$3,$7 7706410c867Schristos rotr $6,$1,27 7716410c867Schristos xor $8,$16 7726410c867Schristos and $25,$2 7736410c867Schristos addu $24,$6 7746410c867Schristos xor $8,$21 7756410c867Schristos xor $25,$7 7766410c867Schristos addu $24,$23 7776410c867Schristos rotr $8,$8,31 7786410c867Schristos rotr $2,$2,2 7796410c867Schristos addu $24,$25 7806410c867Schristos#else 7816410c867Schristos xor $8,$10 7826410c867Schristos sll $25,$1,5 # 15 7836410c867Schristos addu $24,$31 7846410c867Schristos srl $6,$1,27 7856410c867Schristos addu $24,$25 7866410c867Schristos xor $8,$16 7876410c867Schristos xor $25,$3,$7 7886410c867Schristos addu $24,$6 7896410c867Schristos xor $8,$21 7906410c867Schristos sll $30,$2,30 7916410c867Schristos and $25,$2 7926410c867Schristos srl $6,$8,31 7936410c867Schristos addu $8,$8 7946410c867Schristos srl $2,$2,2 7956410c867Schristos xor $25,$7 7966410c867Schristos or $8,$6 7976410c867Schristos addu $24,$23 7986410c867Schristos or $2,$30 7996410c867Schristos addu $24,$25 8006410c867Schristos#endif 8016410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 8026410c867Schristos addu $7,$31 # 16 8036410c867Schristos xor $9,$11 8046410c867Schristos xor $25,$2,$3 8056410c867Schristos rotr $6,$24,27 8066410c867Schristos xor $9,$17 8076410c867Schristos and $25,$1 8086410c867Schristos addu $7,$6 8096410c867Schristos xor $9,$22 8106410c867Schristos xor $25,$3 8116410c867Schristos addu $7,$8 8126410c867Schristos rotr $9,$9,31 8136410c867Schristos rotr $1,$1,2 8146410c867Schristos addu $7,$25 8156410c867Schristos#else 8166410c867Schristos xor $9,$11 8176410c867Schristos sll $25,$24,5 # 16 8186410c867Schristos addu $7,$31 8196410c867Schristos srl $6,$24,27 8206410c867Schristos addu $7,$25 8216410c867Schristos xor $9,$17 8226410c867Schristos xor $25,$2,$3 8236410c867Schristos addu $7,$6 8246410c867Schristos xor $9,$22 8256410c867Schristos sll $30,$1,30 8266410c867Schristos and $25,$1 8276410c867Schristos srl $6,$9,31 8286410c867Schristos addu $9,$9 8296410c867Schristos srl $1,$1,2 8306410c867Schristos xor $25,$3 8316410c867Schristos or $9,$6 8326410c867Schristos addu $7,$8 8336410c867Schristos or $1,$30 8346410c867Schristos addu $7,$25 8356410c867Schristos#endif 8366410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 8376410c867Schristos addu $3,$31 # 17 8386410c867Schristos xor $10,$12 8396410c867Schristos xor $25,$1,$2 8406410c867Schristos rotr $6,$7,27 8416410c867Schristos xor $10,$18 8426410c867Schristos and $25,$24 8436410c867Schristos addu $3,$6 8446410c867Schristos xor $10,$23 8456410c867Schristos xor $25,$2 8466410c867Schristos addu $3,$9 8476410c867Schristos rotr $10,$10,31 8486410c867Schristos rotr $24,$24,2 8496410c867Schristos addu $3,$25 8506410c867Schristos#else 8516410c867Schristos xor $10,$12 8526410c867Schristos sll $25,$7,5 # 17 8536410c867Schristos addu $3,$31 8546410c867Schristos srl $6,$7,27 8556410c867Schristos addu $3,$25 8566410c867Schristos xor $10,$18 8576410c867Schristos xor $25,$1,$2 8586410c867Schristos addu $3,$6 8596410c867Schristos xor $10,$23 8606410c867Schristos sll $30,$24,30 8616410c867Schristos and $25,$24 8626410c867Schristos srl $6,$10,31 8636410c867Schristos addu $10,$10 8646410c867Schristos srl $24,$24,2 8656410c867Schristos xor $25,$2 8666410c867Schristos or $10,$6 8676410c867Schristos addu $3,$9 8686410c867Schristos or $24,$30 8696410c867Schristos addu $3,$25 8706410c867Schristos#endif 8716410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 8726410c867Schristos addu $2,$31 # 18 8736410c867Schristos xor $11,$13 8746410c867Schristos xor $25,$24,$1 8756410c867Schristos rotr $6,$3,27 8766410c867Schristos xor $11,$19 8776410c867Schristos and $25,$7 8786410c867Schristos addu $2,$6 8796410c867Schristos xor $11,$8 8806410c867Schristos xor $25,$1 8816410c867Schristos addu $2,$10 8826410c867Schristos rotr $11,$11,31 8836410c867Schristos rotr $7,$7,2 8846410c867Schristos addu $2,$25 8856410c867Schristos#else 8866410c867Schristos xor $11,$13 8876410c867Schristos sll $25,$3,5 # 18 8886410c867Schristos addu $2,$31 8896410c867Schristos srl $6,$3,27 8906410c867Schristos addu $2,$25 8916410c867Schristos xor $11,$19 8926410c867Schristos xor $25,$24,$1 8936410c867Schristos addu $2,$6 8946410c867Schristos xor $11,$8 8956410c867Schristos sll $30,$7,30 8966410c867Schristos and $25,$7 8976410c867Schristos srl $6,$11,31 8986410c867Schristos addu $11,$11 8996410c867Schristos srl $7,$7,2 9006410c867Schristos xor $25,$1 9016410c867Schristos or $11,$6 9026410c867Schristos addu $2,$10 9036410c867Schristos or $7,$30 9046410c867Schristos addu $2,$25 9056410c867Schristos#endif 9066410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 9076410c867Schristos addu $1,$31 # 19 9086410c867Schristos xor $12,$14 9096410c867Schristos xor $25,$7,$24 9106410c867Schristos rotr $6,$2,27 9116410c867Schristos xor $12,$20 9126410c867Schristos and $25,$3 9136410c867Schristos addu $1,$6 9146410c867Schristos xor $12,$9 9156410c867Schristos xor $25,$24 9166410c867Schristos addu $1,$11 9176410c867Schristos rotr $12,$12,31 9186410c867Schristos rotr $3,$3,2 9196410c867Schristos addu $1,$25 9206410c867Schristos#else 9216410c867Schristos xor $12,$14 9226410c867Schristos sll $25,$2,5 # 19 9236410c867Schristos addu $1,$31 9246410c867Schristos srl $6,$2,27 9256410c867Schristos addu $1,$25 9266410c867Schristos xor $12,$20 9276410c867Schristos xor $25,$7,$24 9286410c867Schristos addu $1,$6 9296410c867Schristos xor $12,$9 9306410c867Schristos sll $30,$3,30 9316410c867Schristos and $25,$3 9326410c867Schristos srl $6,$12,31 9336410c867Schristos addu $12,$12 9346410c867Schristos srl $3,$3,2 9356410c867Schristos xor $25,$24 9366410c867Schristos or $12,$6 9376410c867Schristos addu $1,$11 9386410c867Schristos or $3,$30 9396410c867Schristos addu $1,$25 9406410c867Schristos#endif 9416410c867Schristos lui $31,0x6ed9 9426410c867Schristos ori $31,0xeba1 # K_20_39 9436410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 9446410c867Schristos xor $13,$15 9456410c867Schristos addu $24,$31 # 20 9466410c867Schristos rotr $6,$1,27 9476410c867Schristos xor $13,$21 9486410c867Schristos xor $25,$3,$7 9496410c867Schristos addu $24,$6 9506410c867Schristos xor $13,$10 9516410c867Schristos xor $25,$2 9526410c867Schristos addu $24,$12 9536410c867Schristos rotr $13,$13,31 9546410c867Schristos rotr $2,$2,2 9556410c867Schristos addu $24,$25 9566410c867Schristos#else 9576410c867Schristos xor $13,$15 9586410c867Schristos sll $25,$1,5 # 20 9596410c867Schristos addu $24,$31 9606410c867Schristos srl $6,$1,27 9616410c867Schristos addu $24,$25 9626410c867Schristos xor $13,$21 9636410c867Schristos xor $25,$3,$7 9646410c867Schristos addu $24,$6 9656410c867Schristos xor $13,$10 9666410c867Schristos sll $30,$2,30 9676410c867Schristos xor $25,$2 9686410c867Schristos srl $6,$13,31 9696410c867Schristos addu $13,$13 9706410c867Schristos srl $2,$2,2 9716410c867Schristos addu $24,$12 9726410c867Schristos or $13,$6 9736410c867Schristos or $2,$30 9746410c867Schristos addu $24,$25 9756410c867Schristos#endif 9766410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 9776410c867Schristos xor $14,$16 9786410c867Schristos addu $7,$31 # 21 9796410c867Schristos rotr $6,$24,27 9806410c867Schristos xor $14,$22 9816410c867Schristos xor $25,$2,$3 9826410c867Schristos addu $7,$6 9836410c867Schristos xor $14,$11 9846410c867Schristos xor $25,$1 9856410c867Schristos addu $7,$13 9866410c867Schristos rotr $14,$14,31 9876410c867Schristos rotr $1,$1,2 9886410c867Schristos addu $7,$25 9896410c867Schristos#else 9906410c867Schristos xor $14,$16 9916410c867Schristos sll $25,$24,5 # 21 9926410c867Schristos addu $7,$31 9936410c867Schristos srl $6,$24,27 9946410c867Schristos addu $7,$25 9956410c867Schristos xor $14,$22 9966410c867Schristos xor $25,$2,$3 9976410c867Schristos addu $7,$6 9986410c867Schristos xor $14,$11 9996410c867Schristos sll $30,$1,30 10006410c867Schristos xor $25,$1 10016410c867Schristos srl $6,$14,31 10026410c867Schristos addu $14,$14 10036410c867Schristos srl $1,$1,2 10046410c867Schristos addu $7,$13 10056410c867Schristos or $14,$6 10066410c867Schristos or $1,$30 10076410c867Schristos addu $7,$25 10086410c867Schristos#endif 10096410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 10106410c867Schristos xor $15,$17 10116410c867Schristos addu $3,$31 # 22 10126410c867Schristos rotr $6,$7,27 10136410c867Schristos xor $15,$23 10146410c867Schristos xor $25,$1,$2 10156410c867Schristos addu $3,$6 10166410c867Schristos xor $15,$12 10176410c867Schristos xor $25,$24 10186410c867Schristos addu $3,$14 10196410c867Schristos rotr $15,$15,31 10206410c867Schristos rotr $24,$24,2 10216410c867Schristos addu $3,$25 10226410c867Schristos#else 10236410c867Schristos xor $15,$17 10246410c867Schristos sll $25,$7,5 # 22 10256410c867Schristos addu $3,$31 10266410c867Schristos srl $6,$7,27 10276410c867Schristos addu $3,$25 10286410c867Schristos xor $15,$23 10296410c867Schristos xor $25,$1,$2 10306410c867Schristos addu $3,$6 10316410c867Schristos xor $15,$12 10326410c867Schristos sll $30,$24,30 10336410c867Schristos xor $25,$24 10346410c867Schristos srl $6,$15,31 10356410c867Schristos addu $15,$15 10366410c867Schristos srl $24,$24,2 10376410c867Schristos addu $3,$14 10386410c867Schristos or $15,$6 10396410c867Schristos or $24,$30 10406410c867Schristos addu $3,$25 10416410c867Schristos#endif 10426410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 10436410c867Schristos xor $16,$18 10446410c867Schristos addu $2,$31 # 23 10456410c867Schristos rotr $6,$3,27 10466410c867Schristos xor $16,$8 10476410c867Schristos xor $25,$24,$1 10486410c867Schristos addu $2,$6 10496410c867Schristos xor $16,$13 10506410c867Schristos xor $25,$7 10516410c867Schristos addu $2,$15 10526410c867Schristos rotr $16,$16,31 10536410c867Schristos rotr $7,$7,2 10546410c867Schristos addu $2,$25 10556410c867Schristos#else 10566410c867Schristos xor $16,$18 10576410c867Schristos sll $25,$3,5 # 23 10586410c867Schristos addu $2,$31 10596410c867Schristos srl $6,$3,27 10606410c867Schristos addu $2,$25 10616410c867Schristos xor $16,$8 10626410c867Schristos xor $25,$24,$1 10636410c867Schristos addu $2,$6 10646410c867Schristos xor $16,$13 10656410c867Schristos sll $30,$7,30 10666410c867Schristos xor $25,$7 10676410c867Schristos srl $6,$16,31 10686410c867Schristos addu $16,$16 10696410c867Schristos srl $7,$7,2 10706410c867Schristos addu $2,$15 10716410c867Schristos or $16,$6 10726410c867Schristos or $7,$30 10736410c867Schristos addu $2,$25 10746410c867Schristos#endif 10756410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 10766410c867Schristos xor $17,$19 10776410c867Schristos addu $1,$31 # 24 10786410c867Schristos rotr $6,$2,27 10796410c867Schristos xor $17,$9 10806410c867Schristos xor $25,$7,$24 10816410c867Schristos addu $1,$6 10826410c867Schristos xor $17,$14 10836410c867Schristos xor $25,$3 10846410c867Schristos addu $1,$16 10856410c867Schristos rotr $17,$17,31 10866410c867Schristos rotr $3,$3,2 10876410c867Schristos addu $1,$25 10886410c867Schristos#else 10896410c867Schristos xor $17,$19 10906410c867Schristos sll $25,$2,5 # 24 10916410c867Schristos addu $1,$31 10926410c867Schristos srl $6,$2,27 10936410c867Schristos addu $1,$25 10946410c867Schristos xor $17,$9 10956410c867Schristos xor $25,$7,$24 10966410c867Schristos addu $1,$6 10976410c867Schristos xor $17,$14 10986410c867Schristos sll $30,$3,30 10996410c867Schristos xor $25,$3 11006410c867Schristos srl $6,$17,31 11016410c867Schristos addu $17,$17 11026410c867Schristos srl $3,$3,2 11036410c867Schristos addu $1,$16 11046410c867Schristos or $17,$6 11056410c867Schristos or $3,$30 11066410c867Schristos addu $1,$25 11076410c867Schristos#endif 11086410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 11096410c867Schristos xor $18,$20 11106410c867Schristos addu $24,$31 # 25 11116410c867Schristos rotr $6,$1,27 11126410c867Schristos xor $18,$10 11136410c867Schristos xor $25,$3,$7 11146410c867Schristos addu $24,$6 11156410c867Schristos xor $18,$15 11166410c867Schristos xor $25,$2 11176410c867Schristos addu $24,$17 11186410c867Schristos rotr $18,$18,31 11196410c867Schristos rotr $2,$2,2 11206410c867Schristos addu $24,$25 11216410c867Schristos#else 11226410c867Schristos xor $18,$20 11236410c867Schristos sll $25,$1,5 # 25 11246410c867Schristos addu $24,$31 11256410c867Schristos srl $6,$1,27 11266410c867Schristos addu $24,$25 11276410c867Schristos xor $18,$10 11286410c867Schristos xor $25,$3,$7 11296410c867Schristos addu $24,$6 11306410c867Schristos xor $18,$15 11316410c867Schristos sll $30,$2,30 11326410c867Schristos xor $25,$2 11336410c867Schristos srl $6,$18,31 11346410c867Schristos addu $18,$18 11356410c867Schristos srl $2,$2,2 11366410c867Schristos addu $24,$17 11376410c867Schristos or $18,$6 11386410c867Schristos or $2,$30 11396410c867Schristos addu $24,$25 11406410c867Schristos#endif 11416410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 11426410c867Schristos xor $19,$21 11436410c867Schristos addu $7,$31 # 26 11446410c867Schristos rotr $6,$24,27 11456410c867Schristos xor $19,$11 11466410c867Schristos xor $25,$2,$3 11476410c867Schristos addu $7,$6 11486410c867Schristos xor $19,$16 11496410c867Schristos xor $25,$1 11506410c867Schristos addu $7,$18 11516410c867Schristos rotr $19,$19,31 11526410c867Schristos rotr $1,$1,2 11536410c867Schristos addu $7,$25 11546410c867Schristos#else 11556410c867Schristos xor $19,$21 11566410c867Schristos sll $25,$24,5 # 26 11576410c867Schristos addu $7,$31 11586410c867Schristos srl $6,$24,27 11596410c867Schristos addu $7,$25 11606410c867Schristos xor $19,$11 11616410c867Schristos xor $25,$2,$3 11626410c867Schristos addu $7,$6 11636410c867Schristos xor $19,$16 11646410c867Schristos sll $30,$1,30 11656410c867Schristos xor $25,$1 11666410c867Schristos srl $6,$19,31 11676410c867Schristos addu $19,$19 11686410c867Schristos srl $1,$1,2 11696410c867Schristos addu $7,$18 11706410c867Schristos or $19,$6 11716410c867Schristos or $1,$30 11726410c867Schristos addu $7,$25 11736410c867Schristos#endif 11746410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 11756410c867Schristos xor $20,$22 11766410c867Schristos addu $3,$31 # 27 11776410c867Schristos rotr $6,$7,27 11786410c867Schristos xor $20,$12 11796410c867Schristos xor $25,$1,$2 11806410c867Schristos addu $3,$6 11816410c867Schristos xor $20,$17 11826410c867Schristos xor $25,$24 11836410c867Schristos addu $3,$19 11846410c867Schristos rotr $20,$20,31 11856410c867Schristos rotr $24,$24,2 11866410c867Schristos addu $3,$25 11876410c867Schristos#else 11886410c867Schristos xor $20,$22 11896410c867Schristos sll $25,$7,5 # 27 11906410c867Schristos addu $3,$31 11916410c867Schristos srl $6,$7,27 11926410c867Schristos addu $3,$25 11936410c867Schristos xor $20,$12 11946410c867Schristos xor $25,$1,$2 11956410c867Schristos addu $3,$6 11966410c867Schristos xor $20,$17 11976410c867Schristos sll $30,$24,30 11986410c867Schristos xor $25,$24 11996410c867Schristos srl $6,$20,31 12006410c867Schristos addu $20,$20 12016410c867Schristos srl $24,$24,2 12026410c867Schristos addu $3,$19 12036410c867Schristos or $20,$6 12046410c867Schristos or $24,$30 12056410c867Schristos addu $3,$25 12066410c867Schristos#endif 12076410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 12086410c867Schristos xor $21,$23 12096410c867Schristos addu $2,$31 # 28 12106410c867Schristos rotr $6,$3,27 12116410c867Schristos xor $21,$13 12126410c867Schristos xor $25,$24,$1 12136410c867Schristos addu $2,$6 12146410c867Schristos xor $21,$18 12156410c867Schristos xor $25,$7 12166410c867Schristos addu $2,$20 12176410c867Schristos rotr $21,$21,31 12186410c867Schristos rotr $7,$7,2 12196410c867Schristos addu $2,$25 12206410c867Schristos#else 12216410c867Schristos xor $21,$23 12226410c867Schristos sll $25,$3,5 # 28 12236410c867Schristos addu $2,$31 12246410c867Schristos srl $6,$3,27 12256410c867Schristos addu $2,$25 12266410c867Schristos xor $21,$13 12276410c867Schristos xor $25,$24,$1 12286410c867Schristos addu $2,$6 12296410c867Schristos xor $21,$18 12306410c867Schristos sll $30,$7,30 12316410c867Schristos xor $25,$7 12326410c867Schristos srl $6,$21,31 12336410c867Schristos addu $21,$21 12346410c867Schristos srl $7,$7,2 12356410c867Schristos addu $2,$20 12366410c867Schristos or $21,$6 12376410c867Schristos or $7,$30 12386410c867Schristos addu $2,$25 12396410c867Schristos#endif 12406410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 12416410c867Schristos xor $22,$8 12426410c867Schristos addu $1,$31 # 29 12436410c867Schristos rotr $6,$2,27 12446410c867Schristos xor $22,$14 12456410c867Schristos xor $25,$7,$24 12466410c867Schristos addu $1,$6 12476410c867Schristos xor $22,$19 12486410c867Schristos xor $25,$3 12496410c867Schristos addu $1,$21 12506410c867Schristos rotr $22,$22,31 12516410c867Schristos rotr $3,$3,2 12526410c867Schristos addu $1,$25 12536410c867Schristos#else 12546410c867Schristos xor $22,$8 12556410c867Schristos sll $25,$2,5 # 29 12566410c867Schristos addu $1,$31 12576410c867Schristos srl $6,$2,27 12586410c867Schristos addu $1,$25 12596410c867Schristos xor $22,$14 12606410c867Schristos xor $25,$7,$24 12616410c867Schristos addu $1,$6 12626410c867Schristos xor $22,$19 12636410c867Schristos sll $30,$3,30 12646410c867Schristos xor $25,$3 12656410c867Schristos srl $6,$22,31 12666410c867Schristos addu $22,$22 12676410c867Schristos srl $3,$3,2 12686410c867Schristos addu $1,$21 12696410c867Schristos or $22,$6 12706410c867Schristos or $3,$30 12716410c867Schristos addu $1,$25 12726410c867Schristos#endif 12736410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 12746410c867Schristos xor $23,$9 12756410c867Schristos addu $24,$31 # 30 12766410c867Schristos rotr $6,$1,27 12776410c867Schristos xor $23,$15 12786410c867Schristos xor $25,$3,$7 12796410c867Schristos addu $24,$6 12806410c867Schristos xor $23,$20 12816410c867Schristos xor $25,$2 12826410c867Schristos addu $24,$22 12836410c867Schristos rotr $23,$23,31 12846410c867Schristos rotr $2,$2,2 12856410c867Schristos addu $24,$25 12866410c867Schristos#else 12876410c867Schristos xor $23,$9 12886410c867Schristos sll $25,$1,5 # 30 12896410c867Schristos addu $24,$31 12906410c867Schristos srl $6,$1,27 12916410c867Schristos addu $24,$25 12926410c867Schristos xor $23,$15 12936410c867Schristos xor $25,$3,$7 12946410c867Schristos addu $24,$6 12956410c867Schristos xor $23,$20 12966410c867Schristos sll $30,$2,30 12976410c867Schristos xor $25,$2 12986410c867Schristos srl $6,$23,31 12996410c867Schristos addu $23,$23 13006410c867Schristos srl $2,$2,2 13016410c867Schristos addu $24,$22 13026410c867Schristos or $23,$6 13036410c867Schristos or $2,$30 13046410c867Schristos addu $24,$25 13056410c867Schristos#endif 13066410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 13076410c867Schristos xor $8,$10 13086410c867Schristos addu $7,$31 # 31 13096410c867Schristos rotr $6,$24,27 13106410c867Schristos xor $8,$16 13116410c867Schristos xor $25,$2,$3 13126410c867Schristos addu $7,$6 13136410c867Schristos xor $8,$21 13146410c867Schristos xor $25,$1 13156410c867Schristos addu $7,$23 13166410c867Schristos rotr $8,$8,31 13176410c867Schristos rotr $1,$1,2 13186410c867Schristos addu $7,$25 13196410c867Schristos#else 13206410c867Schristos xor $8,$10 13216410c867Schristos sll $25,$24,5 # 31 13226410c867Schristos addu $7,$31 13236410c867Schristos srl $6,$24,27 13246410c867Schristos addu $7,$25 13256410c867Schristos xor $8,$16 13266410c867Schristos xor $25,$2,$3 13276410c867Schristos addu $7,$6 13286410c867Schristos xor $8,$21 13296410c867Schristos sll $30,$1,30 13306410c867Schristos xor $25,$1 13316410c867Schristos srl $6,$8,31 13326410c867Schristos addu $8,$8 13336410c867Schristos srl $1,$1,2 13346410c867Schristos addu $7,$23 13356410c867Schristos or $8,$6 13366410c867Schristos or $1,$30 13376410c867Schristos addu $7,$25 13386410c867Schristos#endif 13396410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 13406410c867Schristos xor $9,$11 13416410c867Schristos addu $3,$31 # 32 13426410c867Schristos rotr $6,$7,27 13436410c867Schristos xor $9,$17 13446410c867Schristos xor $25,$1,$2 13456410c867Schristos addu $3,$6 13466410c867Schristos xor $9,$22 13476410c867Schristos xor $25,$24 13486410c867Schristos addu $3,$8 13496410c867Schristos rotr $9,$9,31 13506410c867Schristos rotr $24,$24,2 13516410c867Schristos addu $3,$25 13526410c867Schristos#else 13536410c867Schristos xor $9,$11 13546410c867Schristos sll $25,$7,5 # 32 13556410c867Schristos addu $3,$31 13566410c867Schristos srl $6,$7,27 13576410c867Schristos addu $3,$25 13586410c867Schristos xor $9,$17 13596410c867Schristos xor $25,$1,$2 13606410c867Schristos addu $3,$6 13616410c867Schristos xor $9,$22 13626410c867Schristos sll $30,$24,30 13636410c867Schristos xor $25,$24 13646410c867Schristos srl $6,$9,31 13656410c867Schristos addu $9,$9 13666410c867Schristos srl $24,$24,2 13676410c867Schristos addu $3,$8 13686410c867Schristos or $9,$6 13696410c867Schristos or $24,$30 13706410c867Schristos addu $3,$25 13716410c867Schristos#endif 13726410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 13736410c867Schristos xor $10,$12 13746410c867Schristos addu $2,$31 # 33 13756410c867Schristos rotr $6,$3,27 13766410c867Schristos xor $10,$18 13776410c867Schristos xor $25,$24,$1 13786410c867Schristos addu $2,$6 13796410c867Schristos xor $10,$23 13806410c867Schristos xor $25,$7 13816410c867Schristos addu $2,$9 13826410c867Schristos rotr $10,$10,31 13836410c867Schristos rotr $7,$7,2 13846410c867Schristos addu $2,$25 13856410c867Schristos#else 13866410c867Schristos xor $10,$12 13876410c867Schristos sll $25,$3,5 # 33 13886410c867Schristos addu $2,$31 13896410c867Schristos srl $6,$3,27 13906410c867Schristos addu $2,$25 13916410c867Schristos xor $10,$18 13926410c867Schristos xor $25,$24,$1 13936410c867Schristos addu $2,$6 13946410c867Schristos xor $10,$23 13956410c867Schristos sll $30,$7,30 13966410c867Schristos xor $25,$7 13976410c867Schristos srl $6,$10,31 13986410c867Schristos addu $10,$10 13996410c867Schristos srl $7,$7,2 14006410c867Schristos addu $2,$9 14016410c867Schristos or $10,$6 14026410c867Schristos or $7,$30 14036410c867Schristos addu $2,$25 14046410c867Schristos#endif 14056410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 14066410c867Schristos xor $11,$13 14076410c867Schristos addu $1,$31 # 34 14086410c867Schristos rotr $6,$2,27 14096410c867Schristos xor $11,$19 14106410c867Schristos xor $25,$7,$24 14116410c867Schristos addu $1,$6 14126410c867Schristos xor $11,$8 14136410c867Schristos xor $25,$3 14146410c867Schristos addu $1,$10 14156410c867Schristos rotr $11,$11,31 14166410c867Schristos rotr $3,$3,2 14176410c867Schristos addu $1,$25 14186410c867Schristos#else 14196410c867Schristos xor $11,$13 14206410c867Schristos sll $25,$2,5 # 34 14216410c867Schristos addu $1,$31 14226410c867Schristos srl $6,$2,27 14236410c867Schristos addu $1,$25 14246410c867Schristos xor $11,$19 14256410c867Schristos xor $25,$7,$24 14266410c867Schristos addu $1,$6 14276410c867Schristos xor $11,$8 14286410c867Schristos sll $30,$3,30 14296410c867Schristos xor $25,$3 14306410c867Schristos srl $6,$11,31 14316410c867Schristos addu $11,$11 14326410c867Schristos srl $3,$3,2 14336410c867Schristos addu $1,$10 14346410c867Schristos or $11,$6 14356410c867Schristos or $3,$30 14366410c867Schristos addu $1,$25 14376410c867Schristos#endif 14386410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 14396410c867Schristos xor $12,$14 14406410c867Schristos addu $24,$31 # 35 14416410c867Schristos rotr $6,$1,27 14426410c867Schristos xor $12,$20 14436410c867Schristos xor $25,$3,$7 14446410c867Schristos addu $24,$6 14456410c867Schristos xor $12,$9 14466410c867Schristos xor $25,$2 14476410c867Schristos addu $24,$11 14486410c867Schristos rotr $12,$12,31 14496410c867Schristos rotr $2,$2,2 14506410c867Schristos addu $24,$25 14516410c867Schristos#else 14526410c867Schristos xor $12,$14 14536410c867Schristos sll $25,$1,5 # 35 14546410c867Schristos addu $24,$31 14556410c867Schristos srl $6,$1,27 14566410c867Schristos addu $24,$25 14576410c867Schristos xor $12,$20 14586410c867Schristos xor $25,$3,$7 14596410c867Schristos addu $24,$6 14606410c867Schristos xor $12,$9 14616410c867Schristos sll $30,$2,30 14626410c867Schristos xor $25,$2 14636410c867Schristos srl $6,$12,31 14646410c867Schristos addu $12,$12 14656410c867Schristos srl $2,$2,2 14666410c867Schristos addu $24,$11 14676410c867Schristos or $12,$6 14686410c867Schristos or $2,$30 14696410c867Schristos addu $24,$25 14706410c867Schristos#endif 14716410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 14726410c867Schristos xor $13,$15 14736410c867Schristos addu $7,$31 # 36 14746410c867Schristos rotr $6,$24,27 14756410c867Schristos xor $13,$21 14766410c867Schristos xor $25,$2,$3 14776410c867Schristos addu $7,$6 14786410c867Schristos xor $13,$10 14796410c867Schristos xor $25,$1 14806410c867Schristos addu $7,$12 14816410c867Schristos rotr $13,$13,31 14826410c867Schristos rotr $1,$1,2 14836410c867Schristos addu $7,$25 14846410c867Schristos#else 14856410c867Schristos xor $13,$15 14866410c867Schristos sll $25,$24,5 # 36 14876410c867Schristos addu $7,$31 14886410c867Schristos srl $6,$24,27 14896410c867Schristos addu $7,$25 14906410c867Schristos xor $13,$21 14916410c867Schristos xor $25,$2,$3 14926410c867Schristos addu $7,$6 14936410c867Schristos xor $13,$10 14946410c867Schristos sll $30,$1,30 14956410c867Schristos xor $25,$1 14966410c867Schristos srl $6,$13,31 14976410c867Schristos addu $13,$13 14986410c867Schristos srl $1,$1,2 14996410c867Schristos addu $7,$12 15006410c867Schristos or $13,$6 15016410c867Schristos or $1,$30 15026410c867Schristos addu $7,$25 15036410c867Schristos#endif 15046410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 15056410c867Schristos xor $14,$16 15066410c867Schristos addu $3,$31 # 37 15076410c867Schristos rotr $6,$7,27 15086410c867Schristos xor $14,$22 15096410c867Schristos xor $25,$1,$2 15106410c867Schristos addu $3,$6 15116410c867Schristos xor $14,$11 15126410c867Schristos xor $25,$24 15136410c867Schristos addu $3,$13 15146410c867Schristos rotr $14,$14,31 15156410c867Schristos rotr $24,$24,2 15166410c867Schristos addu $3,$25 15176410c867Schristos#else 15186410c867Schristos xor $14,$16 15196410c867Schristos sll $25,$7,5 # 37 15206410c867Schristos addu $3,$31 15216410c867Schristos srl $6,$7,27 15226410c867Schristos addu $3,$25 15236410c867Schristos xor $14,$22 15246410c867Schristos xor $25,$1,$2 15256410c867Schristos addu $3,$6 15266410c867Schristos xor $14,$11 15276410c867Schristos sll $30,$24,30 15286410c867Schristos xor $25,$24 15296410c867Schristos srl $6,$14,31 15306410c867Schristos addu $14,$14 15316410c867Schristos srl $24,$24,2 15326410c867Schristos addu $3,$13 15336410c867Schristos or $14,$6 15346410c867Schristos or $24,$30 15356410c867Schristos addu $3,$25 15366410c867Schristos#endif 15376410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 15386410c867Schristos xor $15,$17 15396410c867Schristos addu $2,$31 # 38 15406410c867Schristos rotr $6,$3,27 15416410c867Schristos xor $15,$23 15426410c867Schristos xor $25,$24,$1 15436410c867Schristos addu $2,$6 15446410c867Schristos xor $15,$12 15456410c867Schristos xor $25,$7 15466410c867Schristos addu $2,$14 15476410c867Schristos rotr $15,$15,31 15486410c867Schristos rotr $7,$7,2 15496410c867Schristos addu $2,$25 15506410c867Schristos#else 15516410c867Schristos xor $15,$17 15526410c867Schristos sll $25,$3,5 # 38 15536410c867Schristos addu $2,$31 15546410c867Schristos srl $6,$3,27 15556410c867Schristos addu $2,$25 15566410c867Schristos xor $15,$23 15576410c867Schristos xor $25,$24,$1 15586410c867Schristos addu $2,$6 15596410c867Schristos xor $15,$12 15606410c867Schristos sll $30,$7,30 15616410c867Schristos xor $25,$7 15626410c867Schristos srl $6,$15,31 15636410c867Schristos addu $15,$15 15646410c867Schristos srl $7,$7,2 15656410c867Schristos addu $2,$14 15666410c867Schristos or $15,$6 15676410c867Schristos or $7,$30 15686410c867Schristos addu $2,$25 15696410c867Schristos#endif 15706410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 15716410c867Schristos xor $16,$18 15726410c867Schristos addu $1,$31 # 39 15736410c867Schristos rotr $6,$2,27 15746410c867Schristos xor $16,$8 15756410c867Schristos xor $25,$7,$24 15766410c867Schristos addu $1,$6 15776410c867Schristos xor $16,$13 15786410c867Schristos xor $25,$3 15796410c867Schristos addu $1,$15 15806410c867Schristos rotr $16,$16,31 15816410c867Schristos rotr $3,$3,2 15826410c867Schristos addu $1,$25 15836410c867Schristos#else 15846410c867Schristos xor $16,$18 15856410c867Schristos sll $25,$2,5 # 39 15866410c867Schristos addu $1,$31 15876410c867Schristos srl $6,$2,27 15886410c867Schristos addu $1,$25 15896410c867Schristos xor $16,$8 15906410c867Schristos xor $25,$7,$24 15916410c867Schristos addu $1,$6 15926410c867Schristos xor $16,$13 15936410c867Schristos sll $30,$3,30 15946410c867Schristos xor $25,$3 15956410c867Schristos srl $6,$16,31 15966410c867Schristos addu $16,$16 15976410c867Schristos srl $3,$3,2 15986410c867Schristos addu $1,$15 15996410c867Schristos or $16,$6 16006410c867Schristos or $3,$30 16016410c867Schristos addu $1,$25 16026410c867Schristos#endif 16036410c867Schristos lui $31,0x8f1b 16046410c867Schristos ori $31,0xbcdc # K_40_59 16056410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 16066410c867Schristos addu $24,$31 # 40 16076410c867Schristos and $25,$3,$7 16086410c867Schristos xor $17,$19 16096410c867Schristos rotr $6,$1,27 16106410c867Schristos addu $24,$25 16116410c867Schristos xor $17,$9 16126410c867Schristos xor $25,$3,$7 16136410c867Schristos addu $24,$6 16146410c867Schristos xor $17,$14 16156410c867Schristos and $25,$2 16166410c867Schristos addu $24,$16 16176410c867Schristos rotr $17,$17,31 16186410c867Schristos rotr $2,$2,2 16196410c867Schristos addu $24,$25 16206410c867Schristos#else 16216410c867Schristos xor $17,$19 16226410c867Schristos sll $25,$1,5 # 40 16236410c867Schristos addu $24,$31 16246410c867Schristos srl $6,$1,27 16256410c867Schristos addu $24,$25 16266410c867Schristos xor $17,$9 16276410c867Schristos and $25,$3,$7 16286410c867Schristos addu $24,$6 16296410c867Schristos xor $17,$14 16306410c867Schristos sll $30,$2,30 16316410c867Schristos addu $24,$25 16326410c867Schristos srl $6,$17,31 16336410c867Schristos xor $25,$3,$7 16346410c867Schristos addu $17,$17 16356410c867Schristos and $25,$2 16366410c867Schristos srl $2,$2,2 16376410c867Schristos or $17,$6 16386410c867Schristos addu $24,$16 16396410c867Schristos or $2,$30 16406410c867Schristos addu $24,$25 16416410c867Schristos#endif 16426410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 16436410c867Schristos addu $7,$31 # 41 16446410c867Schristos and $25,$2,$3 16456410c867Schristos xor $18,$20 16466410c867Schristos rotr $6,$24,27 16476410c867Schristos addu $7,$25 16486410c867Schristos xor $18,$10 16496410c867Schristos xor $25,$2,$3 16506410c867Schristos addu $7,$6 16516410c867Schristos xor $18,$15 16526410c867Schristos and $25,$1 16536410c867Schristos addu $7,$17 16546410c867Schristos rotr $18,$18,31 16556410c867Schristos rotr $1,$1,2 16566410c867Schristos addu $7,$25 16576410c867Schristos#else 16586410c867Schristos xor $18,$20 16596410c867Schristos sll $25,$24,5 # 41 16606410c867Schristos addu $7,$31 16616410c867Schristos srl $6,$24,27 16626410c867Schristos addu $7,$25 16636410c867Schristos xor $18,$10 16646410c867Schristos and $25,$2,$3 16656410c867Schristos addu $7,$6 16666410c867Schristos xor $18,$15 16676410c867Schristos sll $30,$1,30 16686410c867Schristos addu $7,$25 16696410c867Schristos srl $6,$18,31 16706410c867Schristos xor $25,$2,$3 16716410c867Schristos addu $18,$18 16726410c867Schristos and $25,$1 16736410c867Schristos srl $1,$1,2 16746410c867Schristos or $18,$6 16756410c867Schristos addu $7,$17 16766410c867Schristos or $1,$30 16776410c867Schristos addu $7,$25 16786410c867Schristos#endif 16796410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 16806410c867Schristos addu $3,$31 # 42 16816410c867Schristos and $25,$1,$2 16826410c867Schristos xor $19,$21 16836410c867Schristos rotr $6,$7,27 16846410c867Schristos addu $3,$25 16856410c867Schristos xor $19,$11 16866410c867Schristos xor $25,$1,$2 16876410c867Schristos addu $3,$6 16886410c867Schristos xor $19,$16 16896410c867Schristos and $25,$24 16906410c867Schristos addu $3,$18 16916410c867Schristos rotr $19,$19,31 16926410c867Schristos rotr $24,$24,2 16936410c867Schristos addu $3,$25 16946410c867Schristos#else 16956410c867Schristos xor $19,$21 16966410c867Schristos sll $25,$7,5 # 42 16976410c867Schristos addu $3,$31 16986410c867Schristos srl $6,$7,27 16996410c867Schristos addu $3,$25 17006410c867Schristos xor $19,$11 17016410c867Schristos and $25,$1,$2 17026410c867Schristos addu $3,$6 17036410c867Schristos xor $19,$16 17046410c867Schristos sll $30,$24,30 17056410c867Schristos addu $3,$25 17066410c867Schristos srl $6,$19,31 17076410c867Schristos xor $25,$1,$2 17086410c867Schristos addu $19,$19 17096410c867Schristos and $25,$24 17106410c867Schristos srl $24,$24,2 17116410c867Schristos or $19,$6 17126410c867Schristos addu $3,$18 17136410c867Schristos or $24,$30 17146410c867Schristos addu $3,$25 17156410c867Schristos#endif 17166410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 17176410c867Schristos addu $2,$31 # 43 17186410c867Schristos and $25,$24,$1 17196410c867Schristos xor $20,$22 17206410c867Schristos rotr $6,$3,27 17216410c867Schristos addu $2,$25 17226410c867Schristos xor $20,$12 17236410c867Schristos xor $25,$24,$1 17246410c867Schristos addu $2,$6 17256410c867Schristos xor $20,$17 17266410c867Schristos and $25,$7 17276410c867Schristos addu $2,$19 17286410c867Schristos rotr $20,$20,31 17296410c867Schristos rotr $7,$7,2 17306410c867Schristos addu $2,$25 17316410c867Schristos#else 17326410c867Schristos xor $20,$22 17336410c867Schristos sll $25,$3,5 # 43 17346410c867Schristos addu $2,$31 17356410c867Schristos srl $6,$3,27 17366410c867Schristos addu $2,$25 17376410c867Schristos xor $20,$12 17386410c867Schristos and $25,$24,$1 17396410c867Schristos addu $2,$6 17406410c867Schristos xor $20,$17 17416410c867Schristos sll $30,$7,30 17426410c867Schristos addu $2,$25 17436410c867Schristos srl $6,$20,31 17446410c867Schristos xor $25,$24,$1 17456410c867Schristos addu $20,$20 17466410c867Schristos and $25,$7 17476410c867Schristos srl $7,$7,2 17486410c867Schristos or $20,$6 17496410c867Schristos addu $2,$19 17506410c867Schristos or $7,$30 17516410c867Schristos addu $2,$25 17526410c867Schristos#endif 17536410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 17546410c867Schristos addu $1,$31 # 44 17556410c867Schristos and $25,$7,$24 17566410c867Schristos xor $21,$23 17576410c867Schristos rotr $6,$2,27 17586410c867Schristos addu $1,$25 17596410c867Schristos xor $21,$13 17606410c867Schristos xor $25,$7,$24 17616410c867Schristos addu $1,$6 17626410c867Schristos xor $21,$18 17636410c867Schristos and $25,$3 17646410c867Schristos addu $1,$20 17656410c867Schristos rotr $21,$21,31 17666410c867Schristos rotr $3,$3,2 17676410c867Schristos addu $1,$25 17686410c867Schristos#else 17696410c867Schristos xor $21,$23 17706410c867Schristos sll $25,$2,5 # 44 17716410c867Schristos addu $1,$31 17726410c867Schristos srl $6,$2,27 17736410c867Schristos addu $1,$25 17746410c867Schristos xor $21,$13 17756410c867Schristos and $25,$7,$24 17766410c867Schristos addu $1,$6 17776410c867Schristos xor $21,$18 17786410c867Schristos sll $30,$3,30 17796410c867Schristos addu $1,$25 17806410c867Schristos srl $6,$21,31 17816410c867Schristos xor $25,$7,$24 17826410c867Schristos addu $21,$21 17836410c867Schristos and $25,$3 17846410c867Schristos srl $3,$3,2 17856410c867Schristos or $21,$6 17866410c867Schristos addu $1,$20 17876410c867Schristos or $3,$30 17886410c867Schristos addu $1,$25 17896410c867Schristos#endif 17906410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 17916410c867Schristos addu $24,$31 # 45 17926410c867Schristos and $25,$3,$7 17936410c867Schristos xor $22,$8 17946410c867Schristos rotr $6,$1,27 17956410c867Schristos addu $24,$25 17966410c867Schristos xor $22,$14 17976410c867Schristos xor $25,$3,$7 17986410c867Schristos addu $24,$6 17996410c867Schristos xor $22,$19 18006410c867Schristos and $25,$2 18016410c867Schristos addu $24,$21 18026410c867Schristos rotr $22,$22,31 18036410c867Schristos rotr $2,$2,2 18046410c867Schristos addu $24,$25 18056410c867Schristos#else 18066410c867Schristos xor $22,$8 18076410c867Schristos sll $25,$1,5 # 45 18086410c867Schristos addu $24,$31 18096410c867Schristos srl $6,$1,27 18106410c867Schristos addu $24,$25 18116410c867Schristos xor $22,$14 18126410c867Schristos and $25,$3,$7 18136410c867Schristos addu $24,$6 18146410c867Schristos xor $22,$19 18156410c867Schristos sll $30,$2,30 18166410c867Schristos addu $24,$25 18176410c867Schristos srl $6,$22,31 18186410c867Schristos xor $25,$3,$7 18196410c867Schristos addu $22,$22 18206410c867Schristos and $25,$2 18216410c867Schristos srl $2,$2,2 18226410c867Schristos or $22,$6 18236410c867Schristos addu $24,$21 18246410c867Schristos or $2,$30 18256410c867Schristos addu $24,$25 18266410c867Schristos#endif 18276410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 18286410c867Schristos addu $7,$31 # 46 18296410c867Schristos and $25,$2,$3 18306410c867Schristos xor $23,$9 18316410c867Schristos rotr $6,$24,27 18326410c867Schristos addu $7,$25 18336410c867Schristos xor $23,$15 18346410c867Schristos xor $25,$2,$3 18356410c867Schristos addu $7,$6 18366410c867Schristos xor $23,$20 18376410c867Schristos and $25,$1 18386410c867Schristos addu $7,$22 18396410c867Schristos rotr $23,$23,31 18406410c867Schristos rotr $1,$1,2 18416410c867Schristos addu $7,$25 18426410c867Schristos#else 18436410c867Schristos xor $23,$9 18446410c867Schristos sll $25,$24,5 # 46 18456410c867Schristos addu $7,$31 18466410c867Schristos srl $6,$24,27 18476410c867Schristos addu $7,$25 18486410c867Schristos xor $23,$15 18496410c867Schristos and $25,$2,$3 18506410c867Schristos addu $7,$6 18516410c867Schristos xor $23,$20 18526410c867Schristos sll $30,$1,30 18536410c867Schristos addu $7,$25 18546410c867Schristos srl $6,$23,31 18556410c867Schristos xor $25,$2,$3 18566410c867Schristos addu $23,$23 18576410c867Schristos and $25,$1 18586410c867Schristos srl $1,$1,2 18596410c867Schristos or $23,$6 18606410c867Schristos addu $7,$22 18616410c867Schristos or $1,$30 18626410c867Schristos addu $7,$25 18636410c867Schristos#endif 18646410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 18656410c867Schristos addu $3,$31 # 47 18666410c867Schristos and $25,$1,$2 18676410c867Schristos xor $8,$10 18686410c867Schristos rotr $6,$7,27 18696410c867Schristos addu $3,$25 18706410c867Schristos xor $8,$16 18716410c867Schristos xor $25,$1,$2 18726410c867Schristos addu $3,$6 18736410c867Schristos xor $8,$21 18746410c867Schristos and $25,$24 18756410c867Schristos addu $3,$23 18766410c867Schristos rotr $8,$8,31 18776410c867Schristos rotr $24,$24,2 18786410c867Schristos addu $3,$25 18796410c867Schristos#else 18806410c867Schristos xor $8,$10 18816410c867Schristos sll $25,$7,5 # 47 18826410c867Schristos addu $3,$31 18836410c867Schristos srl $6,$7,27 18846410c867Schristos addu $3,$25 18856410c867Schristos xor $8,$16 18866410c867Schristos and $25,$1,$2 18876410c867Schristos addu $3,$6 18886410c867Schristos xor $8,$21 18896410c867Schristos sll $30,$24,30 18906410c867Schristos addu $3,$25 18916410c867Schristos srl $6,$8,31 18926410c867Schristos xor $25,$1,$2 18936410c867Schristos addu $8,$8 18946410c867Schristos and $25,$24 18956410c867Schristos srl $24,$24,2 18966410c867Schristos or $8,$6 18976410c867Schristos addu $3,$23 18986410c867Schristos or $24,$30 18996410c867Schristos addu $3,$25 19006410c867Schristos#endif 19016410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 19026410c867Schristos addu $2,$31 # 48 19036410c867Schristos and $25,$24,$1 19046410c867Schristos xor $9,$11 19056410c867Schristos rotr $6,$3,27 19066410c867Schristos addu $2,$25 19076410c867Schristos xor $9,$17 19086410c867Schristos xor $25,$24,$1 19096410c867Schristos addu $2,$6 19106410c867Schristos xor $9,$22 19116410c867Schristos and $25,$7 19126410c867Schristos addu $2,$8 19136410c867Schristos rotr $9,$9,31 19146410c867Schristos rotr $7,$7,2 19156410c867Schristos addu $2,$25 19166410c867Schristos#else 19176410c867Schristos xor $9,$11 19186410c867Schristos sll $25,$3,5 # 48 19196410c867Schristos addu $2,$31 19206410c867Schristos srl $6,$3,27 19216410c867Schristos addu $2,$25 19226410c867Schristos xor $9,$17 19236410c867Schristos and $25,$24,$1 19246410c867Schristos addu $2,$6 19256410c867Schristos xor $9,$22 19266410c867Schristos sll $30,$7,30 19276410c867Schristos addu $2,$25 19286410c867Schristos srl $6,$9,31 19296410c867Schristos xor $25,$24,$1 19306410c867Schristos addu $9,$9 19316410c867Schristos and $25,$7 19326410c867Schristos srl $7,$7,2 19336410c867Schristos or $9,$6 19346410c867Schristos addu $2,$8 19356410c867Schristos or $7,$30 19366410c867Schristos addu $2,$25 19376410c867Schristos#endif 19386410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 19396410c867Schristos addu $1,$31 # 49 19406410c867Schristos and $25,$7,$24 19416410c867Schristos xor $10,$12 19426410c867Schristos rotr $6,$2,27 19436410c867Schristos addu $1,$25 19446410c867Schristos xor $10,$18 19456410c867Schristos xor $25,$7,$24 19466410c867Schristos addu $1,$6 19476410c867Schristos xor $10,$23 19486410c867Schristos and $25,$3 19496410c867Schristos addu $1,$9 19506410c867Schristos rotr $10,$10,31 19516410c867Schristos rotr $3,$3,2 19526410c867Schristos addu $1,$25 19536410c867Schristos#else 19546410c867Schristos xor $10,$12 19556410c867Schristos sll $25,$2,5 # 49 19566410c867Schristos addu $1,$31 19576410c867Schristos srl $6,$2,27 19586410c867Schristos addu $1,$25 19596410c867Schristos xor $10,$18 19606410c867Schristos and $25,$7,$24 19616410c867Schristos addu $1,$6 19626410c867Schristos xor $10,$23 19636410c867Schristos sll $30,$3,30 19646410c867Schristos addu $1,$25 19656410c867Schristos srl $6,$10,31 19666410c867Schristos xor $25,$7,$24 19676410c867Schristos addu $10,$10 19686410c867Schristos and $25,$3 19696410c867Schristos srl $3,$3,2 19706410c867Schristos or $10,$6 19716410c867Schristos addu $1,$9 19726410c867Schristos or $3,$30 19736410c867Schristos addu $1,$25 19746410c867Schristos#endif 19756410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 19766410c867Schristos addu $24,$31 # 50 19776410c867Schristos and $25,$3,$7 19786410c867Schristos xor $11,$13 19796410c867Schristos rotr $6,$1,27 19806410c867Schristos addu $24,$25 19816410c867Schristos xor $11,$19 19826410c867Schristos xor $25,$3,$7 19836410c867Schristos addu $24,$6 19846410c867Schristos xor $11,$8 19856410c867Schristos and $25,$2 19866410c867Schristos addu $24,$10 19876410c867Schristos rotr $11,$11,31 19886410c867Schristos rotr $2,$2,2 19896410c867Schristos addu $24,$25 19906410c867Schristos#else 19916410c867Schristos xor $11,$13 19926410c867Schristos sll $25,$1,5 # 50 19936410c867Schristos addu $24,$31 19946410c867Schristos srl $6,$1,27 19956410c867Schristos addu $24,$25 19966410c867Schristos xor $11,$19 19976410c867Schristos and $25,$3,$7 19986410c867Schristos addu $24,$6 19996410c867Schristos xor $11,$8 20006410c867Schristos sll $30,$2,30 20016410c867Schristos addu $24,$25 20026410c867Schristos srl $6,$11,31 20036410c867Schristos xor $25,$3,$7 20046410c867Schristos addu $11,$11 20056410c867Schristos and $25,$2 20066410c867Schristos srl $2,$2,2 20076410c867Schristos or $11,$6 20086410c867Schristos addu $24,$10 20096410c867Schristos or $2,$30 20106410c867Schristos addu $24,$25 20116410c867Schristos#endif 20126410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 20136410c867Schristos addu $7,$31 # 51 20146410c867Schristos and $25,$2,$3 20156410c867Schristos xor $12,$14 20166410c867Schristos rotr $6,$24,27 20176410c867Schristos addu $7,$25 20186410c867Schristos xor $12,$20 20196410c867Schristos xor $25,$2,$3 20206410c867Schristos addu $7,$6 20216410c867Schristos xor $12,$9 20226410c867Schristos and $25,$1 20236410c867Schristos addu $7,$11 20246410c867Schristos rotr $12,$12,31 20256410c867Schristos rotr $1,$1,2 20266410c867Schristos addu $7,$25 20276410c867Schristos#else 20286410c867Schristos xor $12,$14 20296410c867Schristos sll $25,$24,5 # 51 20306410c867Schristos addu $7,$31 20316410c867Schristos srl $6,$24,27 20326410c867Schristos addu $7,$25 20336410c867Schristos xor $12,$20 20346410c867Schristos and $25,$2,$3 20356410c867Schristos addu $7,$6 20366410c867Schristos xor $12,$9 20376410c867Schristos sll $30,$1,30 20386410c867Schristos addu $7,$25 20396410c867Schristos srl $6,$12,31 20406410c867Schristos xor $25,$2,$3 20416410c867Schristos addu $12,$12 20426410c867Schristos and $25,$1 20436410c867Schristos srl $1,$1,2 20446410c867Schristos or $12,$6 20456410c867Schristos addu $7,$11 20466410c867Schristos or $1,$30 20476410c867Schristos addu $7,$25 20486410c867Schristos#endif 20496410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 20506410c867Schristos addu $3,$31 # 52 20516410c867Schristos and $25,$1,$2 20526410c867Schristos xor $13,$15 20536410c867Schristos rotr $6,$7,27 20546410c867Schristos addu $3,$25 20556410c867Schristos xor $13,$21 20566410c867Schristos xor $25,$1,$2 20576410c867Schristos addu $3,$6 20586410c867Schristos xor $13,$10 20596410c867Schristos and $25,$24 20606410c867Schristos addu $3,$12 20616410c867Schristos rotr $13,$13,31 20626410c867Schristos rotr $24,$24,2 20636410c867Schristos addu $3,$25 20646410c867Schristos#else 20656410c867Schristos xor $13,$15 20666410c867Schristos sll $25,$7,5 # 52 20676410c867Schristos addu $3,$31 20686410c867Schristos srl $6,$7,27 20696410c867Schristos addu $3,$25 20706410c867Schristos xor $13,$21 20716410c867Schristos and $25,$1,$2 20726410c867Schristos addu $3,$6 20736410c867Schristos xor $13,$10 20746410c867Schristos sll $30,$24,30 20756410c867Schristos addu $3,$25 20766410c867Schristos srl $6,$13,31 20776410c867Schristos xor $25,$1,$2 20786410c867Schristos addu $13,$13 20796410c867Schristos and $25,$24 20806410c867Schristos srl $24,$24,2 20816410c867Schristos or $13,$6 20826410c867Schristos addu $3,$12 20836410c867Schristos or $24,$30 20846410c867Schristos addu $3,$25 20856410c867Schristos#endif 20866410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 20876410c867Schristos addu $2,$31 # 53 20886410c867Schristos and $25,$24,$1 20896410c867Schristos xor $14,$16 20906410c867Schristos rotr $6,$3,27 20916410c867Schristos addu $2,$25 20926410c867Schristos xor $14,$22 20936410c867Schristos xor $25,$24,$1 20946410c867Schristos addu $2,$6 20956410c867Schristos xor $14,$11 20966410c867Schristos and $25,$7 20976410c867Schristos addu $2,$13 20986410c867Schristos rotr $14,$14,31 20996410c867Schristos rotr $7,$7,2 21006410c867Schristos addu $2,$25 21016410c867Schristos#else 21026410c867Schristos xor $14,$16 21036410c867Schristos sll $25,$3,5 # 53 21046410c867Schristos addu $2,$31 21056410c867Schristos srl $6,$3,27 21066410c867Schristos addu $2,$25 21076410c867Schristos xor $14,$22 21086410c867Schristos and $25,$24,$1 21096410c867Schristos addu $2,$6 21106410c867Schristos xor $14,$11 21116410c867Schristos sll $30,$7,30 21126410c867Schristos addu $2,$25 21136410c867Schristos srl $6,$14,31 21146410c867Schristos xor $25,$24,$1 21156410c867Schristos addu $14,$14 21166410c867Schristos and $25,$7 21176410c867Schristos srl $7,$7,2 21186410c867Schristos or $14,$6 21196410c867Schristos addu $2,$13 21206410c867Schristos or $7,$30 21216410c867Schristos addu $2,$25 21226410c867Schristos#endif 21236410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 21246410c867Schristos addu $1,$31 # 54 21256410c867Schristos and $25,$7,$24 21266410c867Schristos xor $15,$17 21276410c867Schristos rotr $6,$2,27 21286410c867Schristos addu $1,$25 21296410c867Schristos xor $15,$23 21306410c867Schristos xor $25,$7,$24 21316410c867Schristos addu $1,$6 21326410c867Schristos xor $15,$12 21336410c867Schristos and $25,$3 21346410c867Schristos addu $1,$14 21356410c867Schristos rotr $15,$15,31 21366410c867Schristos rotr $3,$3,2 21376410c867Schristos addu $1,$25 21386410c867Schristos#else 21396410c867Schristos xor $15,$17 21406410c867Schristos sll $25,$2,5 # 54 21416410c867Schristos addu $1,$31 21426410c867Schristos srl $6,$2,27 21436410c867Schristos addu $1,$25 21446410c867Schristos xor $15,$23 21456410c867Schristos and $25,$7,$24 21466410c867Schristos addu $1,$6 21476410c867Schristos xor $15,$12 21486410c867Schristos sll $30,$3,30 21496410c867Schristos addu $1,$25 21506410c867Schristos srl $6,$15,31 21516410c867Schristos xor $25,$7,$24 21526410c867Schristos addu $15,$15 21536410c867Schristos and $25,$3 21546410c867Schristos srl $3,$3,2 21556410c867Schristos or $15,$6 21566410c867Schristos addu $1,$14 21576410c867Schristos or $3,$30 21586410c867Schristos addu $1,$25 21596410c867Schristos#endif 21606410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 21616410c867Schristos addu $24,$31 # 55 21626410c867Schristos and $25,$3,$7 21636410c867Schristos xor $16,$18 21646410c867Schristos rotr $6,$1,27 21656410c867Schristos addu $24,$25 21666410c867Schristos xor $16,$8 21676410c867Schristos xor $25,$3,$7 21686410c867Schristos addu $24,$6 21696410c867Schristos xor $16,$13 21706410c867Schristos and $25,$2 21716410c867Schristos addu $24,$15 21726410c867Schristos rotr $16,$16,31 21736410c867Schristos rotr $2,$2,2 21746410c867Schristos addu $24,$25 21756410c867Schristos#else 21766410c867Schristos xor $16,$18 21776410c867Schristos sll $25,$1,5 # 55 21786410c867Schristos addu $24,$31 21796410c867Schristos srl $6,$1,27 21806410c867Schristos addu $24,$25 21816410c867Schristos xor $16,$8 21826410c867Schristos and $25,$3,$7 21836410c867Schristos addu $24,$6 21846410c867Schristos xor $16,$13 21856410c867Schristos sll $30,$2,30 21866410c867Schristos addu $24,$25 21876410c867Schristos srl $6,$16,31 21886410c867Schristos xor $25,$3,$7 21896410c867Schristos addu $16,$16 21906410c867Schristos and $25,$2 21916410c867Schristos srl $2,$2,2 21926410c867Schristos or $16,$6 21936410c867Schristos addu $24,$15 21946410c867Schristos or $2,$30 21956410c867Schristos addu $24,$25 21966410c867Schristos#endif 21976410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 21986410c867Schristos addu $7,$31 # 56 21996410c867Schristos and $25,$2,$3 22006410c867Schristos xor $17,$19 22016410c867Schristos rotr $6,$24,27 22026410c867Schristos addu $7,$25 22036410c867Schristos xor $17,$9 22046410c867Schristos xor $25,$2,$3 22056410c867Schristos addu $7,$6 22066410c867Schristos xor $17,$14 22076410c867Schristos and $25,$1 22086410c867Schristos addu $7,$16 22096410c867Schristos rotr $17,$17,31 22106410c867Schristos rotr $1,$1,2 22116410c867Schristos addu $7,$25 22126410c867Schristos#else 22136410c867Schristos xor $17,$19 22146410c867Schristos sll $25,$24,5 # 56 22156410c867Schristos addu $7,$31 22166410c867Schristos srl $6,$24,27 22176410c867Schristos addu $7,$25 22186410c867Schristos xor $17,$9 22196410c867Schristos and $25,$2,$3 22206410c867Schristos addu $7,$6 22216410c867Schristos xor $17,$14 22226410c867Schristos sll $30,$1,30 22236410c867Schristos addu $7,$25 22246410c867Schristos srl $6,$17,31 22256410c867Schristos xor $25,$2,$3 22266410c867Schristos addu $17,$17 22276410c867Schristos and $25,$1 22286410c867Schristos srl $1,$1,2 22296410c867Schristos or $17,$6 22306410c867Schristos addu $7,$16 22316410c867Schristos or $1,$30 22326410c867Schristos addu $7,$25 22336410c867Schristos#endif 22346410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 22356410c867Schristos addu $3,$31 # 57 22366410c867Schristos and $25,$1,$2 22376410c867Schristos xor $18,$20 22386410c867Schristos rotr $6,$7,27 22396410c867Schristos addu $3,$25 22406410c867Schristos xor $18,$10 22416410c867Schristos xor $25,$1,$2 22426410c867Schristos addu $3,$6 22436410c867Schristos xor $18,$15 22446410c867Schristos and $25,$24 22456410c867Schristos addu $3,$17 22466410c867Schristos rotr $18,$18,31 22476410c867Schristos rotr $24,$24,2 22486410c867Schristos addu $3,$25 22496410c867Schristos#else 22506410c867Schristos xor $18,$20 22516410c867Schristos sll $25,$7,5 # 57 22526410c867Schristos addu $3,$31 22536410c867Schristos srl $6,$7,27 22546410c867Schristos addu $3,$25 22556410c867Schristos xor $18,$10 22566410c867Schristos and $25,$1,$2 22576410c867Schristos addu $3,$6 22586410c867Schristos xor $18,$15 22596410c867Schristos sll $30,$24,30 22606410c867Schristos addu $3,$25 22616410c867Schristos srl $6,$18,31 22626410c867Schristos xor $25,$1,$2 22636410c867Schristos addu $18,$18 22646410c867Schristos and $25,$24 22656410c867Schristos srl $24,$24,2 22666410c867Schristos or $18,$6 22676410c867Schristos addu $3,$17 22686410c867Schristos or $24,$30 22696410c867Schristos addu $3,$25 22706410c867Schristos#endif 22716410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 22726410c867Schristos addu $2,$31 # 58 22736410c867Schristos and $25,$24,$1 22746410c867Schristos xor $19,$21 22756410c867Schristos rotr $6,$3,27 22766410c867Schristos addu $2,$25 22776410c867Schristos xor $19,$11 22786410c867Schristos xor $25,$24,$1 22796410c867Schristos addu $2,$6 22806410c867Schristos xor $19,$16 22816410c867Schristos and $25,$7 22826410c867Schristos addu $2,$18 22836410c867Schristos rotr $19,$19,31 22846410c867Schristos rotr $7,$7,2 22856410c867Schristos addu $2,$25 22866410c867Schristos#else 22876410c867Schristos xor $19,$21 22886410c867Schristos sll $25,$3,5 # 58 22896410c867Schristos addu $2,$31 22906410c867Schristos srl $6,$3,27 22916410c867Schristos addu $2,$25 22926410c867Schristos xor $19,$11 22936410c867Schristos and $25,$24,$1 22946410c867Schristos addu $2,$6 22956410c867Schristos xor $19,$16 22966410c867Schristos sll $30,$7,30 22976410c867Schristos addu $2,$25 22986410c867Schristos srl $6,$19,31 22996410c867Schristos xor $25,$24,$1 23006410c867Schristos addu $19,$19 23016410c867Schristos and $25,$7 23026410c867Schristos srl $7,$7,2 23036410c867Schristos or $19,$6 23046410c867Schristos addu $2,$18 23056410c867Schristos or $7,$30 23066410c867Schristos addu $2,$25 23076410c867Schristos#endif 23086410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 23096410c867Schristos addu $1,$31 # 59 23106410c867Schristos and $25,$7,$24 23116410c867Schristos xor $20,$22 23126410c867Schristos rotr $6,$2,27 23136410c867Schristos addu $1,$25 23146410c867Schristos xor $20,$12 23156410c867Schristos xor $25,$7,$24 23166410c867Schristos addu $1,$6 23176410c867Schristos xor $20,$17 23186410c867Schristos and $25,$3 23196410c867Schristos addu $1,$19 23206410c867Schristos rotr $20,$20,31 23216410c867Schristos rotr $3,$3,2 23226410c867Schristos addu $1,$25 23236410c867Schristos#else 23246410c867Schristos xor $20,$22 23256410c867Schristos sll $25,$2,5 # 59 23266410c867Schristos addu $1,$31 23276410c867Schristos srl $6,$2,27 23286410c867Schristos addu $1,$25 23296410c867Schristos xor $20,$12 23306410c867Schristos and $25,$7,$24 23316410c867Schristos addu $1,$6 23326410c867Schristos xor $20,$17 23336410c867Schristos sll $30,$3,30 23346410c867Schristos addu $1,$25 23356410c867Schristos srl $6,$20,31 23366410c867Schristos xor $25,$7,$24 23376410c867Schristos addu $20,$20 23386410c867Schristos and $25,$3 23396410c867Schristos srl $3,$3,2 23406410c867Schristos or $20,$6 23416410c867Schristos addu $1,$19 23426410c867Schristos or $3,$30 23436410c867Schristos addu $1,$25 23446410c867Schristos#endif 23456410c867Schristos lui $31,0xca62 23466410c867Schristos ori $31,0xc1d6 # K_60_79 23476410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 23486410c867Schristos xor $21,$23 23496410c867Schristos addu $24,$31 # 60 23506410c867Schristos rotr $6,$1,27 23516410c867Schristos xor $21,$13 23526410c867Schristos xor $25,$3,$7 23536410c867Schristos addu $24,$6 23546410c867Schristos xor $21,$18 23556410c867Schristos xor $25,$2 23566410c867Schristos addu $24,$20 23576410c867Schristos rotr $21,$21,31 23586410c867Schristos rotr $2,$2,2 23596410c867Schristos addu $24,$25 23606410c867Schristos#else 23616410c867Schristos xor $21,$23 23626410c867Schristos sll $25,$1,5 # 60 23636410c867Schristos addu $24,$31 23646410c867Schristos srl $6,$1,27 23656410c867Schristos addu $24,$25 23666410c867Schristos xor $21,$13 23676410c867Schristos xor $25,$3,$7 23686410c867Schristos addu $24,$6 23696410c867Schristos xor $21,$18 23706410c867Schristos sll $30,$2,30 23716410c867Schristos xor $25,$2 23726410c867Schristos srl $6,$21,31 23736410c867Schristos addu $21,$21 23746410c867Schristos srl $2,$2,2 23756410c867Schristos addu $24,$20 23766410c867Schristos or $21,$6 23776410c867Schristos or $2,$30 23786410c867Schristos addu $24,$25 23796410c867Schristos#endif 23806410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 23816410c867Schristos xor $22,$8 23826410c867Schristos addu $7,$31 # 61 23836410c867Schristos rotr $6,$24,27 23846410c867Schristos xor $22,$14 23856410c867Schristos xor $25,$2,$3 23866410c867Schristos addu $7,$6 23876410c867Schristos xor $22,$19 23886410c867Schristos xor $25,$1 23896410c867Schristos addu $7,$21 23906410c867Schristos rotr $22,$22,31 23916410c867Schristos rotr $1,$1,2 23926410c867Schristos addu $7,$25 23936410c867Schristos#else 23946410c867Schristos xor $22,$8 23956410c867Schristos sll $25,$24,5 # 61 23966410c867Schristos addu $7,$31 23976410c867Schristos srl $6,$24,27 23986410c867Schristos addu $7,$25 23996410c867Schristos xor $22,$14 24006410c867Schristos xor $25,$2,$3 24016410c867Schristos addu $7,$6 24026410c867Schristos xor $22,$19 24036410c867Schristos sll $30,$1,30 24046410c867Schristos xor $25,$1 24056410c867Schristos srl $6,$22,31 24066410c867Schristos addu $22,$22 24076410c867Schristos srl $1,$1,2 24086410c867Schristos addu $7,$21 24096410c867Schristos or $22,$6 24106410c867Schristos or $1,$30 24116410c867Schristos addu $7,$25 24126410c867Schristos#endif 24136410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 24146410c867Schristos xor $23,$9 24156410c867Schristos addu $3,$31 # 62 24166410c867Schristos rotr $6,$7,27 24176410c867Schristos xor $23,$15 24186410c867Schristos xor $25,$1,$2 24196410c867Schristos addu $3,$6 24206410c867Schristos xor $23,$20 24216410c867Schristos xor $25,$24 24226410c867Schristos addu $3,$22 24236410c867Schristos rotr $23,$23,31 24246410c867Schristos rotr $24,$24,2 24256410c867Schristos addu $3,$25 24266410c867Schristos#else 24276410c867Schristos xor $23,$9 24286410c867Schristos sll $25,$7,5 # 62 24296410c867Schristos addu $3,$31 24306410c867Schristos srl $6,$7,27 24316410c867Schristos addu $3,$25 24326410c867Schristos xor $23,$15 24336410c867Schristos xor $25,$1,$2 24346410c867Schristos addu $3,$6 24356410c867Schristos xor $23,$20 24366410c867Schristos sll $30,$24,30 24376410c867Schristos xor $25,$24 24386410c867Schristos srl $6,$23,31 24396410c867Schristos addu $23,$23 24406410c867Schristos srl $24,$24,2 24416410c867Schristos addu $3,$22 24426410c867Schristos or $23,$6 24436410c867Schristos or $24,$30 24446410c867Schristos addu $3,$25 24456410c867Schristos#endif 24466410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 24476410c867Schristos xor $8,$10 24486410c867Schristos addu $2,$31 # 63 24496410c867Schristos rotr $6,$3,27 24506410c867Schristos xor $8,$16 24516410c867Schristos xor $25,$24,$1 24526410c867Schristos addu $2,$6 24536410c867Schristos xor $8,$21 24546410c867Schristos xor $25,$7 24556410c867Schristos addu $2,$23 24566410c867Schristos rotr $8,$8,31 24576410c867Schristos rotr $7,$7,2 24586410c867Schristos addu $2,$25 24596410c867Schristos#else 24606410c867Schristos xor $8,$10 24616410c867Schristos sll $25,$3,5 # 63 24626410c867Schristos addu $2,$31 24636410c867Schristos srl $6,$3,27 24646410c867Schristos addu $2,$25 24656410c867Schristos xor $8,$16 24666410c867Schristos xor $25,$24,$1 24676410c867Schristos addu $2,$6 24686410c867Schristos xor $8,$21 24696410c867Schristos sll $30,$7,30 24706410c867Schristos xor $25,$7 24716410c867Schristos srl $6,$8,31 24726410c867Schristos addu $8,$8 24736410c867Schristos srl $7,$7,2 24746410c867Schristos addu $2,$23 24756410c867Schristos or $8,$6 24766410c867Schristos or $7,$30 24776410c867Schristos addu $2,$25 24786410c867Schristos#endif 24796410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 24806410c867Schristos xor $9,$11 24816410c867Schristos addu $1,$31 # 64 24826410c867Schristos rotr $6,$2,27 24836410c867Schristos xor $9,$17 24846410c867Schristos xor $25,$7,$24 24856410c867Schristos addu $1,$6 24866410c867Schristos xor $9,$22 24876410c867Schristos xor $25,$3 24886410c867Schristos addu $1,$8 24896410c867Schristos rotr $9,$9,31 24906410c867Schristos rotr $3,$3,2 24916410c867Schristos addu $1,$25 24926410c867Schristos#else 24936410c867Schristos xor $9,$11 24946410c867Schristos sll $25,$2,5 # 64 24956410c867Schristos addu $1,$31 24966410c867Schristos srl $6,$2,27 24976410c867Schristos addu $1,$25 24986410c867Schristos xor $9,$17 24996410c867Schristos xor $25,$7,$24 25006410c867Schristos addu $1,$6 25016410c867Schristos xor $9,$22 25026410c867Schristos sll $30,$3,30 25036410c867Schristos xor $25,$3 25046410c867Schristos srl $6,$9,31 25056410c867Schristos addu $9,$9 25066410c867Schristos srl $3,$3,2 25076410c867Schristos addu $1,$8 25086410c867Schristos or $9,$6 25096410c867Schristos or $3,$30 25106410c867Schristos addu $1,$25 25116410c867Schristos#endif 25126410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 25136410c867Schristos xor $10,$12 25146410c867Schristos addu $24,$31 # 65 25156410c867Schristos rotr $6,$1,27 25166410c867Schristos xor $10,$18 25176410c867Schristos xor $25,$3,$7 25186410c867Schristos addu $24,$6 25196410c867Schristos xor $10,$23 25206410c867Schristos xor $25,$2 25216410c867Schristos addu $24,$9 25226410c867Schristos rotr $10,$10,31 25236410c867Schristos rotr $2,$2,2 25246410c867Schristos addu $24,$25 25256410c867Schristos#else 25266410c867Schristos xor $10,$12 25276410c867Schristos sll $25,$1,5 # 65 25286410c867Schristos addu $24,$31 25296410c867Schristos srl $6,$1,27 25306410c867Schristos addu $24,$25 25316410c867Schristos xor $10,$18 25326410c867Schristos xor $25,$3,$7 25336410c867Schristos addu $24,$6 25346410c867Schristos xor $10,$23 25356410c867Schristos sll $30,$2,30 25366410c867Schristos xor $25,$2 25376410c867Schristos srl $6,$10,31 25386410c867Schristos addu $10,$10 25396410c867Schristos srl $2,$2,2 25406410c867Schristos addu $24,$9 25416410c867Schristos or $10,$6 25426410c867Schristos or $2,$30 25436410c867Schristos addu $24,$25 25446410c867Schristos#endif 25456410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 25466410c867Schristos xor $11,$13 25476410c867Schristos addu $7,$31 # 66 25486410c867Schristos rotr $6,$24,27 25496410c867Schristos xor $11,$19 25506410c867Schristos xor $25,$2,$3 25516410c867Schristos addu $7,$6 25526410c867Schristos xor $11,$8 25536410c867Schristos xor $25,$1 25546410c867Schristos addu $7,$10 25556410c867Schristos rotr $11,$11,31 25566410c867Schristos rotr $1,$1,2 25576410c867Schristos addu $7,$25 25586410c867Schristos#else 25596410c867Schristos xor $11,$13 25606410c867Schristos sll $25,$24,5 # 66 25616410c867Schristos addu $7,$31 25626410c867Schristos srl $6,$24,27 25636410c867Schristos addu $7,$25 25646410c867Schristos xor $11,$19 25656410c867Schristos xor $25,$2,$3 25666410c867Schristos addu $7,$6 25676410c867Schristos xor $11,$8 25686410c867Schristos sll $30,$1,30 25696410c867Schristos xor $25,$1 25706410c867Schristos srl $6,$11,31 25716410c867Schristos addu $11,$11 25726410c867Schristos srl $1,$1,2 25736410c867Schristos addu $7,$10 25746410c867Schristos or $11,$6 25756410c867Schristos or $1,$30 25766410c867Schristos addu $7,$25 25776410c867Schristos#endif 25786410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 25796410c867Schristos xor $12,$14 25806410c867Schristos addu $3,$31 # 67 25816410c867Schristos rotr $6,$7,27 25826410c867Schristos xor $12,$20 25836410c867Schristos xor $25,$1,$2 25846410c867Schristos addu $3,$6 25856410c867Schristos xor $12,$9 25866410c867Schristos xor $25,$24 25876410c867Schristos addu $3,$11 25886410c867Schristos rotr $12,$12,31 25896410c867Schristos rotr $24,$24,2 25906410c867Schristos addu $3,$25 25916410c867Schristos#else 25926410c867Schristos xor $12,$14 25936410c867Schristos sll $25,$7,5 # 67 25946410c867Schristos addu $3,$31 25956410c867Schristos srl $6,$7,27 25966410c867Schristos addu $3,$25 25976410c867Schristos xor $12,$20 25986410c867Schristos xor $25,$1,$2 25996410c867Schristos addu $3,$6 26006410c867Schristos xor $12,$9 26016410c867Schristos sll $30,$24,30 26026410c867Schristos xor $25,$24 26036410c867Schristos srl $6,$12,31 26046410c867Schristos addu $12,$12 26056410c867Schristos srl $24,$24,2 26066410c867Schristos addu $3,$11 26076410c867Schristos or $12,$6 26086410c867Schristos or $24,$30 26096410c867Schristos addu $3,$25 26106410c867Schristos#endif 26116410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 26126410c867Schristos xor $13,$15 26136410c867Schristos addu $2,$31 # 68 26146410c867Schristos rotr $6,$3,27 26156410c867Schristos xor $13,$21 26166410c867Schristos xor $25,$24,$1 26176410c867Schristos addu $2,$6 26186410c867Schristos xor $13,$10 26196410c867Schristos xor $25,$7 26206410c867Schristos addu $2,$12 26216410c867Schristos rotr $13,$13,31 26226410c867Schristos rotr $7,$7,2 26236410c867Schristos addu $2,$25 26246410c867Schristos#else 26256410c867Schristos xor $13,$15 26266410c867Schristos sll $25,$3,5 # 68 26276410c867Schristos addu $2,$31 26286410c867Schristos srl $6,$3,27 26296410c867Schristos addu $2,$25 26306410c867Schristos xor $13,$21 26316410c867Schristos xor $25,$24,$1 26326410c867Schristos addu $2,$6 26336410c867Schristos xor $13,$10 26346410c867Schristos sll $30,$7,30 26356410c867Schristos xor $25,$7 26366410c867Schristos srl $6,$13,31 26376410c867Schristos addu $13,$13 26386410c867Schristos srl $7,$7,2 26396410c867Schristos addu $2,$12 26406410c867Schristos or $13,$6 26416410c867Schristos or $7,$30 26426410c867Schristos addu $2,$25 26436410c867Schristos#endif 26446410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 26456410c867Schristos xor $14,$16 26466410c867Schristos addu $1,$31 # 69 26476410c867Schristos rotr $6,$2,27 26486410c867Schristos xor $14,$22 26496410c867Schristos xor $25,$7,$24 26506410c867Schristos addu $1,$6 26516410c867Schristos xor $14,$11 26526410c867Schristos xor $25,$3 26536410c867Schristos addu $1,$13 26546410c867Schristos rotr $14,$14,31 26556410c867Schristos rotr $3,$3,2 26566410c867Schristos addu $1,$25 26576410c867Schristos#else 26586410c867Schristos xor $14,$16 26596410c867Schristos sll $25,$2,5 # 69 26606410c867Schristos addu $1,$31 26616410c867Schristos srl $6,$2,27 26626410c867Schristos addu $1,$25 26636410c867Schristos xor $14,$22 26646410c867Schristos xor $25,$7,$24 26656410c867Schristos addu $1,$6 26666410c867Schristos xor $14,$11 26676410c867Schristos sll $30,$3,30 26686410c867Schristos xor $25,$3 26696410c867Schristos srl $6,$14,31 26706410c867Schristos addu $14,$14 26716410c867Schristos srl $3,$3,2 26726410c867Schristos addu $1,$13 26736410c867Schristos or $14,$6 26746410c867Schristos or $3,$30 26756410c867Schristos addu $1,$25 26766410c867Schristos#endif 26776410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 26786410c867Schristos xor $15,$17 26796410c867Schristos addu $24,$31 # 70 26806410c867Schristos rotr $6,$1,27 26816410c867Schristos xor $15,$23 26826410c867Schristos xor $25,$3,$7 26836410c867Schristos addu $24,$6 26846410c867Schristos xor $15,$12 26856410c867Schristos xor $25,$2 26866410c867Schristos addu $24,$14 26876410c867Schristos rotr $15,$15,31 26886410c867Schristos rotr $2,$2,2 26896410c867Schristos addu $24,$25 26906410c867Schristos#else 26916410c867Schristos xor $15,$17 26926410c867Schristos sll $25,$1,5 # 70 26936410c867Schristos addu $24,$31 26946410c867Schristos srl $6,$1,27 26956410c867Schristos addu $24,$25 26966410c867Schristos xor $15,$23 26976410c867Schristos xor $25,$3,$7 26986410c867Schristos addu $24,$6 26996410c867Schristos xor $15,$12 27006410c867Schristos sll $30,$2,30 27016410c867Schristos xor $25,$2 27026410c867Schristos srl $6,$15,31 27036410c867Schristos addu $15,$15 27046410c867Schristos srl $2,$2,2 27056410c867Schristos addu $24,$14 27066410c867Schristos or $15,$6 27076410c867Schristos or $2,$30 27086410c867Schristos addu $24,$25 27096410c867Schristos#endif 27106410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 27116410c867Schristos xor $16,$18 27126410c867Schristos addu $7,$31 # 71 27136410c867Schristos rotr $6,$24,27 27146410c867Schristos xor $16,$8 27156410c867Schristos xor $25,$2,$3 27166410c867Schristos addu $7,$6 27176410c867Schristos xor $16,$13 27186410c867Schristos xor $25,$1 27196410c867Schristos addu $7,$15 27206410c867Schristos rotr $16,$16,31 27216410c867Schristos rotr $1,$1,2 27226410c867Schristos addu $7,$25 27236410c867Schristos#else 27246410c867Schristos xor $16,$18 27256410c867Schristos sll $25,$24,5 # 71 27266410c867Schristos addu $7,$31 27276410c867Schristos srl $6,$24,27 27286410c867Schristos addu $7,$25 27296410c867Schristos xor $16,$8 27306410c867Schristos xor $25,$2,$3 27316410c867Schristos addu $7,$6 27326410c867Schristos xor $16,$13 27336410c867Schristos sll $30,$1,30 27346410c867Schristos xor $25,$1 27356410c867Schristos srl $6,$16,31 27366410c867Schristos addu $16,$16 27376410c867Schristos srl $1,$1,2 27386410c867Schristos addu $7,$15 27396410c867Schristos or $16,$6 27406410c867Schristos or $1,$30 27416410c867Schristos addu $7,$25 27426410c867Schristos#endif 27436410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 27446410c867Schristos xor $17,$19 27456410c867Schristos addu $3,$31 # 72 27466410c867Schristos rotr $6,$7,27 27476410c867Schristos xor $17,$9 27486410c867Schristos xor $25,$1,$2 27496410c867Schristos addu $3,$6 27506410c867Schristos xor $17,$14 27516410c867Schristos xor $25,$24 27526410c867Schristos addu $3,$16 27536410c867Schristos rotr $17,$17,31 27546410c867Schristos rotr $24,$24,2 27556410c867Schristos addu $3,$25 27566410c867Schristos#else 27576410c867Schristos xor $17,$19 27586410c867Schristos sll $25,$7,5 # 72 27596410c867Schristos addu $3,$31 27606410c867Schristos srl $6,$7,27 27616410c867Schristos addu $3,$25 27626410c867Schristos xor $17,$9 27636410c867Schristos xor $25,$1,$2 27646410c867Schristos addu $3,$6 27656410c867Schristos xor $17,$14 27666410c867Schristos sll $30,$24,30 27676410c867Schristos xor $25,$24 27686410c867Schristos srl $6,$17,31 27696410c867Schristos addu $17,$17 27706410c867Schristos srl $24,$24,2 27716410c867Schristos addu $3,$16 27726410c867Schristos or $17,$6 27736410c867Schristos or $24,$30 27746410c867Schristos addu $3,$25 27756410c867Schristos#endif 27766410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 27776410c867Schristos xor $18,$20 27786410c867Schristos addu $2,$31 # 73 27796410c867Schristos rotr $6,$3,27 27806410c867Schristos xor $18,$10 27816410c867Schristos xor $25,$24,$1 27826410c867Schristos addu $2,$6 27836410c867Schristos xor $18,$15 27846410c867Schristos xor $25,$7 27856410c867Schristos addu $2,$17 27866410c867Schristos rotr $18,$18,31 27876410c867Schristos rotr $7,$7,2 27886410c867Schristos addu $2,$25 27896410c867Schristos#else 27906410c867Schristos xor $18,$20 27916410c867Schristos sll $25,$3,5 # 73 27926410c867Schristos addu $2,$31 27936410c867Schristos srl $6,$3,27 27946410c867Schristos addu $2,$25 27956410c867Schristos xor $18,$10 27966410c867Schristos xor $25,$24,$1 27976410c867Schristos addu $2,$6 27986410c867Schristos xor $18,$15 27996410c867Schristos sll $30,$7,30 28006410c867Schristos xor $25,$7 28016410c867Schristos srl $6,$18,31 28026410c867Schristos addu $18,$18 28036410c867Schristos srl $7,$7,2 28046410c867Schristos addu $2,$17 28056410c867Schristos or $18,$6 28066410c867Schristos or $7,$30 28076410c867Schristos addu $2,$25 28086410c867Schristos#endif 28096410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 28106410c867Schristos xor $19,$21 28116410c867Schristos addu $1,$31 # 74 28126410c867Schristos rotr $6,$2,27 28136410c867Schristos xor $19,$11 28146410c867Schristos xor $25,$7,$24 28156410c867Schristos addu $1,$6 28166410c867Schristos xor $19,$16 28176410c867Schristos xor $25,$3 28186410c867Schristos addu $1,$18 28196410c867Schristos rotr $19,$19,31 28206410c867Schristos rotr $3,$3,2 28216410c867Schristos addu $1,$25 28226410c867Schristos#else 28236410c867Schristos xor $19,$21 28246410c867Schristos sll $25,$2,5 # 74 28256410c867Schristos addu $1,$31 28266410c867Schristos srl $6,$2,27 28276410c867Schristos addu $1,$25 28286410c867Schristos xor $19,$11 28296410c867Schristos xor $25,$7,$24 28306410c867Schristos addu $1,$6 28316410c867Schristos xor $19,$16 28326410c867Schristos sll $30,$3,30 28336410c867Schristos xor $25,$3 28346410c867Schristos srl $6,$19,31 28356410c867Schristos addu $19,$19 28366410c867Schristos srl $3,$3,2 28376410c867Schristos addu $1,$18 28386410c867Schristos or $19,$6 28396410c867Schristos or $3,$30 28406410c867Schristos addu $1,$25 28416410c867Schristos#endif 28426410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 28436410c867Schristos xor $20,$22 28446410c867Schristos addu $24,$31 # 75 28456410c867Schristos rotr $6,$1,27 28466410c867Schristos xor $20,$12 28476410c867Schristos xor $25,$3,$7 28486410c867Schristos addu $24,$6 28496410c867Schristos xor $20,$17 28506410c867Schristos xor $25,$2 28516410c867Schristos addu $24,$19 28526410c867Schristos rotr $20,$20,31 28536410c867Schristos rotr $2,$2,2 28546410c867Schristos addu $24,$25 28556410c867Schristos#else 28566410c867Schristos xor $20,$22 28576410c867Schristos sll $25,$1,5 # 75 28586410c867Schristos addu $24,$31 28596410c867Schristos srl $6,$1,27 28606410c867Schristos addu $24,$25 28616410c867Schristos xor $20,$12 28626410c867Schristos xor $25,$3,$7 28636410c867Schristos addu $24,$6 28646410c867Schristos xor $20,$17 28656410c867Schristos sll $30,$2,30 28666410c867Schristos xor $25,$2 28676410c867Schristos srl $6,$20,31 28686410c867Schristos addu $20,$20 28696410c867Schristos srl $2,$2,2 28706410c867Schristos addu $24,$19 28716410c867Schristos or $20,$6 28726410c867Schristos or $2,$30 28736410c867Schristos addu $24,$25 28746410c867Schristos#endif 28756410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 28766410c867Schristos xor $21,$23 28776410c867Schristos addu $7,$31 # 76 28786410c867Schristos rotr $6,$24,27 28796410c867Schristos xor $21,$13 28806410c867Schristos xor $25,$2,$3 28816410c867Schristos addu $7,$6 28826410c867Schristos xor $21,$18 28836410c867Schristos xor $25,$1 28846410c867Schristos addu $7,$20 28856410c867Schristos rotr $21,$21,31 28866410c867Schristos rotr $1,$1,2 28876410c867Schristos addu $7,$25 28886410c867Schristos#else 28896410c867Schristos xor $21,$23 28906410c867Schristos sll $25,$24,5 # 76 28916410c867Schristos addu $7,$31 28926410c867Schristos srl $6,$24,27 28936410c867Schristos addu $7,$25 28946410c867Schristos xor $21,$13 28956410c867Schristos xor $25,$2,$3 28966410c867Schristos addu $7,$6 28976410c867Schristos xor $21,$18 28986410c867Schristos sll $30,$1,30 28996410c867Schristos xor $25,$1 29006410c867Schristos srl $6,$21,31 29016410c867Schristos addu $21,$21 29026410c867Schristos srl $1,$1,2 29036410c867Schristos addu $7,$20 29046410c867Schristos or $21,$6 29056410c867Schristos or $1,$30 29066410c867Schristos addu $7,$25 29076410c867Schristos#endif 29086410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 29096410c867Schristos xor $22,$8 29106410c867Schristos addu $3,$31 # 77 29116410c867Schristos rotr $6,$7,27 29126410c867Schristos xor $22,$14 29136410c867Schristos xor $25,$1,$2 29146410c867Schristos addu $3,$6 29156410c867Schristos xor $22,$19 29166410c867Schristos xor $25,$24 29176410c867Schristos addu $3,$21 29186410c867Schristos rotr $22,$22,31 29196410c867Schristos rotr $24,$24,2 29206410c867Schristos addu $3,$25 29216410c867Schristos#else 29226410c867Schristos xor $22,$8 29236410c867Schristos sll $25,$7,5 # 77 29246410c867Schristos addu $3,$31 29256410c867Schristos srl $6,$7,27 29266410c867Schristos addu $3,$25 29276410c867Schristos xor $22,$14 29286410c867Schristos xor $25,$1,$2 29296410c867Schristos addu $3,$6 29306410c867Schristos xor $22,$19 29316410c867Schristos sll $30,$24,30 29326410c867Schristos xor $25,$24 29336410c867Schristos srl $6,$22,31 29346410c867Schristos addu $22,$22 29356410c867Schristos srl $24,$24,2 29366410c867Schristos addu $3,$21 29376410c867Schristos or $22,$6 29386410c867Schristos or $24,$30 29396410c867Schristos addu $3,$25 29406410c867Schristos#endif 29416410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 29426410c867Schristos xor $23,$9 29436410c867Schristos addu $2,$31 # 78 29446410c867Schristos rotr $6,$3,27 29456410c867Schristos xor $23,$15 29466410c867Schristos xor $25,$24,$1 29476410c867Schristos addu $2,$6 29486410c867Schristos xor $23,$20 29496410c867Schristos xor $25,$7 29506410c867Schristos addu $2,$22 29516410c867Schristos rotr $23,$23,31 29526410c867Schristos rotr $7,$7,2 29536410c867Schristos addu $2,$25 29546410c867Schristos#else 29556410c867Schristos xor $23,$9 29566410c867Schristos sll $25,$3,5 # 78 29576410c867Schristos addu $2,$31 29586410c867Schristos srl $6,$3,27 29596410c867Schristos addu $2,$25 29606410c867Schristos xor $23,$15 29616410c867Schristos xor $25,$24,$1 29626410c867Schristos addu $2,$6 29636410c867Schristos xor $23,$20 29646410c867Schristos sll $30,$7,30 29656410c867Schristos xor $25,$7 29666410c867Schristos srl $6,$23,31 29676410c867Schristos addu $23,$23 29686410c867Schristos srl $7,$7,2 29696410c867Schristos addu $2,$22 29706410c867Schristos or $23,$6 29716410c867Schristos or $7,$30 29726410c867Schristos addu $2,$25 29736410c867Schristos#endif 29746410c867Schristos#if defined(_MIPS_ARCH_MIPS32R2) || defined(_MIPS_ARCH_MIPS64R2) 29756410c867Schristos lw $8,0($4) 29766410c867Schristos addu $1,$31 # 79 29776410c867Schristos lw $9,4($4) 29786410c867Schristos rotr $6,$2,27 29796410c867Schristos lw $10,8($4) 29806410c867Schristos xor $25,$7,$24 29816410c867Schristos addu $1,$6 29826410c867Schristos lw $11,12($4) 29836410c867Schristos xor $25,$3 29846410c867Schristos addu $1,$23 29856410c867Schristos lw $12,16($4) 29866410c867Schristos rotr $3,$3,2 29876410c867Schristos addu $1,$25 29886410c867Schristos#else 29896410c867Schristos lw $8,0($4) 29906410c867Schristos sll $25,$2,5 # 79 29916410c867Schristos addu $1,$31 29926410c867Schristos lw $9,4($4) 29936410c867Schristos srl $6,$2,27 29946410c867Schristos addu $1,$25 29956410c867Schristos lw $10,8($4) 29966410c867Schristos xor $25,$7,$24 29976410c867Schristos addu $1,$6 29986410c867Schristos lw $11,12($4) 29996410c867Schristos sll $30,$3,30 30006410c867Schristos xor $25,$3 30016410c867Schristos lw $12,16($4) 30026410c867Schristos srl $3,$3,2 30036410c867Schristos addu $1,$23 30046410c867Schristos or $3,$30 30056410c867Schristos addu $1,$25 30066410c867Schristos#endif 3007*e0ea3921Schristos daddu $5,64 30086410c867Schristos ld $6,0($29) 30096410c867Schristos 30106410c867Schristos addu $1,$8 30116410c867Schristos addu $2,$9 30126410c867Schristos sw $1,0($4) 30136410c867Schristos addu $3,$10 30146410c867Schristos addu $7,$11 30156410c867Schristos sw $2,4($4) 30166410c867Schristos addu $24,$12 30176410c867Schristos sw $3,8($4) 30186410c867Schristos sw $7,12($4) 30196410c867Schristos sw $24,16($4) 30206410c867Schristos .set noreorder 30216410c867Schristos bne $5,$6,.Loop 30226410c867Schristos nop 30236410c867Schristos 30246410c867Schristos .set noreorder 30256410c867Schristos ld $31,(16-1)*8($29) 30266410c867Schristos ld $30,(16-2)*8($29) 30276410c867Schristos ld $23,(16-3)*8($29) 30286410c867Schristos ld $22,(16-4)*8($29) 30296410c867Schristos ld $21,(16-5)*8($29) 30306410c867Schristos ld $20,(16-6)*8($29) 30316410c867Schristos ld $19,(16-7)*8($29) 30326410c867Schristos ld $18,(16-8)*8($29) 30336410c867Schristos ld $17,(16-9)*8($29) 30346410c867Schristos ld $16,(16-10)*8($29) 30356410c867Schristos jr $31 3036*e0ea3921Schristos daddu $29,16*8 30376410c867Schristos.end sha1_block_data_order 30386410c867Schristos.rdata 30396410c867Schristos.asciiz "SHA1 for MIPS, CRYPTOGAMS by <appro@openssl.org>" 3040