Home | History | Annotate | Download | only in mips
      1 %verify "executed"
      2     /*
      3      * See comments in OP_MUL_LONG.S
      4      */
      5     /* mul-long/2addr vA, vB */
      6     GET_OPA4(t0)                           #  t0 <- A+
      7 
      8     EAS2(t0, rFP, t0)                      #  t0 <- &fp[A]
      9     LOAD64(a0, a1, t0)                     #  vAA.low / high
     10 
     11     GET_OPB(t1)                            #  t1 <- B
     12     EAS2(t1, rFP, t1)                      #  t1 <- &fp[B]
     13     LOAD64(a2, a3, t1)                     #  vBB.low / high
     14 
     15     mul       v1, a3, a0                   #  v1= a3a0
     16     multu     a2, a0
     17     mfhi      t1
     18     mflo      v0                           #  v0= a2a0
     19     mul       t2, a2, a1                   #  t2= a2a1
     20     addu      v1, v1, t1                   #  v1= a3a0 + hi(a2a0)
     21     addu      v1, v1, t2                   #  v1= v1 + a2a1;
     22 
     23     FETCH_ADVANCE_INST(1)                  #  advance rPC, load rINST
     24     GET_INST_OPCODE(t1)                    #  extract opcode from rINST
     25     # vAA <- v0 (low)
     26     STORE64(v0, v1, t0)                    #  vAA+1 <- v1 (high)
     27     GOTO_OPCODE(t1)                        #  jump to next instruction
     28 
     29