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