1 1.1 christos #if !(defined (__mips_isa_rev) && (__mips_isa_rev >= 6)) 2 1.1 christos .set mips2 3 1.1 christos #endif 4 1.1 christos #include "mips_arch.h" 5 1.1 christos 6 1.1 christos #if defined(_MIPS_ARCH_MIPS64R6) 7 1.1 christos # define ddivu(rs,rt) 8 1.1 christos # define mfqt(rd,rs,rt) ddivu rd,rs,rt 9 1.1 christos # define mfrm(rd,rs,rt) dmodu rd,rs,rt 10 1.1 christos #elif defined(_MIPS_ARCH_MIPS32R6) 11 1.1 christos # define divu(rs,rt) 12 1.1 christos # define mfqt(rd,rs,rt) divu rd,rs,rt 13 1.1 christos # define mfrm(rd,rs,rt) modu rd,rs,rt 14 1.1 christos #else 15 1.1 christos # define divu(rs,rt) divu $0,rs,rt 16 1.1 christos # define mfqt(rd,rs,rt) mflo rd 17 1.1 christos # define mfrm(rd,rs,rt) mfhi rd 18 1.1 christos #endif 19 1.1 christos 20 1.1 christos .rdata 21 1.1 christos .asciiz "mips3.s, Version 1.2" 22 1.1 christos .asciiz "MIPS II/III/IV ISA artwork by Andy Polyakov <appro (at) fy.chalmers.se>" 23 1.1 christos 24 1.1 christos .text 25 1.1 christos .set noat 26 1.1 christos 27 1.1 christos .align 5 28 1.1 christos .globl bn_mul_add_words 29 1.1 christos .ent bn_mul_add_words 30 1.1 christos bn_mul_add_words: 31 1.1 christos .set noreorder 32 1.1 christos bgtz $6,bn_mul_add_words_internal 33 1.1 christos move $2,$0 34 1.1 christos jr $31 35 1.1 christos move $4,$2 36 1.1 christos .end bn_mul_add_words 37 1.1 christos 38 1.1 christos .align 5 39 1.1 christos .ent bn_mul_add_words_internal 40 1.1 christos bn_mul_add_words_internal: 41 1.1 christos .set reorder 42 1.1 christos li $3,-4 43 1.1 christos and $8,$6,$3 44 1.1 christos beqz $8,.L_bn_mul_add_words_tail 45 1.1 christos 46 1.1 christos .L_bn_mul_add_words_loop: 47 1.1 christos lw $12,0($5) 48 1.1 christos multu ($12,$7) 49 1.1 christos lw $13,0($4) 50 1.1 christos lw $14,4($5) 51 1.1 christos lw $15,4($4) 52 1.1 christos lw $8,2*4($5) 53 1.1 christos lw $9,2*4($4) 54 1.1 christos addu $13,$2 55 1.1 christos sltu $2,$13,$2 # All manuals say it "compares 32-bit 56 1.1 christos # values", but it seems to work fine 57 1.1 christos # even on 64-bit registers. 58 1.1 christos mflo ($1,$12,$7) 59 1.1 christos mfhi ($12,$12,$7) 60 1.1 christos addu $13,$1 61 1.1 christos addu $2,$12 62 1.1 christos multu ($14,$7) 63 1.1 christos sltu $1,$13,$1 64 1.1 christos sw $13,0($4) 65 1.1 christos addu $2,$1 66 1.1 christos 67 1.1 christos lw $10,3*4($5) 68 1.1 christos lw $11,3*4($4) 69 1.1 christos addu $15,$2 70 1.1 christos sltu $2,$15,$2 71 1.1 christos mflo ($1,$14,$7) 72 1.1 christos mfhi ($14,$14,$7) 73 1.1 christos addu $15,$1 74 1.1 christos addu $2,$14 75 1.1 christos multu ($8,$7) 76 1.1 christos sltu $1,$15,$1 77 1.1 christos sw $15,4($4) 78 1.1 christos addu $2,$1 79 1.1 christos 80 1.1 christos subu $6,4 81 1.1 christos addu $4,4*4 82 1.1 christos addu $5,4*4 83 1.1 christos addu $9,$2 84 1.1 christos sltu $2,$9,$2 85 1.1 christos mflo ($1,$8,$7) 86 1.1 christos mfhi ($8,$8,$7) 87 1.1 christos addu $9,$1 88 1.1 christos addu $2,$8 89 1.1 christos multu ($10,$7) 90 1.1 christos sltu $1,$9,$1 91 1.1 christos sw $9,-2*4($4) 92 1.1 christos addu $2,$1 93 1.1 christos 94 1.1 christos 95 1.1 christos and $8,$6,$3 96 1.1 christos addu $11,$2 97 1.1 christos sltu $2,$11,$2 98 1.1 christos mflo ($1,$10,$7) 99 1.1 christos mfhi ($10,$10,$7) 100 1.1 christos addu $11,$1 101 1.1 christos addu $2,$10 102 1.1 christos sltu $1,$11,$1 103 1.1 christos sw $11,-4($4) 104 1.1 christos .set noreorder 105 1.1 christos bgtz $8,.L_bn_mul_add_words_loop 106 1.1 christos addu $2,$1 107 1.1 christos 108 1.1 christos beqz $6,.L_bn_mul_add_words_return 109 1.1 christos nop 110 1.1 christos 111 1.1 christos .L_bn_mul_add_words_tail: 112 1.1 christos .set reorder 113 1.1 christos lw $12,0($5) 114 1.1 christos multu ($12,$7) 115 1.1 christos lw $13,0($4) 116 1.1 christos subu $6,1 117 1.1 christos addu $13,$2 118 1.1 christos sltu $2,$13,$2 119 1.1 christos mflo ($1,$12,$7) 120 1.1 christos mfhi ($12,$12,$7) 121 1.1 christos addu $13,$1 122 1.1 christos addu $2,$12 123 1.1 christos sltu $1,$13,$1 124 1.1 christos sw $13,0($4) 125 1.1 christos addu $2,$1 126 1.1 christos beqz $6,.L_bn_mul_add_words_return 127 1.1 christos 128 1.1 christos lw $12,4($5) 129 1.1 christos multu ($12,$7) 130 1.1 christos lw $13,4($4) 131 1.1 christos subu $6,1 132 1.1 christos addu $13,$2 133 1.1 christos sltu $2,$13,$2 134 1.1 christos mflo ($1,$12,$7) 135 1.1 christos mfhi ($12,$12,$7) 136 1.1 christos addu $13,$1 137 1.1 christos addu $2,$12 138 1.1 christos sltu $1,$13,$1 139 1.1 christos sw $13,4($4) 140 1.1 christos addu $2,$1 141 1.1 christos beqz $6,.L_bn_mul_add_words_return 142 1.1 christos 143 1.1 christos lw $12,2*4($5) 144 1.1 christos multu ($12,$7) 145 1.1 christos lw $13,2*4($4) 146 1.1 christos addu $13,$2 147 1.1 christos sltu $2,$13,$2 148 1.1 christos mflo ($1,$12,$7) 149 1.1 christos mfhi ($12,$12,$7) 150 1.1 christos addu $13,$1 151 1.1 christos addu $2,$12 152 1.1 christos sltu $1,$13,$1 153 1.1 christos sw $13,2*4($4) 154 1.1 christos addu $2,$1 155 1.1 christos 156 1.1 christos .L_bn_mul_add_words_return: 157 1.1 christos .set noreorder 158 1.1 christos jr $31 159 1.1 christos move $4,$2 160 1.1 christos .end bn_mul_add_words_internal 161 1.1 christos 162 1.1 christos .align 5 163 1.1 christos .globl bn_mul_words 164 1.1 christos .ent bn_mul_words 165 1.1 christos bn_mul_words: 166 1.1 christos .set noreorder 167 1.1 christos bgtz $6,bn_mul_words_internal 168 1.1 christos move $2,$0 169 1.1 christos jr $31 170 1.1 christos move $4,$2 171 1.1 christos .end bn_mul_words 172 1.1 christos 173 1.1 christos .align 5 174 1.1 christos .ent bn_mul_words_internal 175 1.1 christos bn_mul_words_internal: 176 1.1 christos .set reorder 177 1.1 christos li $3,-4 178 1.1 christos and $8,$6,$3 179 1.1 christos beqz $8,.L_bn_mul_words_tail 180 1.1 christos 181 1.1 christos .L_bn_mul_words_loop: 182 1.1 christos lw $12,0($5) 183 1.1 christos multu ($12,$7) 184 1.1 christos lw $14,4($5) 185 1.1 christos lw $8,2*4($5) 186 1.1 christos lw $10,3*4($5) 187 1.1 christos mflo ($1,$12,$7) 188 1.1 christos mfhi ($12,$12,$7) 189 1.1 christos addu $2,$1 190 1.1 christos sltu $13,$2,$1 191 1.1 christos multu ($14,$7) 192 1.1 christos sw $2,0($4) 193 1.1 christos addu $2,$13,$12 194 1.1 christos 195 1.1 christos subu $6,4 196 1.1 christos addu $4,4*4 197 1.1 christos addu $5,4*4 198 1.1 christos mflo ($1,$14,$7) 199 1.1 christos mfhi ($14,$14,$7) 200 1.1 christos addu $2,$1 201 1.1 christos sltu $15,$2,$1 202 1.1 christos multu ($8,$7) 203 1.1 christos sw $2,-3*4($4) 204 1.1 christos addu $2,$15,$14 205 1.1 christos 206 1.1 christos mflo ($1,$8,$7) 207 1.1 christos mfhi ($8,$8,$7) 208 1.1 christos addu $2,$1 209 1.1 christos sltu $9,$2,$1 210 1.1 christos multu ($10,$7) 211 1.1 christos sw $2,-2*4($4) 212 1.1 christos addu $2,$9,$8 213 1.1 christos 214 1.1 christos and $8,$6,$3 215 1.1 christos mflo ($1,$10,$7) 216 1.1 christos mfhi ($10,$10,$7) 217 1.1 christos addu $2,$1 218 1.1 christos sltu $11,$2,$1 219 1.1 christos sw $2,-4($4) 220 1.1 christos .set noreorder 221 1.1 christos bgtz $8,.L_bn_mul_words_loop 222 1.1 christos addu $2,$11,$10 223 1.1 christos 224 1.1 christos beqz $6,.L_bn_mul_words_return 225 1.1 christos nop 226 1.1 christos 227 1.1 christos .L_bn_mul_words_tail: 228 1.1 christos .set reorder 229 1.1 christos lw $12,0($5) 230 1.1 christos multu ($12,$7) 231 1.1 christos subu $6,1 232 1.1 christos mflo ($1,$12,$7) 233 1.1 christos mfhi ($12,$12,$7) 234 1.1 christos addu $2,$1 235 1.1 christos sltu $13,$2,$1 236 1.1 christos sw $2,0($4) 237 1.1 christos addu $2,$13,$12 238 1.1 christos beqz $6,.L_bn_mul_words_return 239 1.1 christos 240 1.1 christos lw $12,4($5) 241 1.1 christos multu ($12,$7) 242 1.1 christos subu $6,1 243 1.1 christos mflo ($1,$12,$7) 244 1.1 christos mfhi ($12,$12,$7) 245 1.1 christos addu $2,$1 246 1.1 christos sltu $13,$2,$1 247 1.1 christos sw $2,4($4) 248 1.1 christos addu $2,$13,$12 249 1.1 christos beqz $6,.L_bn_mul_words_return 250 1.1 christos 251 1.1 christos lw $12,2*4($5) 252 1.1 christos multu ($12,$7) 253 1.1 christos mflo ($1,$12,$7) 254 1.1 christos mfhi ($12,$12,$7) 255 1.1 christos addu $2,$1 256 1.1 christos sltu $13,$2,$1 257 1.1 christos sw $2,2*4($4) 258 1.1 christos addu $2,$13,$12 259 1.1 christos 260 1.1 christos .L_bn_mul_words_return: 261 1.1 christos .set noreorder 262 1.1 christos jr $31 263 1.1 christos move $4,$2 264 1.1 christos .end bn_mul_words_internal 265 1.1 christos 266 1.1 christos .align 5 267 1.1 christos .globl bn_sqr_words 268 1.1 christos .ent bn_sqr_words 269 1.1 christos bn_sqr_words: 270 1.1 christos .set noreorder 271 1.1 christos bgtz $6,bn_sqr_words_internal 272 1.1 christos move $2,$0 273 1.1 christos jr $31 274 1.1 christos move $4,$2 275 1.1 christos .end bn_sqr_words 276 1.1 christos 277 1.1 christos .align 5 278 1.1 christos .ent bn_sqr_words_internal 279 1.1 christos bn_sqr_words_internal: 280 1.1 christos .set reorder 281 1.1 christos li $3,-4 282 1.1 christos and $8,$6,$3 283 1.1 christos beqz $8,.L_bn_sqr_words_tail 284 1.1 christos 285 1.1 christos .L_bn_sqr_words_loop: 286 1.1 christos lw $12,0($5) 287 1.1 christos multu ($12,$12) 288 1.1 christos lw $14,4($5) 289 1.1 christos lw $8,2*4($5) 290 1.1 christos lw $10,3*4($5) 291 1.1 christos mflo ($13,$12,$12) 292 1.1 christos mfhi ($12,$12,$12) 293 1.1 christos sw $13,0($4) 294 1.1 christos sw $12,4($4) 295 1.1 christos 296 1.1 christos multu ($14,$14) 297 1.1 christos subu $6,4 298 1.1 christos addu $4,8*4 299 1.1 christos addu $5,4*4 300 1.1 christos mflo ($15,$14,$14) 301 1.1 christos mfhi ($14,$14,$14) 302 1.1 christos sw $15,-6*4($4) 303 1.1 christos sw $14,-5*4($4) 304 1.1 christos 305 1.1 christos multu ($8,$8) 306 1.1 christos mflo ($9,$8,$8) 307 1.1 christos mfhi ($8,$8,$8) 308 1.1 christos sw $9,-4*4($4) 309 1.1 christos sw $8,-3*4($4) 310 1.1 christos 311 1.1 christos 312 1.1 christos multu ($10,$10) 313 1.1 christos and $8,$6,$3 314 1.1 christos mflo ($11,$10,$10) 315 1.1 christos mfhi ($10,$10,$10) 316 1.1 christos sw $11,-2*4($4) 317 1.1 christos 318 1.1 christos .set noreorder 319 1.1 christos bgtz $8,.L_bn_sqr_words_loop 320 1.1 christos sw $10,-4($4) 321 1.1 christos 322 1.1 christos beqz $6,.L_bn_sqr_words_return 323 1.1 christos nop 324 1.1 christos 325 1.1 christos .L_bn_sqr_words_tail: 326 1.1 christos .set reorder 327 1.1 christos lw $12,0($5) 328 1.1 christos multu ($12,$12) 329 1.1 christos subu $6,1 330 1.1 christos mflo ($13,$12,$12) 331 1.1 christos mfhi ($12,$12,$12) 332 1.1 christos sw $13,0($4) 333 1.1 christos sw $12,4($4) 334 1.1 christos beqz $6,.L_bn_sqr_words_return 335 1.1 christos 336 1.1 christos lw $12,4($5) 337 1.1 christos multu ($12,$12) 338 1.1 christos subu $6,1 339 1.1 christos mflo ($13,$12,$12) 340 1.1 christos mfhi ($12,$12,$12) 341 1.1 christos sw $13,2*4($4) 342 1.1 christos sw $12,3*4($4) 343 1.1 christos beqz $6,.L_bn_sqr_words_return 344 1.1 christos 345 1.1 christos lw $12,2*4($5) 346 1.1 christos multu ($12,$12) 347 1.1 christos mflo ($13,$12,$12) 348 1.1 christos mfhi ($12,$12,$12) 349 1.1 christos sw $13,4*4($4) 350 1.1 christos sw $12,5*4($4) 351 1.1 christos 352 1.1 christos .L_bn_sqr_words_return: 353 1.1 christos .set noreorder 354 1.1 christos jr $31 355 1.1 christos move $4,$2 356 1.1 christos 357 1.1 christos .end bn_sqr_words_internal 358 1.1 christos 359 1.1 christos .align 5 360 1.1 christos .globl bn_add_words 361 1.1 christos .ent bn_add_words 362 1.1 christos bn_add_words: 363 1.1 christos .set noreorder 364 1.1 christos bgtz $7,bn_add_words_internal 365 1.1 christos move $2,$0 366 1.1 christos jr $31 367 1.1 christos move $4,$2 368 1.1 christos .end bn_add_words 369 1.1 christos 370 1.1 christos .align 5 371 1.1 christos .ent bn_add_words_internal 372 1.1 christos bn_add_words_internal: 373 1.1 christos .set reorder 374 1.1 christos li $3,-4 375 1.1 christos and $1,$7,$3 376 1.1 christos beqz $1,.L_bn_add_words_tail 377 1.1 christos 378 1.1 christos .L_bn_add_words_loop: 379 1.1 christos lw $12,0($5) 380 1.1 christos lw $8,0($6) 381 1.1 christos subu $7,4 382 1.1 christos lw $13,4($5) 383 1.1 christos and $1,$7,$3 384 1.1 christos lw $14,2*4($5) 385 1.1 christos addu $6,4*4 386 1.1 christos lw $15,3*4($5) 387 1.1 christos addu $4,4*4 388 1.1 christos lw $9,-3*4($6) 389 1.1 christos addu $5,4*4 390 1.1 christos lw $10,-2*4($6) 391 1.1 christos lw $11,-4($6) 392 1.1 christos addu $8,$12 393 1.1 christos sltu $24,$8,$12 394 1.1 christos addu $12,$8,$2 395 1.1 christos sltu $2,$12,$8 396 1.1 christos sw $12,-4*4($4) 397 1.1 christos addu $2,$24 398 1.1 christos 399 1.1 christos addu $9,$13 400 1.1 christos sltu $25,$9,$13 401 1.1 christos addu $13,$9,$2 402 1.1 christos sltu $2,$13,$9 403 1.1 christos sw $13,-3*4($4) 404 1.1 christos addu $2,$25 405 1.1 christos 406 1.1 christos addu $10,$14 407 1.1 christos sltu $24,$10,$14 408 1.1 christos addu $14,$10,$2 409 1.1 christos sltu $2,$14,$10 410 1.1 christos sw $14,-2*4($4) 411 1.1 christos addu $2,$24 412 1.1 christos 413 1.1 christos addu $11,$15 414 1.1 christos sltu $25,$11,$15 415 1.1 christos addu $15,$11,$2 416 1.1 christos sltu $2,$15,$11 417 1.1 christos sw $15,-4($4) 418 1.1 christos 419 1.1 christos .set noreorder 420 1.1 christos bgtz $1,.L_bn_add_words_loop 421 1.1 christos addu $2,$25 422 1.1 christos 423 1.1 christos beqz $7,.L_bn_add_words_return 424 1.1 christos nop 425 1.1 christos 426 1.1 christos .L_bn_add_words_tail: 427 1.1 christos .set reorder 428 1.1 christos lw $12,0($5) 429 1.1 christos lw $8,0($6) 430 1.1 christos addu $8,$12 431 1.1 christos subu $7,1 432 1.1 christos sltu $24,$8,$12 433 1.1 christos addu $12,$8,$2 434 1.1 christos sltu $2,$12,$8 435 1.1 christos sw $12,0($4) 436 1.1 christos addu $2,$24 437 1.1 christos beqz $7,.L_bn_add_words_return 438 1.1 christos 439 1.1 christos lw $13,4($5) 440 1.1 christos lw $9,4($6) 441 1.1 christos addu $9,$13 442 1.1 christos subu $7,1 443 1.1 christos sltu $25,$9,$13 444 1.1 christos addu $13,$9,$2 445 1.1 christos sltu $2,$13,$9 446 1.1 christos sw $13,4($4) 447 1.1 christos addu $2,$25 448 1.1 christos beqz $7,.L_bn_add_words_return 449 1.1 christos 450 1.1 christos lw $14,2*4($5) 451 1.1 christos lw $10,2*4($6) 452 1.1 christos addu $10,$14 453 1.1 christos sltu $24,$10,$14 454 1.1 christos addu $14,$10,$2 455 1.1 christos sltu $2,$14,$10 456 1.1 christos sw $14,2*4($4) 457 1.1 christos addu $2,$24 458 1.1 christos 459 1.1 christos .L_bn_add_words_return: 460 1.1 christos .set noreorder 461 1.1 christos jr $31 462 1.1 christos move $4,$2 463 1.1 christos 464 1.1 christos .end bn_add_words_internal 465 1.1 christos 466 1.1 christos .align 5 467 1.1 christos .globl bn_sub_words 468 1.1 christos .ent bn_sub_words 469 1.1 christos bn_sub_words: 470 1.1 christos .set noreorder 471 1.1 christos bgtz $7,bn_sub_words_internal 472 1.1 christos move $2,$0 473 1.1 christos jr $31 474 1.1 christos move $4,$0 475 1.1 christos .end bn_sub_words 476 1.1 christos 477 1.1 christos .align 5 478 1.1 christos .ent bn_sub_words_internal 479 1.1 christos bn_sub_words_internal: 480 1.1 christos .set reorder 481 1.1 christos li $3,-4 482 1.1 christos and $1,$7,$3 483 1.1 christos beqz $1,.L_bn_sub_words_tail 484 1.1 christos 485 1.1 christos .L_bn_sub_words_loop: 486 1.1 christos lw $12,0($5) 487 1.1 christos lw $8,0($6) 488 1.1 christos subu $7,4 489 1.1 christos lw $13,4($5) 490 1.1 christos and $1,$7,$3 491 1.1 christos lw $14,2*4($5) 492 1.1 christos addu $6,4*4 493 1.1 christos lw $15,3*4($5) 494 1.1 christos addu $4,4*4 495 1.1 christos lw $9,-3*4($6) 496 1.1 christos addu $5,4*4 497 1.1 christos lw $10,-2*4($6) 498 1.1 christos lw $11,-4($6) 499 1.1 christos sltu $24,$12,$8 500 1.1 christos subu $8,$12,$8 501 1.1 christos subu $12,$8,$2 502 1.1 christos sgtu $2,$12,$8 503 1.1 christos sw $12,-4*4($4) 504 1.1 christos addu $2,$24 505 1.1 christos 506 1.1 christos sltu $25,$13,$9 507 1.1 christos subu $9,$13,$9 508 1.1 christos subu $13,$9,$2 509 1.1 christos sgtu $2,$13,$9 510 1.1 christos sw $13,-3*4($4) 511 1.1 christos addu $2,$25 512 1.1 christos 513 1.1 christos 514 1.1 christos sltu $24,$14,$10 515 1.1 christos subu $10,$14,$10 516 1.1 christos subu $14,$10,$2 517 1.1 christos sgtu $2,$14,$10 518 1.1 christos sw $14,-2*4($4) 519 1.1 christos addu $2,$24 520 1.1 christos 521 1.1 christos sltu $25,$15,$11 522 1.1 christos subu $11,$15,$11 523 1.1 christos subu $15,$11,$2 524 1.1 christos sgtu $2,$15,$11 525 1.1 christos sw $15,-4($4) 526 1.1 christos 527 1.1 christos .set noreorder 528 1.1 christos bgtz $1,.L_bn_sub_words_loop 529 1.1 christos addu $2,$25 530 1.1 christos 531 1.1 christos beqz $7,.L_bn_sub_words_return 532 1.1 christos nop 533 1.1 christos 534 1.1 christos .L_bn_sub_words_tail: 535 1.1 christos .set reorder 536 1.1 christos lw $12,0($5) 537 1.1 christos lw $8,0($6) 538 1.1 christos subu $7,1 539 1.1 christos sltu $24,$12,$8 540 1.1 christos subu $8,$12,$8 541 1.1 christos subu $12,$8,$2 542 1.1 christos sgtu $2,$12,$8 543 1.1 christos sw $12,0($4) 544 1.1 christos addu $2,$24 545 1.1 christos beqz $7,.L_bn_sub_words_return 546 1.1 christos 547 1.1 christos lw $13,4($5) 548 1.1 christos subu $7,1 549 1.1 christos lw $9,4($6) 550 1.1 christos sltu $25,$13,$9 551 1.1 christos subu $9,$13,$9 552 1.1 christos subu $13,$9,$2 553 1.1 christos sgtu $2,$13,$9 554 1.1 christos sw $13,4($4) 555 1.1 christos addu $2,$25 556 1.1 christos beqz $7,.L_bn_sub_words_return 557 1.1 christos 558 1.1 christos lw $14,2*4($5) 559 1.1 christos lw $10,2*4($6) 560 1.1 christos sltu $24,$14,$10 561 1.1 christos subu $10,$14,$10 562 1.1 christos subu $14,$10,$2 563 1.1 christos sgtu $2,$14,$10 564 1.1 christos sw $14,2*4($4) 565 1.1 christos addu $2,$24 566 1.1 christos 567 1.1 christos .L_bn_sub_words_return: 568 1.1 christos .set noreorder 569 1.1 christos jr $31 570 1.1 christos move $4,$2 571 1.1 christos .end bn_sub_words_internal 572 1.1 christos 573 1.1 christos #if 0 574 1.1 christos /* 575 1.2 christos * The bn_div_3_words entry point is reused for constant-time interface. 576 1.1 christos * Implementation is retained as historical reference. 577 1.1 christos */ 578 1.1 christos .align 5 579 1.1 christos .globl bn_div_3_words 580 1.1 christos .ent bn_div_3_words 581 1.1 christos bn_div_3_words: 582 1.1 christos .set noreorder 583 1.1 christos move $7,$4 # we know that bn_div_words does not 584 1.1 christos # touch $7, $10, $11 and preserves $6 585 1.1 christos # so that we can save two arguments 586 1.1 christos # and return address in registers 587 1.1 christos # instead of stack:-) 588 1.1 christos 589 1.1 christos lw $4,($7) 590 1.1 christos move $10,$5 591 1.1 christos bne $4,$6,bn_div_3_words_internal 592 1.1 christos lw $5,-4($7) 593 1.1 christos li $2,-1 594 1.1 christos jr $31 595 1.1 christos move $4,$2 596 1.1 christos .end bn_div_3_words 597 1.1 christos 598 1.1 christos .align 5 599 1.1 christos .ent bn_div_3_words_internal 600 1.1 christos bn_div_3_words_internal: 601 1.1 christos .set reorder 602 1.1 christos move $11,$31 603 1.1 christos bal bn_div_words_internal 604 1.1 christos move $31,$11 605 1.1 christos multu ($10,$2) 606 1.1 christos lw $14,-2*4($7) 607 1.1 christos move $8,$0 608 1.1 christos mfhi ($13,$10,$2) 609 1.1 christos mflo ($12,$10,$2) 610 1.1 christos sltu $24,$13,$5 611 1.1 christos .L_bn_div_3_words_inner_loop: 612 1.1 christos bnez $24,.L_bn_div_3_words_inner_loop_done 613 1.1 christos sgeu $1,$14,$12 614 1.1 christos seq $25,$13,$5 615 1.1 christos and $1,$25 616 1.1 christos sltu $15,$12,$10 617 1.1 christos addu $5,$6 618 1.1 christos subu $13,$15 619 1.1 christos subu $12,$10 620 1.1 christos sltu $24,$13,$5 621 1.1 christos sltu $8,$5,$6 622 1.1 christos or $24,$8 623 1.1 christos .set noreorder 624 1.1 christos beqz $1,.L_bn_div_3_words_inner_loop 625 1.1 christos subu $2,1 626 1.1 christos addu $2,1 627 1.1 christos .set reorder 628 1.1 christos .L_bn_div_3_words_inner_loop_done: 629 1.1 christos .set noreorder 630 1.1 christos jr $31 631 1.1 christos move $4,$2 632 1.1 christos .end bn_div_3_words_internal 633 1.1 christos #endif 634 1.1 christos 635 1.1 christos .align 5 636 1.1 christos .globl bn_div_words 637 1.1 christos .ent bn_div_words 638 1.1 christos bn_div_words: 639 1.1 christos .set noreorder 640 1.1 christos bnez $6,bn_div_words_internal 641 1.1 christos li $2,-1 # I would rather signal div-by-zero 642 1.1 christos # which can be done with 'break 7' 643 1.1 christos jr $31 644 1.1 christos move $4,$2 645 1.1 christos .end bn_div_words 646 1.1 christos 647 1.1 christos .align 5 648 1.1 christos .ent bn_div_words_internal 649 1.1 christos bn_div_words_internal: 650 1.1 christos move $3,$0 651 1.1 christos bltz $6,.L_bn_div_words_body 652 1.1 christos move $25,$3 653 1.1 christos sll $6,1 654 1.1 christos bgtz $6,.-4 655 1.1 christos addu $25,1 656 1.1 christos 657 1.1 christos .set reorder 658 1.1 christos negu $13,$25 659 1.1 christos li $14,-1 660 1.1 christos sll $14,$13 661 1.1 christos and $14,$4 662 1.1 christos srl $1,$5,$13 663 1.1 christos .set noreorder 664 1.1 christos beqz $14,.+12 665 1.1 christos nop 666 1.1 christos break 6 # signal overflow 667 1.1 christos .set reorder 668 1.1 christos sll $4,$25 669 1.1 christos sll $5,$25 670 1.1 christos or $4,$1 671 1.1 christos .L_bn_div_words_body: 672 1.1 christos srl $3,$6,4*4 # bits 673 1.1 christos sgeu $1,$4,$6 674 1.1 christos .set noreorder 675 1.1 christos beqz $1,.+12 676 1.1 christos nop 677 1.1 christos subu $4,$6 678 1.1 christos .set reorder 679 1.1 christos 680 1.1 christos li $8,-1 681 1.1 christos srl $9,$4,4*4 # bits 682 1.1 christos srl $8,4*4 # q=0xffffffff 683 1.1 christos beq $3,$9,.L_bn_div_words_skip_div1 684 1.1 christos divu ($4,$3) 685 1.1 christos mfqt ($8,$4,$3) 686 1.1 christos .L_bn_div_words_skip_div1: 687 1.1 christos multu ($6,$8) 688 1.1 christos sll $15,$4,4*4 # bits 689 1.1 christos srl $1,$5,4*4 # bits 690 1.1 christos or $15,$1 691 1.1 christos mflo ($12,$6,$8) 692 1.1 christos mfhi ($13,$6,$8) 693 1.1 christos .L_bn_div_words_inner_loop1: 694 1.1 christos sltu $14,$15,$12 695 1.1 christos seq $24,$9,$13 696 1.1 christos sltu $1,$9,$13 697 1.1 christos and $14,$24 698 1.1 christos sltu $2,$12,$6 699 1.1 christos or $1,$14 700 1.1 christos .set noreorder 701 1.1 christos beqz $1,.L_bn_div_words_inner_loop1_done 702 1.1 christos subu $13,$2 703 1.1 christos subu $12,$6 704 1.1 christos b .L_bn_div_words_inner_loop1 705 1.1 christos subu $8,1 706 1.1 christos .set reorder 707 1.1 christos .L_bn_div_words_inner_loop1_done: 708 1.1 christos 709 1.1 christos sll $5,4*4 # bits 710 1.1 christos subu $4,$15,$12 711 1.1 christos sll $2,$8,4*4 # bits 712 1.1 christos 713 1.1 christos li $8,-1 714 1.1 christos srl $9,$4,4*4 # bits 715 1.1 christos srl $8,4*4 # q=0xffffffff 716 1.1 christos beq $3,$9,.L_bn_div_words_skip_div2 717 1.1 christos divu ($4,$3) 718 1.1 christos mfqt ($8,$4,$3) 719 1.1 christos .L_bn_div_words_skip_div2: 720 1.1 christos multu ($6,$8) 721 1.1 christos sll $15,$4,4*4 # bits 722 1.1 christos srl $1,$5,4*4 # bits 723 1.1 christos or $15,$1 724 1.1 christos mflo ($12,$6,$8) 725 1.1 christos mfhi ($13,$6,$8) 726 1.1 christos .L_bn_div_words_inner_loop2: 727 1.1 christos sltu $14,$15,$12 728 1.1 christos seq $24,$9,$13 729 1.1 christos sltu $1,$9,$13 730 1.1 christos and $14,$24 731 1.1 christos sltu $3,$12,$6 732 1.1 christos or $1,$14 733 1.1 christos .set noreorder 734 1.1 christos beqz $1,.L_bn_div_words_inner_loop2_done 735 1.1 christos subu $13,$3 736 1.1 christos subu $12,$6 737 1.1 christos b .L_bn_div_words_inner_loop2 738 1.1 christos subu $8,1 739 1.1 christos .set reorder 740 1.1 christos .L_bn_div_words_inner_loop2_done: 741 1.1 christos 742 1.1 christos subu $4,$15,$12 743 1.1 christos or $2,$8 744 1.1 christos srl $3,$4,$25 # $3 contains remainder if anybody wants it 745 1.1 christos srl $6,$25 # restore $6 746 1.1 christos 747 1.1 christos .set noreorder 748 1.1 christos move $5,$3 749 1.1 christos jr $31 750 1.1 christos move $4,$2 751 1.1 christos .end bn_div_words_internal 752 1.1 christos 753 1.1 christos .align 5 754 1.1 christos .globl bn_mul_comba8 755 1.1 christos .ent bn_mul_comba8 756 1.1 christos bn_mul_comba8: 757 1.1 christos .set noreorder 758 1.1 christos .frame $29,6*4,$31 759 1.1 christos .mask 0x003f0000,-4 760 1.1 christos subu $29,6*4 761 1.1 christos sw $21,5*4($29) 762 1.1 christos sw $20,4*4($29) 763 1.1 christos sw $19,3*4($29) 764 1.1 christos sw $18,2*4($29) 765 1.1 christos sw $17,1*4($29) 766 1.1 christos sw $16,0*4($29) 767 1.1 christos 768 1.1 christos .set reorder 769 1.1 christos lw $12,0($5) # If compiled with -mips3 option on 770 1.1 christos # R5000 box assembler barks on this 771 1.1 christos # 1ine with "should not have mult/div 772 1.1 christos # as last instruction in bb (R10K 773 1.1 christos # bug)" warning. If anybody out there 774 1.1 christos # has a clue about how to circumvent 775 1.1 christos # this do send me a note. 776 1.1 christos # <appro@fy.chalmers.se> 777 1.1 christos 778 1.1 christos lw $8,0($6) 779 1.1 christos lw $13,4($5) 780 1.1 christos lw $14,2*4($5) 781 1.1 christos multu ($12,$8) # mul_add_c(a[0],b[0],c1,c2,c3); 782 1.1 christos lw $15,3*4($5) 783 1.1 christos lw $9,4($6) 784 1.1 christos lw $10,2*4($6) 785 1.1 christos lw $11,3*4($6) 786 1.1 christos mflo ($2,$12,$8) 787 1.1 christos mfhi ($3,$12,$8) 788 1.1 christos 789 1.1 christos lw $16,4*4($5) 790 1.1 christos lw $18,5*4($5) 791 1.1 christos multu ($12,$9) # mul_add_c(a[0],b[1],c2,c3,c1); 792 1.1 christos lw $20,6*4($5) 793 1.1 christos lw $5,7*4($5) 794 1.1 christos lw $17,4*4($6) 795 1.1 christos lw $19,5*4($6) 796 1.1 christos mflo ($24,$12,$9) 797 1.1 christos mfhi ($25,$12,$9) 798 1.1 christos addu $3,$24 799 1.1 christos sltu $1,$3,$24 800 1.1 christos multu ($13,$8) # mul_add_c(a[1],b[0],c2,c3,c1); 801 1.1 christos addu $7,$25,$1 802 1.1 christos lw $21,6*4($6) 803 1.1 christos lw $6,7*4($6) 804 1.1 christos sw $2,0($4) # r[0]=c1; 805 1.1 christos mflo ($24,$13,$8) 806 1.1 christos mfhi ($25,$13,$8) 807 1.1 christos addu $3,$24 808 1.1 christos sltu $1,$3,$24 809 1.1 christos multu ($14,$8) # mul_add_c(a[2],b[0],c3,c1,c2); 810 1.1 christos addu $25,$1 811 1.1 christos addu $7,$25 812 1.1 christos sltu $2,$7,$25 813 1.1 christos sw $3,4($4) # r[1]=c2; 814 1.1 christos 815 1.1 christos mflo ($24,$14,$8) 816 1.1 christos mfhi ($25,$14,$8) 817 1.1 christos addu $7,$24 818 1.1 christos sltu $1,$7,$24 819 1.1 christos multu ($13,$9) # mul_add_c(a[1],b[1],c3,c1,c2); 820 1.1 christos addu $25,$1 821 1.1 christos addu $2,$25 822 1.1 christos mflo ($24,$13,$9) 823 1.1 christos mfhi ($25,$13,$9) 824 1.1 christos addu $7,$24 825 1.1 christos sltu $1,$7,$24 826 1.1 christos multu ($12,$10) # mul_add_c(a[0],b[2],c3,c1,c2); 827 1.1 christos addu $25,$1 828 1.1 christos addu $2,$25 829 1.1 christos sltu $3,$2,$25 830 1.1 christos mflo ($24,$12,$10) 831 1.1 christos mfhi ($25,$12,$10) 832 1.1 christos addu $7,$24 833 1.1 christos sltu $1,$7,$24 834 1.1 christos multu ($12,$11) # mul_add_c(a[0],b[3],c1,c2,c3); 835 1.1 christos addu $25,$1 836 1.1 christos addu $2,$25 837 1.1 christos sltu $1,$2,$25 838 1.1 christos addu $3,$1 839 1.1 christos sw $7,2*4($4) # r[2]=c3; 840 1.1 christos 841 1.1 christos mflo ($24,$12,$11) 842 1.1 christos mfhi ($25,$12,$11) 843 1.1 christos addu $2,$24 844 1.1 christos sltu $1,$2,$24 845 1.1 christos multu ($13,$10) # mul_add_c(a[1],b[2],c1,c2,c3); 846 1.1 christos addu $25,$1 847 1.1 christos addu $3,$25 848 1.1 christos sltu $7,$3,$25 849 1.1 christos mflo ($24,$13,$10) 850 1.1 christos mfhi ($25,$13,$10) 851 1.1 christos addu $2,$24 852 1.1 christos sltu $1,$2,$24 853 1.1 christos multu ($14,$9) # mul_add_c(a[2],b[1],c1,c2,c3); 854 1.1 christos addu $25,$1 855 1.1 christos addu $3,$25 856 1.1 christos sltu $1,$3,$25 857 1.1 christos addu $7,$1 858 1.1 christos mflo ($24,$14,$9) 859 1.1 christos mfhi ($25,$14,$9) 860 1.1 christos addu $2,$24 861 1.1 christos sltu $1,$2,$24 862 1.1 christos multu ($15,$8) # mul_add_c(a[3],b[0],c1,c2,c3); 863 1.1 christos addu $25,$1 864 1.1 christos addu $3,$25 865 1.1 christos sltu $1,$3,$25 866 1.1 christos addu $7,$1 867 1.1 christos mflo ($24,$15,$8) 868 1.1 christos mfhi ($25,$15,$8) 869 1.1 christos addu $2,$24 870 1.1 christos sltu $1,$2,$24 871 1.1 christos multu ($16,$8) # mul_add_c(a[4],b[0],c2,c3,c1); 872 1.1 christos addu $25,$1 873 1.1 christos addu $3,$25 874 1.1 christos sltu $1,$3,$25 875 1.1 christos addu $7,$1 876 1.1 christos sw $2,3*4($4) # r[3]=c1; 877 1.1 christos 878 1.1 christos mflo ($24,$16,$8) 879 1.1 christos mfhi ($25,$16,$8) 880 1.1 christos addu $3,$24 881 1.1 christos sltu $1,$3,$24 882 1.1 christos multu ($15,$9) # mul_add_c(a[3],b[1],c2,c3,c1); 883 1.1 christos addu $25,$1 884 1.1 christos addu $7,$25 885 1.1 christos sltu $2,$7,$25 886 1.1 christos mflo ($24,$15,$9) 887 1.1 christos mfhi ($25,$15,$9) 888 1.1 christos addu $3,$24 889 1.1 christos sltu $1,$3,$24 890 1.1 christos multu ($14,$10) # mul_add_c(a[2],b[2],c2,c3,c1); 891 1.1 christos addu $25,$1 892 1.1 christos addu $7,$25 893 1.1 christos sltu $1,$7,$25 894 1.1 christos addu $2,$1 895 1.1 christos mflo ($24,$14,$10) 896 1.1 christos mfhi ($25,$14,$10) 897 1.1 christos addu $3,$24 898 1.1 christos sltu $1,$3,$24 899 1.1 christos multu ($13,$11) # mul_add_c(a[1],b[3],c2,c3,c1); 900 1.1 christos addu $25,$1 901 1.1 christos addu $7,$25 902 1.1 christos sltu $1,$7,$25 903 1.1 christos addu $2,$1 904 1.1 christos mflo ($24,$13,$11) 905 1.1 christos mfhi ($25,$13,$11) 906 1.1 christos addu $3,$24 907 1.1 christos sltu $1,$3,$24 908 1.1 christos multu ($12,$17) # mul_add_c(a[0],b[4],c2,c3,c1); 909 1.1 christos addu $25,$1 910 1.1 christos addu $7,$25 911 1.1 christos sltu $1,$7,$25 912 1.1 christos addu $2,$1 913 1.1 christos mflo ($24,$12,$17) 914 1.1 christos mfhi ($25,$12,$17) 915 1.1 christos addu $3,$24 916 1.1 christos sltu $1,$3,$24 917 1.1 christos multu ($12,$19) # mul_add_c(a[0],b[5],c3,c1,c2); 918 1.1 christos addu $25,$1 919 1.1 christos addu $7,$25 920 1.1 christos sltu $1,$7,$25 921 1.1 christos addu $2,$1 922 1.1 christos sw $3,4*4($4) # r[4]=c2; 923 1.1 christos 924 1.1 christos mflo ($24,$12,$19) 925 1.1 christos mfhi ($25,$12,$19) 926 1.1 christos addu $7,$24 927 1.1 christos sltu $1,$7,$24 928 1.1 christos multu ($13,$17) # mul_add_c(a[1],b[4],c3,c1,c2); 929 1.1 christos addu $25,$1 930 1.1 christos addu $2,$25 931 1.1 christos sltu $3,$2,$25 932 1.1 christos mflo ($24,$13,$17) 933 1.1 christos mfhi ($25,$13,$17) 934 1.1 christos addu $7,$24 935 1.1 christos sltu $1,$7,$24 936 1.1 christos multu ($14,$11) # mul_add_c(a[2],b[3],c3,c1,c2); 937 1.1 christos addu $25,$1 938 1.1 christos addu $2,$25 939 1.1 christos sltu $1,$2,$25 940 1.1 christos addu $3,$1 941 1.1 christos mflo ($24,$14,$11) 942 1.1 christos mfhi ($25,$14,$11) 943 1.1 christos addu $7,$24 944 1.1 christos sltu $1,$7,$24 945 1.1 christos multu ($15,$10) # mul_add_c(a[3],b[2],c3,c1,c2); 946 1.1 christos addu $25,$1 947 1.1 christos addu $2,$25 948 1.1 christos sltu $1,$2,$25 949 1.1 christos addu $3,$1 950 1.1 christos mflo ($24,$15,$10) 951 1.1 christos mfhi ($25,$15,$10) 952 1.1 christos addu $7,$24 953 1.1 christos sltu $1,$7,$24 954 1.1 christos multu ($16,$9) # mul_add_c(a[4],b[1],c3,c1,c2); 955 1.1 christos addu $25,$1 956 1.1 christos addu $2,$25 957 1.1 christos sltu $1,$2,$25 958 1.1 christos addu $3,$1 959 1.1 christos mflo ($24,$16,$9) 960 1.1 christos mfhi ($25,$16,$9) 961 1.1 christos addu $7,$24 962 1.1 christos sltu $1,$7,$24 963 1.1 christos multu ($18,$8) # mul_add_c(a[5],b[0],c3,c1,c2); 964 1.1 christos addu $25,$1 965 1.1 christos addu $2,$25 966 1.1 christos sltu $1,$2,$25 967 1.1 christos addu $3,$1 968 1.1 christos mflo ($24,$18,$8) 969 1.1 christos mfhi ($25,$18,$8) 970 1.1 christos addu $7,$24 971 1.1 christos sltu $1,$7,$24 972 1.1 christos multu ($20,$8) # mul_add_c(a[6],b[0],c1,c2,c3); 973 1.1 christos addu $25,$1 974 1.1 christos addu $2,$25 975 1.1 christos sltu $1,$2,$25 976 1.1 christos addu $3,$1 977 1.1 christos sw $7,5*4($4) # r[5]=c3; 978 1.1 christos 979 1.1 christos mflo ($24,$20,$8) 980 1.1 christos mfhi ($25,$20,$8) 981 1.1 christos addu $2,$24 982 1.1 christos sltu $1,$2,$24 983 1.1 christos multu ($18,$9) # mul_add_c(a[5],b[1],c1,c2,c3); 984 1.1 christos addu $25,$1 985 1.1 christos addu $3,$25 986 1.1 christos sltu $7,$3,$25 987 1.1 christos mflo ($24,$18,$9) 988 1.1 christos mfhi ($25,$18,$9) 989 1.1 christos addu $2,$24 990 1.1 christos sltu $1,$2,$24 991 1.1 christos multu ($16,$10) # mul_add_c(a[4],b[2],c1,c2,c3); 992 1.1 christos addu $25,$1 993 1.1 christos addu $3,$25 994 1.1 christos sltu $1,$3,$25 995 1.1 christos addu $7,$1 996 1.1 christos mflo ($24,$16,$10) 997 1.1 christos mfhi ($25,$16,$10) 998 1.1 christos addu $2,$24 999 1.1 christos sltu $1,$2,$24 1000 1.1 christos multu ($15,$11) # mul_add_c(a[3],b[3],c1,c2,c3); 1001 1.1 christos addu $25,$1 1002 1.1 christos addu $3,$25 1003 1.1 christos sltu $1,$3,$25 1004 1.1 christos addu $7,$1 1005 1.1 christos mflo ($24,$15,$11) 1006 1.1 christos mfhi ($25,$15,$11) 1007 1.1 christos addu $2,$24 1008 1.1 christos sltu $1,$2,$24 1009 1.1 christos multu ($14,$17) # mul_add_c(a[2],b[4],c1,c2,c3); 1010 1.1 christos addu $25,$1 1011 1.1 christos addu $3,$25 1012 1.1 christos sltu $1,$3,$25 1013 1.1 christos addu $7,$1 1014 1.1 christos mflo ($24,$14,$17) 1015 1.1 christos mfhi ($25,$14,$17) 1016 1.1 christos addu $2,$24 1017 1.1 christos sltu $1,$2,$24 1018 1.1 christos multu ($13,$19) # mul_add_c(a[1],b[5],c1,c2,c3); 1019 1.1 christos addu $25,$1 1020 1.1 christos addu $3,$25 1021 1.1 christos sltu $1,$3,$25 1022 1.1 christos addu $7,$1 1023 1.1 christos mflo ($24,$13,$19) 1024 1.1 christos mfhi ($25,$13,$19) 1025 1.1 christos addu $2,$24 1026 1.1 christos sltu $1,$2,$24 1027 1.1 christos multu ($12,$21) # mul_add_c(a[0],b[6],c1,c2,c3); 1028 1.1 christos addu $25,$1 1029 1.1 christos addu $3,$25 1030 1.1 christos sltu $1,$3,$25 1031 1.1 christos addu $7,$1 1032 1.1 christos mflo ($24,$12,$21) 1033 1.1 christos mfhi ($25,$12,$21) 1034 1.1 christos addu $2,$24 1035 1.1 christos sltu $1,$2,$24 1036 1.1 christos multu ($12,$6) # mul_add_c(a[0],b[7],c2,c3,c1); 1037 1.1 christos addu $25,$1 1038 1.1 christos addu $3,$25 1039 1.1 christos sltu $1,$3,$25 1040 1.1 christos addu $7,$1 1041 1.1 christos sw $2,6*4($4) # r[6]=c1; 1042 1.1 christos 1043 1.1 christos mflo ($24,$12,$6) 1044 1.1 christos mfhi ($25,$12,$6) 1045 1.1 christos addu $3,$24 1046 1.1 christos sltu $1,$3,$24 1047 1.1 christos multu ($13,$21) # mul_add_c(a[1],b[6],c2,c3,c1); 1048 1.1 christos addu $25,$1 1049 1.1 christos addu $7,$25 1050 1.1 christos sltu $2,$7,$25 1051 1.1 christos mflo ($24,$13,$21) 1052 1.1 christos mfhi ($25,$13,$21) 1053 1.1 christos addu $3,$24 1054 1.1 christos sltu $1,$3,$24 1055 1.1 christos multu ($14,$19) # mul_add_c(a[2],b[5],c2,c3,c1); 1056 1.1 christos addu $25,$1 1057 1.1 christos addu $7,$25 1058 1.1 christos sltu $1,$7,$25 1059 1.1 christos addu $2,$1 1060 1.1 christos mflo ($24,$14,$19) 1061 1.1 christos mfhi ($25,$14,$19) 1062 1.1 christos addu $3,$24 1063 1.1 christos sltu $1,$3,$24 1064 1.1 christos multu ($15,$17) # mul_add_c(a[3],b[4],c2,c3,c1); 1065 1.1 christos addu $25,$1 1066 1.1 christos addu $7,$25 1067 1.1 christos sltu $1,$7,$25 1068 1.1 christos addu $2,$1 1069 1.1 christos mflo ($24,$15,$17) 1070 1.1 christos mfhi ($25,$15,$17) 1071 1.1 christos addu $3,$24 1072 1.1 christos sltu $1,$3,$24 1073 1.1 christos multu ($16,$11) # mul_add_c(a[4],b[3],c2,c3,c1); 1074 1.1 christos addu $25,$1 1075 1.1 christos addu $7,$25 1076 1.1 christos sltu $1,$7,$25 1077 1.1 christos addu $2,$1 1078 1.1 christos mflo ($24,$16,$11) 1079 1.1 christos mfhi ($25,$16,$11) 1080 1.1 christos addu $3,$24 1081 1.1 christos sltu $1,$3,$24 1082 1.1 christos multu ($18,$10) # mul_add_c(a[5],b[2],c2,c3,c1); 1083 1.1 christos addu $25,$1 1084 1.1 christos addu $7,$25 1085 1.1 christos sltu $1,$7,$25 1086 1.1 christos addu $2,$1 1087 1.1 christos mflo ($24,$18,$10) 1088 1.1 christos mfhi ($25,$18,$10) 1089 1.1 christos addu $3,$24 1090 1.1 christos sltu $1,$3,$24 1091 1.1 christos multu ($20,$9) # mul_add_c(a[6],b[1],c2,c3,c1); 1092 1.1 christos addu $25,$1 1093 1.1 christos addu $7,$25 1094 1.1 christos sltu $1,$7,$25 1095 1.1 christos addu $2,$1 1096 1.1 christos mflo ($24,$20,$9) 1097 1.1 christos mfhi ($25,$20,$9) 1098 1.1 christos addu $3,$24 1099 1.1 christos sltu $1,$3,$24 1100 1.1 christos multu ($5,$8) # mul_add_c(a[7],b[0],c2,c3,c1); 1101 1.1 christos addu $25,$1 1102 1.1 christos addu $7,$25 1103 1.1 christos sltu $1,$7,$25 1104 1.1 christos addu $2,$1 1105 1.1 christos mflo ($24,$5,$8) 1106 1.1 christos mfhi ($25,$5,$8) 1107 1.1 christos addu $3,$24 1108 1.1 christos sltu $1,$3,$24 1109 1.1 christos multu ($5,$9) # mul_add_c(a[7],b[1],c3,c1,c2); 1110 1.1 christos addu $25,$1 1111 1.1 christos addu $7,$25 1112 1.1 christos sltu $1,$7,$25 1113 1.1 christos addu $2,$1 1114 1.1 christos sw $3,7*4($4) # r[7]=c2; 1115 1.1 christos 1116 1.1 christos mflo ($24,$5,$9) 1117 1.1 christos mfhi ($25,$5,$9) 1118 1.1 christos addu $7,$24 1119 1.1 christos sltu $1,$7,$24 1120 1.1 christos multu ($20,$10) # mul_add_c(a[6],b[2],c3,c1,c2); 1121 1.1 christos addu $25,$1 1122 1.1 christos addu $2,$25 1123 1.1 christos sltu $3,$2,$25 1124 1.1 christos mflo ($24,$20,$10) 1125 1.1 christos mfhi ($25,$20,$10) 1126 1.1 christos addu $7,$24 1127 1.1 christos sltu $1,$7,$24 1128 1.1 christos multu ($18,$11) # mul_add_c(a[5],b[3],c3,c1,c2); 1129 1.1 christos addu $25,$1 1130 1.1 christos addu $2,$25 1131 1.1 christos sltu $1,$2,$25 1132 1.1 christos addu $3,$1 1133 1.1 christos mflo ($24,$18,$11) 1134 1.1 christos mfhi ($25,$18,$11) 1135 1.1 christos addu $7,$24 1136 1.1 christos sltu $1,$7,$24 1137 1.1 christos multu ($16,$17) # mul_add_c(a[4],b[4],c3,c1,c2); 1138 1.1 christos addu $25,$1 1139 1.1 christos addu $2,$25 1140 1.1 christos sltu $1,$2,$25 1141 1.1 christos addu $3,$1 1142 1.1 christos mflo ($24,$16,$17) 1143 1.1 christos mfhi ($25,$16,$17) 1144 1.1 christos addu $7,$24 1145 1.1 christos sltu $1,$7,$24 1146 1.1 christos multu ($15,$19) # mul_add_c(a[3],b[5],c3,c1,c2); 1147 1.1 christos addu $25,$1 1148 1.1 christos addu $2,$25 1149 1.1 christos sltu $1,$2,$25 1150 1.1 christos addu $3,$1 1151 1.1 christos mflo ($24,$15,$19) 1152 1.1 christos mfhi ($25,$15,$19) 1153 1.1 christos addu $7,$24 1154 1.1 christos sltu $1,$7,$24 1155 1.1 christos multu ($14,$21) # mul_add_c(a[2],b[6],c3,c1,c2); 1156 1.1 christos addu $25,$1 1157 1.1 christos addu $2,$25 1158 1.1 christos sltu $1,$2,$25 1159 1.1 christos addu $3,$1 1160 1.1 christos mflo ($24,$14,$21) 1161 1.1 christos mfhi ($25,$14,$21) 1162 1.1 christos addu $7,$24 1163 1.1 christos sltu $1,$7,$24 1164 1.1 christos multu ($13,$6) # mul_add_c(a[1],b[7],c3,c1,c2); 1165 1.1 christos addu $25,$1 1166 1.1 christos addu $2,$25 1167 1.1 christos sltu $1,$2,$25 1168 1.1 christos addu $3,$1 1169 1.1 christos mflo ($24,$13,$6) 1170 1.1 christos mfhi ($25,$13,$6) 1171 1.1 christos addu $7,$24 1172 1.1 christos sltu $1,$7,$24 1173 1.1 christos multu ($14,$6) # mul_add_c(a[2],b[7],c1,c2,c3); 1174 1.1 christos addu $25,$1 1175 1.1 christos addu $2,$25 1176 1.1 christos sltu $1,$2,$25 1177 1.1 christos addu $3,$1 1178 1.1 christos sw $7,8*4($4) # r[8]=c3; 1179 1.1 christos 1180 1.1 christos mflo ($24,$14,$6) 1181 1.1 christos mfhi ($25,$14,$6) 1182 1.1 christos addu $2,$24 1183 1.1 christos sltu $1,$2,$24 1184 1.1 christos multu ($15,$21) # mul_add_c(a[3],b[6],c1,c2,c3); 1185 1.1 christos addu $25,$1 1186 1.1 christos addu $3,$25 1187 1.1 christos sltu $7,$3,$25 1188 1.1 christos mflo ($24,$15,$21) 1189 1.1 christos mfhi ($25,$15,$21) 1190 1.1 christos addu $2,$24 1191 1.1 christos sltu $1,$2,$24 1192 1.1 christos multu ($16,$19) # mul_add_c(a[4],b[5],c1,c2,c3); 1193 1.1 christos addu $25,$1 1194 1.1 christos addu $3,$25 1195 1.1 christos sltu $1,$3,$25 1196 1.1 christos addu $7,$1 1197 1.1 christos mflo ($24,$16,$19) 1198 1.1 christos mfhi ($25,$16,$19) 1199 1.1 christos addu $2,$24 1200 1.1 christos sltu $1,$2,$24 1201 1.1 christos multu ($18,$17) # mul_add_c(a[5],b[4],c1,c2,c3); 1202 1.1 christos addu $25,$1 1203 1.1 christos addu $3,$25 1204 1.1 christos sltu $1,$3,$25 1205 1.1 christos addu $7,$1 1206 1.1 christos mflo ($24,$18,$17) 1207 1.1 christos mfhi ($25,$18,$17) 1208 1.1 christos addu $2,$24 1209 1.1 christos sltu $1,$2,$24 1210 1.1 christos multu ($20,$11) # mul_add_c(a[6],b[3],c1,c2,c3); 1211 1.1 christos addu $25,$1 1212 1.1 christos addu $3,$25 1213 1.1 christos sltu $1,$3,$25 1214 1.1 christos addu $7,$1 1215 1.1 christos mflo ($24,$20,$11) 1216 1.1 christos mfhi ($25,$20,$11) 1217 1.1 christos addu $2,$24 1218 1.1 christos sltu $1,$2,$24 1219 1.1 christos multu ($5,$10) # mul_add_c(a[7],b[2],c1,c2,c3); 1220 1.1 christos addu $25,$1 1221 1.1 christos addu $3,$25 1222 1.1 christos sltu $1,$3,$25 1223 1.1 christos addu $7,$1 1224 1.1 christos mflo ($24,$5,$10) 1225 1.1 christos mfhi ($25,$5,$10) 1226 1.1 christos addu $2,$24 1227 1.1 christos sltu $1,$2,$24 1228 1.1 christos multu ($5,$11) # mul_add_c(a[7],b[3],c2,c3,c1); 1229 1.1 christos addu $25,$1 1230 1.1 christos addu $3,$25 1231 1.1 christos sltu $1,$3,$25 1232 1.1 christos addu $7,$1 1233 1.1 christos sw $2,9*4($4) # r[9]=c1; 1234 1.1 christos 1235 1.1 christos mflo ($24,$5,$11) 1236 1.1 christos mfhi ($25,$5,$11) 1237 1.1 christos addu $3,$24 1238 1.1 christos sltu $1,$3,$24 1239 1.1 christos multu ($20,$17) # mul_add_c(a[6],b[4],c2,c3,c1); 1240 1.1 christos addu $25,$1 1241 1.1 christos addu $7,$25 1242 1.1 christos sltu $2,$7,$25 1243 1.1 christos mflo ($24,$20,$17) 1244 1.1 christos mfhi ($25,$20,$17) 1245 1.1 christos addu $3,$24 1246 1.1 christos sltu $1,$3,$24 1247 1.1 christos multu ($18,$19) # mul_add_c(a[5],b[5],c2,c3,c1); 1248 1.1 christos addu $25,$1 1249 1.1 christos addu $7,$25 1250 1.1 christos sltu $1,$7,$25 1251 1.1 christos addu $2,$1 1252 1.1 christos mflo ($24,$18,$19) 1253 1.1 christos mfhi ($25,$18,$19) 1254 1.1 christos addu $3,$24 1255 1.1 christos sltu $1,$3,$24 1256 1.1 christos multu ($16,$21) # mul_add_c(a[4],b[6],c2,c3,c1); 1257 1.1 christos addu $25,$1 1258 1.1 christos addu $7,$25 1259 1.1 christos sltu $1,$7,$25 1260 1.1 christos addu $2,$1 1261 1.1 christos mflo ($24,$16,$21) 1262 1.1 christos mfhi ($25,$16,$21) 1263 1.1 christos addu $3,$24 1264 1.1 christos sltu $1,$3,$24 1265 1.1 christos multu ($15,$6) # mul_add_c(a[3],b[7],c2,c3,c1); 1266 1.1 christos addu $25,$1 1267 1.1 christos addu $7,$25 1268 1.1 christos sltu $1,$7,$25 1269 1.1 christos addu $2,$1 1270 1.1 christos mflo ($24,$15,$6) 1271 1.1 christos mfhi ($25,$15,$6) 1272 1.1 christos addu $3,$24 1273 1.1 christos sltu $1,$3,$24 1274 1.1 christos multu ($16,$6) # mul_add_c(a[4],b[7],c3,c1,c2); 1275 1.1 christos addu $25,$1 1276 1.1 christos addu $7,$25 1277 1.1 christos sltu $1,$7,$25 1278 1.1 christos addu $2,$1 1279 1.1 christos sw $3,10*4($4) # r[10]=c2; 1280 1.1 christos 1281 1.1 christos mflo ($24,$16,$6) 1282 1.1 christos mfhi ($25,$16,$6) 1283 1.1 christos addu $7,$24 1284 1.1 christos sltu $1,$7,$24 1285 1.1 christos multu ($18,$21) # mul_add_c(a[5],b[6],c3,c1,c2); 1286 1.1 christos addu $25,$1 1287 1.1 christos addu $2,$25 1288 1.1 christos sltu $3,$2,$25 1289 1.1 christos mflo ($24,$18,$21) 1290 1.1 christos mfhi ($25,$18,$21) 1291 1.1 christos addu $7,$24 1292 1.1 christos sltu $1,$7,$24 1293 1.1 christos multu ($20,$19) # mul_add_c(a[6],b[5],c3,c1,c2); 1294 1.1 christos addu $25,$1 1295 1.1 christos addu $2,$25 1296 1.1 christos sltu $1,$2,$25 1297 1.1 christos addu $3,$1 1298 1.1 christos mflo ($24,$20,$19) 1299 1.1 christos mfhi ($25,$20,$19) 1300 1.1 christos addu $7,$24 1301 1.1 christos sltu $1,$7,$24 1302 1.1 christos multu ($5,$17) # mul_add_c(a[7],b[4],c3,c1,c2); 1303 1.1 christos addu $25,$1 1304 1.1 christos addu $2,$25 1305 1.1 christos sltu $1,$2,$25 1306 1.1 christos addu $3,$1 1307 1.1 christos mflo ($24,$5,$17) 1308 1.1 christos mfhi ($25,$5,$17) 1309 1.1 christos addu $7,$24 1310 1.1 christos sltu $1,$7,$24 1311 1.1 christos multu ($5,$19) # mul_add_c(a[7],b[5],c1,c2,c3); 1312 1.1 christos addu $25,$1 1313 1.1 christos addu $2,$25 1314 1.1 christos sltu $1,$2,$25 1315 1.1 christos addu $3,$1 1316 1.1 christos sw $7,11*4($4) # r[11]=c3; 1317 1.1 christos 1318 1.1 christos mflo ($24,$5,$19) 1319 1.1 christos mfhi ($25,$5,$19) 1320 1.1 christos addu $2,$24 1321 1.1 christos sltu $1,$2,$24 1322 1.1 christos multu ($20,$21) # mul_add_c(a[6],b[6],c1,c2,c3); 1323 1.1 christos addu $25,$1 1324 1.1 christos addu $3,$25 1325 1.1 christos sltu $7,$3,$25 1326 1.1 christos mflo ($24,$20,$21) 1327 1.1 christos mfhi ($25,$20,$21) 1328 1.1 christos addu $2,$24 1329 1.1 christos sltu $1,$2,$24 1330 1.1 christos multu ($18,$6) # mul_add_c(a[5],b[7],c1,c2,c3); 1331 1.1 christos addu $25,$1 1332 1.1 christos addu $3,$25 1333 1.1 christos sltu $1,$3,$25 1334 1.1 christos addu $7,$1 1335 1.1 christos mflo ($24,$18,$6) 1336 1.1 christos mfhi ($25,$18,$6) 1337 1.1 christos addu $2,$24 1338 1.1 christos sltu $1,$2,$24 1339 1.1 christos multu ($20,$6) # mul_add_c(a[6],b[7],c2,c3,c1); 1340 1.1 christos addu $25,$1 1341 1.1 christos addu $3,$25 1342 1.1 christos sltu $1,$3,$25 1343 1.1 christos addu $7,$1 1344 1.1 christos sw $2,12*4($4) # r[12]=c1; 1345 1.1 christos 1346 1.1 christos mflo ($24,$20,$6) 1347 1.1 christos mfhi ($25,$20,$6) 1348 1.1 christos addu $3,$24 1349 1.1 christos sltu $1,$3,$24 1350 1.1 christos multu ($5,$21) # mul_add_c(a[7],b[6],c2,c3,c1); 1351 1.1 christos addu $25,$1 1352 1.1 christos addu $7,$25 1353 1.1 christos sltu $2,$7,$25 1354 1.1 christos mflo ($24,$5,$21) 1355 1.1 christos mfhi ($25,$5,$21) 1356 1.1 christos addu $3,$24 1357 1.1 christos sltu $1,$3,$24 1358 1.1 christos multu ($5,$6) # mul_add_c(a[7],b[7],c3,c1,c2); 1359 1.1 christos addu $25,$1 1360 1.1 christos addu $7,$25 1361 1.1 christos sltu $1,$7,$25 1362 1.1 christos addu $2,$1 1363 1.1 christos sw $3,13*4($4) # r[13]=c2; 1364 1.1 christos 1365 1.1 christos mflo ($24,$5,$6) 1366 1.1 christos mfhi ($25,$5,$6) 1367 1.1 christos addu $7,$24 1368 1.1 christos sltu $1,$7,$24 1369 1.1 christos addu $25,$1 1370 1.1 christos addu $2,$25 1371 1.1 christos sw $7,14*4($4) # r[14]=c3; 1372 1.1 christos sw $2,15*4($4) # r[15]=c1; 1373 1.1 christos 1374 1.1 christos .set noreorder 1375 1.1 christos lw $21,5*4($29) 1376 1.1 christos lw $20,4*4($29) 1377 1.1 christos lw $19,3*4($29) 1378 1.1 christos lw $18,2*4($29) 1379 1.1 christos lw $17,1*4($29) 1380 1.1 christos lw $16,0*4($29) 1381 1.1 christos jr $31 1382 1.1 christos addu $29,6*4 1383 1.1 christos .end bn_mul_comba8 1384 1.1 christos 1385 1.1 christos .align 5 1386 1.1 christos .globl bn_mul_comba4 1387 1.1 christos .ent bn_mul_comba4 1388 1.1 christos bn_mul_comba4: 1389 1.1 christos .set reorder 1390 1.1 christos lw $12,0($5) 1391 1.1 christos lw $8,0($6) 1392 1.1 christos lw $13,4($5) 1393 1.1 christos lw $14,2*4($5) 1394 1.1 christos multu ($12,$8) # mul_add_c(a[0],b[0],c1,c2,c3); 1395 1.1 christos lw $15,3*4($5) 1396 1.1 christos lw $9,4($6) 1397 1.1 christos lw $10,2*4($6) 1398 1.1 christos lw $11,3*4($6) 1399 1.1 christos mflo ($2,$12,$8) 1400 1.1 christos mfhi ($3,$12,$8) 1401 1.1 christos sw $2,0($4) 1402 1.1 christos 1403 1.1 christos multu ($12,$9) # mul_add_c(a[0],b[1],c2,c3,c1); 1404 1.1 christos mflo ($24,$12,$9) 1405 1.1 christos mfhi ($25,$12,$9) 1406 1.1 christos addu $3,$24 1407 1.1 christos sltu $1,$3,$24 1408 1.1 christos multu ($13,$8) # mul_add_c(a[1],b[0],c2,c3,c1); 1409 1.1 christos addu $7,$25,$1 1410 1.1 christos mflo ($24,$13,$8) 1411 1.1 christos mfhi ($25,$13,$8) 1412 1.1 christos addu $3,$24 1413 1.1 christos sltu $1,$3,$24 1414 1.1 christos multu ($14,$8) # mul_add_c(a[2],b[0],c3,c1,c2); 1415 1.1 christos addu $25,$1 1416 1.1 christos addu $7,$25 1417 1.1 christos sltu $2,$7,$25 1418 1.1 christos sw $3,4($4) 1419 1.1 christos 1420 1.1 christos mflo ($24,$14,$8) 1421 1.1 christos mfhi ($25,$14,$8) 1422 1.1 christos addu $7,$24 1423 1.1 christos sltu $1,$7,$24 1424 1.1 christos multu ($13,$9) # mul_add_c(a[1],b[1],c3,c1,c2); 1425 1.1 christos addu $25,$1 1426 1.1 christos addu $2,$25 1427 1.1 christos mflo ($24,$13,$9) 1428 1.1 christos mfhi ($25,$13,$9) 1429 1.1 christos addu $7,$24 1430 1.1 christos sltu $1,$7,$24 1431 1.1 christos multu ($12,$10) # mul_add_c(a[0],b[2],c3,c1,c2); 1432 1.1 christos addu $25,$1 1433 1.1 christos addu $2,$25 1434 1.1 christos sltu $3,$2,$25 1435 1.1 christos mflo ($24,$12,$10) 1436 1.1 christos mfhi ($25,$12,$10) 1437 1.1 christos addu $7,$24 1438 1.1 christos sltu $1,$7,$24 1439 1.1 christos multu ($12,$11) # mul_add_c(a[0],b[3],c1,c2,c3); 1440 1.1 christos addu $25,$1 1441 1.1 christos addu $2,$25 1442 1.1 christos sltu $1,$2,$25 1443 1.1 christos addu $3,$1 1444 1.1 christos sw $7,2*4($4) 1445 1.1 christos 1446 1.1 christos mflo ($24,$12,$11) 1447 1.1 christos mfhi ($25,$12,$11) 1448 1.1 christos addu $2,$24 1449 1.1 christos sltu $1,$2,$24 1450 1.1 christos multu ($13,$10) # mul_add_c(a[1],b[2],c1,c2,c3); 1451 1.1 christos addu $25,$1 1452 1.1 christos addu $3,$25 1453 1.1 christos sltu $7,$3,$25 1454 1.1 christos mflo ($24,$13,$10) 1455 1.1 christos mfhi ($25,$13,$10) 1456 1.1 christos addu $2,$24 1457 1.1 christos sltu $1,$2,$24 1458 1.1 christos multu ($14,$9) # mul_add_c(a[2],b[1],c1,c2,c3); 1459 1.1 christos addu $25,$1 1460 1.1 christos addu $3,$25 1461 1.1 christos sltu $1,$3,$25 1462 1.1 christos addu $7,$1 1463 1.1 christos mflo ($24,$14,$9) 1464 1.1 christos mfhi ($25,$14,$9) 1465 1.1 christos addu $2,$24 1466 1.1 christos sltu $1,$2,$24 1467 1.1 christos multu ($15,$8) # mul_add_c(a[3],b[0],c1,c2,c3); 1468 1.1 christos addu $25,$1 1469 1.1 christos addu $3,$25 1470 1.1 christos sltu $1,$3,$25 1471 1.1 christos addu $7,$1 1472 1.1 christos mflo ($24,$15,$8) 1473 1.1 christos mfhi ($25,$15,$8) 1474 1.1 christos addu $2,$24 1475 1.1 christos sltu $1,$2,$24 1476 1.1 christos multu ($15,$9) # mul_add_c(a[3],b[1],c2,c3,c1); 1477 1.1 christos addu $25,$1 1478 1.1 christos addu $3,$25 1479 1.1 christos sltu $1,$3,$25 1480 1.1 christos addu $7,$1 1481 1.1 christos sw $2,3*4($4) 1482 1.1 christos 1483 1.1 christos mflo ($24,$15,$9) 1484 1.1 christos mfhi ($25,$15,$9) 1485 1.1 christos addu $3,$24 1486 1.1 christos sltu $1,$3,$24 1487 1.1 christos multu ($14,$10) # mul_add_c(a[2],b[2],c2,c3,c1); 1488 1.1 christos addu $25,$1 1489 1.1 christos addu $7,$25 1490 1.1 christos sltu $2,$7,$25 1491 1.1 christos mflo ($24,$14,$10) 1492 1.1 christos mfhi ($25,$14,$10) 1493 1.1 christos addu $3,$24 1494 1.1 christos sltu $1,$3,$24 1495 1.1 christos multu ($13,$11) # mul_add_c(a[1],b[3],c2,c3,c1); 1496 1.1 christos addu $25,$1 1497 1.1 christos addu $7,$25 1498 1.1 christos sltu $1,$7,$25 1499 1.1 christos addu $2,$1 1500 1.1 christos mflo ($24,$13,$11) 1501 1.1 christos mfhi ($25,$13,$11) 1502 1.1 christos addu $3,$24 1503 1.1 christos sltu $1,$3,$24 1504 1.1 christos multu ($14,$11) # mul_add_c(a[2],b[3],c3,c1,c2); 1505 1.1 christos addu $25,$1 1506 1.1 christos addu $7,$25 1507 1.1 christos sltu $1,$7,$25 1508 1.1 christos addu $2,$1 1509 1.1 christos sw $3,4*4($4) 1510 1.1 christos 1511 1.1 christos mflo ($24,$14,$11) 1512 1.1 christos mfhi ($25,$14,$11) 1513 1.1 christos addu $7,$24 1514 1.1 christos sltu $1,$7,$24 1515 1.1 christos multu ($15,$10) # mul_add_c(a[3],b[2],c3,c1,c2); 1516 1.1 christos addu $25,$1 1517 1.1 christos addu $2,$25 1518 1.1 christos sltu $3,$2,$25 1519 1.1 christos mflo ($24,$15,$10) 1520 1.1 christos mfhi ($25,$15,$10) 1521 1.1 christos addu $7,$24 1522 1.1 christos sltu $1,$7,$24 1523 1.1 christos multu ($15,$11) # mul_add_c(a[3],b[3],c1,c2,c3); 1524 1.1 christos addu $25,$1 1525 1.1 christos addu $2,$25 1526 1.1 christos sltu $1,$2,$25 1527 1.1 christos addu $3,$1 1528 1.1 christos sw $7,5*4($4) 1529 1.1 christos 1530 1.1 christos mflo ($24,$15,$11) 1531 1.1 christos mfhi ($25,$15,$11) 1532 1.1 christos addu $2,$24 1533 1.1 christos sltu $1,$2,$24 1534 1.1 christos addu $25,$1 1535 1.1 christos addu $3,$25 1536 1.1 christos sw $2,6*4($4) 1537 1.1 christos sw $3,7*4($4) 1538 1.1 christos 1539 1.1 christos .set noreorder 1540 1.1 christos jr $31 1541 1.1 christos nop 1542 1.1 christos .end bn_mul_comba4 1543 1.1 christos 1544 1.1 christos .align 5 1545 1.1 christos .globl bn_sqr_comba8 1546 1.1 christos .ent bn_sqr_comba8 1547 1.1 christos bn_sqr_comba8: 1548 1.1 christos .set reorder 1549 1.1 christos lw $12,0($5) 1550 1.1 christos lw $13,4($5) 1551 1.1 christos lw $14,2*4($5) 1552 1.1 christos lw $15,3*4($5) 1553 1.1 christos 1554 1.1 christos multu ($12,$12) # mul_add_c(a[0],b[0],c1,c2,c3); 1555 1.1 christos lw $8,4*4($5) 1556 1.1 christos lw $9,5*4($5) 1557 1.1 christos lw $10,6*4($5) 1558 1.1 christos lw $11,7*4($5) 1559 1.1 christos mflo ($2,$12,$12) 1560 1.1 christos mfhi ($3,$12,$12) 1561 1.1 christos sw $2,0($4) 1562 1.1 christos 1563 1.1 christos multu ($12,$13) # mul_add_c2(a[0],b[1],c2,c3,c1); 1564 1.1 christos mflo ($24,$12,$13) 1565 1.1 christos mfhi ($25,$12,$13) 1566 1.1 christos slt $2,$25,$0 1567 1.1 christos sll $25,1 1568 1.1 christos multu ($14,$12) # mul_add_c2(a[2],b[0],c3,c1,c2); 1569 1.1 christos slt $6,$24,$0 1570 1.1 christos addu $25,$6 1571 1.1 christos sll $24,1 1572 1.1 christos addu $3,$24 1573 1.1 christos sltu $1,$3,$24 1574 1.1 christos addu $7,$25,$1 1575 1.1 christos sw $3,4($4) 1576 1.1 christos sltu $1,$7,$25 1577 1.1 christos addu $2,$1 1578 1.1 christos mflo ($24,$14,$12) 1579 1.1 christos mfhi ($25,$14,$12) 1580 1.1 christos addu $7,$24 1581 1.1 christos sltu $1,$7,$24 1582 1.1 christos multu ($13,$13) # forward multiplication 1583 1.1 christos addu $7,$24 1584 1.1 christos addu $1,$25 1585 1.1 christos sltu $24,$7,$24 1586 1.1 christos addu $2,$1 1587 1.1 christos addu $25,$24 1588 1.1 christos sltu $3,$2,$1 1589 1.1 christos addu $2,$25 1590 1.1 christos sltu $25,$2,$25 1591 1.1 christos addu $3,$25 1592 1.1 christos mflo ($24,$13,$13) 1593 1.1 christos mfhi ($25,$13,$13) 1594 1.1 christos addu $7,$24 1595 1.1 christos sltu $1,$7,$24 1596 1.1 christos multu ($12,$15) # mul_add_c2(a[0],b[3],c1,c2,c3); 1597 1.1 christos addu $25,$1 1598 1.1 christos addu $2,$25 1599 1.1 christos sltu $1,$2,$25 1600 1.1 christos addu $3,$1 1601 1.1 christos sw $7,2*4($4) 1602 1.1 christos mflo ($24,$12,$15) 1603 1.1 christos mfhi ($25,$12,$15) 1604 1.1 christos addu $2,$24 1605 1.1 christos sltu $1,$2,$24 1606 1.1 christos multu ($13,$14) # forward multiplication 1607 1.1 christos addu $2,$24 1608 1.1 christos addu $1,$25 1609 1.1 christos sltu $24,$2,$24 1610 1.1 christos addu $3,$1 1611 1.1 christos addu $25,$24 1612 1.1 christos sltu $7,$3,$1 1613 1.1 christos addu $3,$25 1614 1.1 christos sltu $25,$3,$25 1615 1.1 christos addu $7,$25 1616 1.1 christos mflo ($24,$13,$14) 1617 1.1 christos mfhi ($25,$13,$14) 1618 1.1 christos addu $2,$24 1619 1.1 christos sltu $1,$2,$24 1620 1.1 christos multu ($8,$12) # forward multiplication 1621 1.1 christos addu $2,$24 1622 1.1 christos addu $1,$25 1623 1.1 christos sltu $24,$2,$24 1624 1.1 christos addu $3,$1 1625 1.1 christos addu $25,$24 1626 1.1 christos sltu $1,$3,$1 1627 1.1 christos addu $3,$25 1628 1.1 christos addu $7,$1 1629 1.1 christos sltu $25,$3,$25 1630 1.1 christos addu $7,$25 1631 1.1 christos mflo ($24,$8,$12) 1632 1.1 christos mfhi ($25,$8,$12) 1633 1.1 christos sw $2,3*4($4) 1634 1.1 christos addu $3,$24 1635 1.1 christos sltu $1,$3,$24 1636 1.1 christos multu ($15,$13) # forward multiplication 1637 1.1 christos addu $3,$24 1638 1.1 christos addu $1,$25 1639 1.1 christos sltu $24,$3,$24 1640 1.1 christos addu $7,$1 1641 1.1 christos addu $25,$24 1642 1.1 christos sltu $2,$7,$1 1643 1.1 christos addu $7,$25 1644 1.1 christos sltu $25,$7,$25 1645 1.1 christos addu $2,$25 1646 1.1 christos mflo ($24,$15,$13) 1647 1.1 christos mfhi ($25,$15,$13) 1648 1.1 christos addu $3,$24 1649 1.1 christos sltu $1,$3,$24 1650 1.1 christos multu ($14,$14) # forward multiplication 1651 1.1 christos addu $3,$24 1652 1.1 christos addu $1,$25 1653 1.1 christos sltu $24,$3,$24 1654 1.1 christos addu $7,$1 1655 1.1 christos addu $25,$24 1656 1.1 christos sltu $1,$7,$1 1657 1.1 christos addu $7,$25 1658 1.1 christos addu $2,$1 1659 1.1 christos sltu $25,$7,$25 1660 1.1 christos addu $2,$25 1661 1.1 christos mflo ($24,$14,$14) 1662 1.1 christos mfhi ($25,$14,$14) 1663 1.1 christos addu $3,$24 1664 1.1 christos sltu $1,$3,$24 1665 1.1 christos multu ($12,$9) # mul_add_c2(a[0],b[5],c3,c1,c2); 1666 1.1 christos addu $25,$1 1667 1.1 christos addu $7,$25 1668 1.1 christos sltu $1,$7,$25 1669 1.1 christos addu $2,$1 1670 1.1 christos sw $3,4*4($4) 1671 1.1 christos mflo ($24,$12,$9) 1672 1.1 christos mfhi ($25,$12,$9) 1673 1.1 christos addu $7,$24 1674 1.1 christos sltu $1,$7,$24 1675 1.1 christos multu ($13,$8) # forward multiplication 1676 1.1 christos addu $7,$24 1677 1.1 christos addu $1,$25 1678 1.1 christos sltu $24,$7,$24 1679 1.1 christos addu $2,$1 1680 1.1 christos addu $25,$24 1681 1.1 christos sltu $3,$2,$1 1682 1.1 christos addu $2,$25 1683 1.1 christos sltu $25,$2,$25 1684 1.1 christos addu $3,$25 1685 1.1 christos mflo ($24,$13,$8) 1686 1.1 christos mfhi ($25,$13,$8) 1687 1.1 christos addu $7,$24 1688 1.1 christos sltu $1,$7,$24 1689 1.1 christos multu ($14,$15) # forward multiplication 1690 1.1 christos addu $7,$24 1691 1.1 christos addu $1,$25 1692 1.1 christos sltu $24,$7,$24 1693 1.1 christos addu $2,$1 1694 1.1 christos addu $25,$24 1695 1.1 christos sltu $1,$2,$1 1696 1.1 christos addu $2,$25 1697 1.1 christos addu $3,$1 1698 1.1 christos sltu $25,$2,$25 1699 1.1 christos addu $3,$25 1700 1.1 christos mflo ($24,$14,$15) 1701 1.1 christos mfhi ($25,$14,$15) 1702 1.1 christos addu $7,$24 1703 1.1 christos sltu $1,$7,$24 1704 1.1 christos multu ($10,$12) # forward multiplication 1705 1.1 christos addu $7,$24 1706 1.1 christos addu $1,$25 1707 1.1 christos sltu $24,$7,$24 1708 1.1 christos addu $2,$1 1709 1.1 christos addu $25,$24 1710 1.1 christos sltu $1,$2,$1 1711 1.1 christos addu $2,$25 1712 1.1 christos addu $3,$1 1713 1.1 christos sltu $25,$2,$25 1714 1.1 christos addu $3,$25 1715 1.1 christos mflo ($24,$10,$12) 1716 1.1 christos mfhi ($25,$10,$12) 1717 1.1 christos sw $7,5*4($4) 1718 1.1 christos addu $2,$24 1719 1.1 christos sltu $1,$2,$24 1720 1.1 christos multu ($9,$13) # forward multiplication 1721 1.1 christos addu $2,$24 1722 1.1 christos addu $1,$25 1723 1.1 christos sltu $24,$2,$24 1724 1.1 christos addu $3,$1 1725 1.1 christos addu $25,$24 1726 1.1 christos sltu $7,$3,$1 1727 1.1 christos addu $3,$25 1728 1.1 christos sltu $25,$3,$25 1729 1.1 christos addu $7,$25 1730 1.1 christos mflo ($24,$9,$13) 1731 1.1 christos mfhi ($25,$9,$13) 1732 1.1 christos addu $2,$24 1733 1.1 christos sltu $1,$2,$24 1734 1.1 christos multu ($8,$14) # forward multiplication 1735 1.1 christos addu $2,$24 1736 1.1 christos addu $1,$25 1737 1.1 christos sltu $24,$2,$24 1738 1.1 christos addu $3,$1 1739 1.1 christos addu $25,$24 1740 1.1 christos sltu $1,$3,$1 1741 1.1 christos addu $3,$25 1742 1.1 christos addu $7,$1 1743 1.1 christos sltu $25,$3,$25 1744 1.1 christos addu $7,$25 1745 1.1 christos mflo ($24,$8,$14) 1746 1.1 christos mfhi ($25,$8,$14) 1747 1.1 christos addu $2,$24 1748 1.1 christos sltu $1,$2,$24 1749 1.1 christos multu ($15,$15) # forward multiplication 1750 1.1 christos addu $2,$24 1751 1.1 christos addu $1,$25 1752 1.1 christos sltu $24,$2,$24 1753 1.1 christos addu $3,$1 1754 1.1 christos addu $25,$24 1755 1.1 christos sltu $1,$3,$1 1756 1.1 christos addu $3,$25 1757 1.1 christos addu $7,$1 1758 1.1 christos sltu $25,$3,$25 1759 1.1 christos addu $7,$25 1760 1.1 christos mflo ($24,$15,$15) 1761 1.1 christos mfhi ($25,$15,$15) 1762 1.1 christos addu $2,$24 1763 1.1 christos sltu $1,$2,$24 1764 1.1 christos multu ($12,$11) # mul_add_c2(a[0],b[7],c2,c3,c1); 1765 1.1 christos addu $25,$1 1766 1.1 christos addu $3,$25 1767 1.1 christos sltu $1,$3,$25 1768 1.1 christos addu $7,$1 1769 1.1 christos sw $2,6*4($4) 1770 1.1 christos mflo ($24,$12,$11) 1771 1.1 christos mfhi ($25,$12,$11) 1772 1.1 christos addu $3,$24 1773 1.1 christos sltu $1,$3,$24 1774 1.1 christos multu ($13,$10) # forward multiplication 1775 1.1 christos addu $3,$24 1776 1.1 christos addu $1,$25 1777 1.1 christos sltu $24,$3,$24 1778 1.1 christos addu $7,$1 1779 1.1 christos addu $25,$24 1780 1.1 christos sltu $2,$7,$1 1781 1.1 christos addu $7,$25 1782 1.1 christos sltu $25,$7,$25 1783 1.1 christos addu $2,$25 1784 1.1 christos mflo ($24,$13,$10) 1785 1.1 christos mfhi ($25,$13,$10) 1786 1.1 christos addu $3,$24 1787 1.1 christos sltu $1,$3,$24 1788 1.1 christos multu ($14,$9) # forward multiplication 1789 1.1 christos addu $3,$24 1790 1.1 christos addu $1,$25 1791 1.1 christos sltu $24,$3,$24 1792 1.1 christos addu $7,$1 1793 1.1 christos addu $25,$24 1794 1.1 christos sltu $1,$7,$1 1795 1.1 christos addu $7,$25 1796 1.1 christos addu $2,$1 1797 1.1 christos sltu $25,$7,$25 1798 1.1 christos addu $2,$25 1799 1.1 christos mflo ($24,$14,$9) 1800 1.1 christos mfhi ($25,$14,$9) 1801 1.1 christos addu $3,$24 1802 1.1 christos sltu $1,$3,$24 1803 1.1 christos multu ($15,$8) # forward multiplication 1804 1.1 christos addu $3,$24 1805 1.1 christos addu $1,$25 1806 1.1 christos sltu $24,$3,$24 1807 1.1 christos addu $7,$1 1808 1.1 christos addu $25,$24 1809 1.1 christos sltu $1,$7,$1 1810 1.1 christos addu $7,$25 1811 1.1 christos addu $2,$1 1812 1.1 christos sltu $25,$7,$25 1813 1.1 christos addu $2,$25 1814 1.1 christos mflo ($24,$15,$8) 1815 1.1 christos mfhi ($25,$15,$8) 1816 1.1 christos addu $3,$24 1817 1.1 christos sltu $1,$3,$24 1818 1.1 christos multu ($11,$13) # forward multiplication 1819 1.1 christos addu $3,$24 1820 1.1 christos addu $1,$25 1821 1.1 christos sltu $24,$3,$24 1822 1.1 christos addu $7,$1 1823 1.1 christos addu $25,$24 1824 1.1 christos sltu $1,$7,$1 1825 1.1 christos addu $7,$25 1826 1.1 christos addu $2,$1 1827 1.1 christos sltu $25,$7,$25 1828 1.1 christos addu $2,$25 1829 1.1 christos mflo ($24,$11,$13) 1830 1.1 christos mfhi ($25,$11,$13) 1831 1.1 christos sw $3,7*4($4) 1832 1.1 christos addu $7,$24 1833 1.1 christos sltu $1,$7,$24 1834 1.1 christos multu ($10,$14) # forward multiplication 1835 1.1 christos addu $7,$24 1836 1.1 christos addu $1,$25 1837 1.1 christos sltu $24,$7,$24 1838 1.1 christos addu $2,$1 1839 1.1 christos addu $25,$24 1840 1.1 christos sltu $3,$2,$1 1841 1.1 christos addu $2,$25 1842 1.1 christos sltu $25,$2,$25 1843 1.1 christos addu $3,$25 1844 1.1 christos mflo ($24,$10,$14) 1845 1.1 christos mfhi ($25,$10,$14) 1846 1.1 christos addu $7,$24 1847 1.1 christos sltu $1,$7,$24 1848 1.1 christos multu ($9,$15) # forward multiplication 1849 1.1 christos addu $7,$24 1850 1.1 christos addu $1,$25 1851 1.1 christos sltu $24,$7,$24 1852 1.1 christos addu $2,$1 1853 1.1 christos addu $25,$24 1854 1.1 christos sltu $1,$2,$1 1855 1.1 christos addu $2,$25 1856 1.1 christos addu $3,$1 1857 1.1 christos sltu $25,$2,$25 1858 1.1 christos addu $3,$25 1859 1.1 christos mflo ($24,$9,$15) 1860 1.1 christos mfhi ($25,$9,$15) 1861 1.1 christos addu $7,$24 1862 1.1 christos sltu $1,$7,$24 1863 1.1 christos multu ($8,$8) # forward multiplication 1864 1.1 christos addu $7,$24 1865 1.1 christos addu $1,$25 1866 1.1 christos sltu $24,$7,$24 1867 1.1 christos addu $2,$1 1868 1.1 christos addu $25,$24 1869 1.1 christos sltu $1,$2,$1 1870 1.1 christos addu $2,$25 1871 1.1 christos addu $3,$1 1872 1.1 christos sltu $25,$2,$25 1873 1.1 christos addu $3,$25 1874 1.1 christos mflo ($24,$8,$8) 1875 1.1 christos mfhi ($25,$8,$8) 1876 1.1 christos addu $7,$24 1877 1.1 christos sltu $1,$7,$24 1878 1.1 christos multu ($14,$11) # mul_add_c2(a[2],b[7],c1,c2,c3); 1879 1.1 christos addu $25,$1 1880 1.1 christos addu $2,$25 1881 1.1 christos sltu $1,$2,$25 1882 1.1 christos addu $3,$1 1883 1.1 christos sw $7,8*4($4) 1884 1.1 christos mflo ($24,$14,$11) 1885 1.1 christos mfhi ($25,$14,$11) 1886 1.1 christos addu $2,$24 1887 1.1 christos sltu $1,$2,$24 1888 1.1 christos multu ($15,$10) # forward multiplication 1889 1.1 christos addu $2,$24 1890 1.1 christos addu $1,$25 1891 1.1 christos sltu $24,$2,$24 1892 1.1 christos addu $3,$1 1893 1.1 christos addu $25,$24 1894 1.1 christos sltu $7,$3,$1 1895 1.1 christos addu $3,$25 1896 1.1 christos sltu $25,$3,$25 1897 1.1 christos addu $7,$25 1898 1.1 christos mflo ($24,$15,$10) 1899 1.1 christos mfhi ($25,$15,$10) 1900 1.1 christos addu $2,$24 1901 1.1 christos sltu $1,$2,$24 1902 1.1 christos multu ($8,$9) # forward multiplication 1903 1.1 christos addu $2,$24 1904 1.1 christos addu $1,$25 1905 1.1 christos sltu $24,$2,$24 1906 1.1 christos addu $3,$1 1907 1.1 christos addu $25,$24 1908 1.1 christos sltu $1,$3,$1 1909 1.1 christos addu $3,$25 1910 1.1 christos addu $7,$1 1911 1.1 christos sltu $25,$3,$25 1912 1.1 christos addu $7,$25 1913 1.1 christos mflo ($24,$8,$9) 1914 1.1 christos mfhi ($25,$8,$9) 1915 1.1 christos addu $2,$24 1916 1.1 christos sltu $1,$2,$24 1917 1.1 christos multu ($11,$15) # forward multiplication 1918 1.1 christos addu $2,$24 1919 1.1 christos addu $1,$25 1920 1.1 christos sltu $24,$2,$24 1921 1.1 christos addu $3,$1 1922 1.1 christos addu $25,$24 1923 1.1 christos sltu $1,$3,$1 1924 1.1 christos addu $3,$25 1925 1.1 christos addu $7,$1 1926 1.1 christos sltu $25,$3,$25 1927 1.1 christos addu $7,$25 1928 1.1 christos mflo ($24,$11,$15) 1929 1.1 christos mfhi ($25,$11,$15) 1930 1.1 christos sw $2,9*4($4) 1931 1.1 christos addu $3,$24 1932 1.1 christos sltu $1,$3,$24 1933 1.1 christos multu ($10,$8) # forward multiplication 1934 1.1 christos addu $3,$24 1935 1.1 christos addu $1,$25 1936 1.1 christos sltu $24,$3,$24 1937 1.1 christos addu $7,$1 1938 1.1 christos addu $25,$24 1939 1.1 christos sltu $2,$7,$1 1940 1.1 christos addu $7,$25 1941 1.1 christos sltu $25,$7,$25 1942 1.1 christos addu $2,$25 1943 1.1 christos mflo ($24,$10,$8) 1944 1.1 christos mfhi ($25,$10,$8) 1945 1.1 christos addu $3,$24 1946 1.1 christos sltu $1,$3,$24 1947 1.1 christos multu ($9,$9) # forward multiplication 1948 1.1 christos addu $3,$24 1949 1.1 christos addu $1,$25 1950 1.1 christos sltu $24,$3,$24 1951 1.1 christos addu $7,$1 1952 1.1 christos addu $25,$24 1953 1.1 christos sltu $1,$7,$1 1954 1.1 christos addu $7,$25 1955 1.1 christos addu $2,$1 1956 1.1 christos sltu $25,$7,$25 1957 1.1 christos addu $2,$25 1958 1.1 christos mflo ($24,$9,$9) 1959 1.1 christos mfhi ($25,$9,$9) 1960 1.1 christos addu $3,$24 1961 1.1 christos sltu $1,$3,$24 1962 1.1 christos multu ($8,$11) # mul_add_c2(a[4],b[7],c3,c1,c2); 1963 1.1 christos addu $25,$1 1964 1.1 christos addu $7,$25 1965 1.1 christos sltu $1,$7,$25 1966 1.1 christos addu $2,$1 1967 1.1 christos sw $3,10*4($4) 1968 1.1 christos mflo ($24,$8,$11) 1969 1.1 christos mfhi ($25,$8,$11) 1970 1.1 christos addu $7,$24 1971 1.1 christos sltu $1,$7,$24 1972 1.1 christos multu ($9,$10) # forward multiplication 1973 1.1 christos addu $7,$24 1974 1.1 christos addu $1,$25 1975 1.1 christos sltu $24,$7,$24 1976 1.1 christos addu $2,$1 1977 1.1 christos addu $25,$24 1978 1.1 christos sltu $3,$2,$1 1979 1.1 christos addu $2,$25 1980 1.1 christos sltu $25,$2,$25 1981 1.1 christos addu $3,$25 1982 1.1 christos mflo ($24,$9,$10) 1983 1.1 christos mfhi ($25,$9,$10) 1984 1.1 christos addu $7,$24 1985 1.1 christos sltu $1,$7,$24 1986 1.1 christos multu ($11,$9) # forward multiplication 1987 1.1 christos addu $7,$24 1988 1.1 christos addu $1,$25 1989 1.1 christos sltu $24,$7,$24 1990 1.1 christos addu $2,$1 1991 1.1 christos addu $25,$24 1992 1.1 christos sltu $1,$2,$1 1993 1.1 christos addu $2,$25 1994 1.1 christos addu $3,$1 1995 1.1 christos sltu $25,$2,$25 1996 1.1 christos addu $3,$25 1997 1.1 christos mflo ($24,$11,$9) 1998 1.1 christos mfhi ($25,$11,$9) 1999 1.1 christos sw $7,11*4($4) 2000 1.1 christos addu $2,$24 2001 1.1 christos sltu $1,$2,$24 2002 1.1 christos multu ($10,$10) # forward multiplication 2003 1.1 christos addu $2,$24 2004 1.1 christos addu $1,$25 2005 1.1 christos sltu $24,$2,$24 2006 1.1 christos addu $3,$1 2007 1.1 christos addu $25,$24 2008 1.1 christos sltu $7,$3,$1 2009 1.1 christos addu $3,$25 2010 1.1 christos sltu $25,$3,$25 2011 1.1 christos addu $7,$25 2012 1.1 christos mflo ($24,$10,$10) 2013 1.1 christos mfhi ($25,$10,$10) 2014 1.1 christos addu $2,$24 2015 1.1 christos sltu $1,$2,$24 2016 1.1 christos multu ($10,$11) # mul_add_c2(a[6],b[7],c2,c3,c1); 2017 1.1 christos addu $25,$1 2018 1.1 christos addu $3,$25 2019 1.1 christos sltu $1,$3,$25 2020 1.1 christos addu $7,$1 2021 1.1 christos sw $2,12*4($4) 2022 1.1 christos mflo ($24,$10,$11) 2023 1.1 christos mfhi ($25,$10,$11) 2024 1.1 christos addu $3,$24 2025 1.1 christos sltu $1,$3,$24 2026 1.1 christos multu ($11,$11) # forward multiplication 2027 1.1 christos addu $3,$24 2028 1.1 christos addu $1,$25 2029 1.1 christos sltu $24,$3,$24 2030 1.1 christos addu $7,$1 2031 1.1 christos addu $25,$24 2032 1.1 christos sltu $2,$7,$1 2033 1.1 christos addu $7,$25 2034 1.1 christos sltu $25,$7,$25 2035 1.1 christos addu $2,$25 2036 1.1 christos mflo ($24,$11,$11) 2037 1.1 christos mfhi ($25,$11,$11) 2038 1.1 christos sw $3,13*4($4) 2039 1.1 christos 2040 1.1 christos addu $7,$24 2041 1.1 christos sltu $1,$7,$24 2042 1.1 christos addu $25,$1 2043 1.1 christos addu $2,$25 2044 1.1 christos sw $7,14*4($4) 2045 1.1 christos sw $2,15*4($4) 2046 1.1 christos 2047 1.1 christos .set noreorder 2048 1.1 christos jr $31 2049 1.1 christos nop 2050 1.1 christos .end bn_sqr_comba8 2051 1.1 christos 2052 1.1 christos .align 5 2053 1.1 christos .globl bn_sqr_comba4 2054 1.1 christos .ent bn_sqr_comba4 2055 1.1 christos bn_sqr_comba4: 2056 1.1 christos .set reorder 2057 1.1 christos lw $12,0($5) 2058 1.1 christos lw $13,4($5) 2059 1.1 christos multu ($12,$12) # mul_add_c(a[0],b[0],c1,c2,c3); 2060 1.1 christos lw $14,2*4($5) 2061 1.1 christos lw $15,3*4($5) 2062 1.1 christos mflo ($2,$12,$12) 2063 1.1 christos mfhi ($3,$12,$12) 2064 1.1 christos sw $2,0($4) 2065 1.1 christos 2066 1.1 christos multu ($12,$13) # mul_add_c2(a[0],b[1],c2,c3,c1); 2067 1.1 christos mflo ($24,$12,$13) 2068 1.1 christos mfhi ($25,$12,$13) 2069 1.1 christos slt $2,$25,$0 2070 1.1 christos sll $25,1 2071 1.1 christos multu ($14,$12) # mul_add_c2(a[2],b[0],c3,c1,c2); 2072 1.1 christos slt $6,$24,$0 2073 1.1 christos addu $25,$6 2074 1.1 christos sll $24,1 2075 1.1 christos addu $3,$24 2076 1.1 christos sltu $1,$3,$24 2077 1.1 christos addu $7,$25,$1 2078 1.1 christos sw $3,4($4) 2079 1.1 christos sltu $1,$7,$25 2080 1.1 christos addu $2,$1 2081 1.1 christos mflo ($24,$14,$12) 2082 1.1 christos mfhi ($25,$14,$12) 2083 1.1 christos addu $7,$24 2084 1.1 christos sltu $1,$7,$24 2085 1.1 christos multu ($13,$13) # forward multiplication 2086 1.1 christos addu $7,$24 2087 1.1 christos addu $1,$25 2088 1.1 christos sltu $24,$7,$24 2089 1.1 christos addu $2,$1 2090 1.1 christos addu $25,$24 2091 1.1 christos sltu $3,$2,$1 2092 1.1 christos addu $2,$25 2093 1.1 christos sltu $25,$2,$25 2094 1.1 christos addu $3,$25 2095 1.1 christos mflo ($24,$13,$13) 2096 1.1 christos mfhi ($25,$13,$13) 2097 1.1 christos addu $7,$24 2098 1.1 christos sltu $1,$7,$24 2099 1.1 christos multu ($12,$15) # mul_add_c2(a[0],b[3],c1,c2,c3); 2100 1.1 christos addu $25,$1 2101 1.1 christos addu $2,$25 2102 1.1 christos sltu $1,$2,$25 2103 1.1 christos addu $3,$1 2104 1.1 christos sw $7,2*4($4) 2105 1.1 christos mflo ($24,$12,$15) 2106 1.1 christos mfhi ($25,$12,$15) 2107 1.1 christos addu $2,$24 2108 1.1 christos sltu $1,$2,$24 2109 1.1 christos multu ($13,$14) # forward multiplication 2110 1.1 christos addu $2,$24 2111 1.1 christos addu $1,$25 2112 1.1 christos sltu $24,$2,$24 2113 1.1 christos addu $3,$1 2114 1.1 christos addu $25,$24 2115 1.1 christos sltu $7,$3,$1 2116 1.1 christos addu $3,$25 2117 1.1 christos sltu $25,$3,$25 2118 1.1 christos addu $7,$25 2119 1.1 christos mflo ($24,$13,$14) 2120 1.1 christos mfhi ($25,$13,$14) 2121 1.1 christos addu $2,$24 2122 1.1 christos sltu $1,$2,$24 2123 1.1 christos multu ($15,$13) # forward multiplication 2124 1.1 christos addu $2,$24 2125 1.1 christos addu $1,$25 2126 1.1 christos sltu $24,$2,$24 2127 1.1 christos addu $3,$1 2128 1.1 christos addu $25,$24 2129 1.1 christos sltu $1,$3,$1 2130 1.1 christos addu $3,$25 2131 1.1 christos addu $7,$1 2132 1.1 christos sltu $25,$3,$25 2133 1.1 christos addu $7,$25 2134 1.1 christos mflo ($24,$15,$13) 2135 1.1 christos mfhi ($25,$15,$13) 2136 1.1 christos sw $2,3*4($4) 2137 1.1 christos addu $3,$24 2138 1.1 christos sltu $1,$3,$24 2139 1.1 christos multu ($14,$14) # forward multiplication 2140 1.1 christos addu $3,$24 2141 1.1 christos addu $1,$25 2142 1.1 christos sltu $24,$3,$24 2143 1.1 christos addu $7,$1 2144 1.1 christos addu $25,$24 2145 1.1 christos sltu $2,$7,$1 2146 1.1 christos addu $7,$25 2147 1.1 christos sltu $25,$7,$25 2148 1.1 christos addu $2,$25 2149 1.1 christos mflo ($24,$14,$14) 2150 1.1 christos mfhi ($25,$14,$14) 2151 1.1 christos addu $3,$24 2152 1.1 christos sltu $1,$3,$24 2153 1.1 christos multu ($14,$15) # mul_add_c2(a[2],b[3],c3,c1,c2); 2154 1.1 christos addu $25,$1 2155 1.1 christos addu $7,$25 2156 1.1 christos sltu $1,$7,$25 2157 1.1 christos addu $2,$1 2158 1.1 christos sw $3,4*4($4) 2159 1.1 christos mflo ($24,$14,$15) 2160 1.1 christos mfhi ($25,$14,$15) 2161 1.1 christos addu $7,$24 2162 1.1 christos sltu $1,$7,$24 2163 1.1 christos multu ($15,$15) # forward multiplication 2164 1.1 christos addu $7,$24 2165 1.1 christos addu $1,$25 2166 1.1 christos sltu $24,$7,$24 2167 1.1 christos addu $2,$1 2168 1.1 christos addu $25,$24 2169 1.1 christos sltu $3,$2,$1 2170 1.1 christos addu $2,$25 2171 1.1 christos sltu $25,$2,$25 2172 1.1 christos addu $3,$25 2173 1.1 christos mflo ($24,$15,$15) 2174 1.1 christos mfhi ($25,$15,$15) 2175 1.1 christos sw $7,5*4($4) 2176 1.1 christos 2177 1.1 christos addu $2,$24 2178 1.1 christos sltu $1,$2,$24 2179 1.1 christos addu $25,$1 2180 1.1 christos addu $3,$25 2181 1.1 christos sw $2,6*4($4) 2182 1.1 christos sw $3,7*4($4) 2183 1.1 christos 2184 1.1 christos .set noreorder 2185 1.1 christos jr $31 2186 1.1 christos nop 2187 1.1 christos .end bn_sqr_comba4 2188