• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1%verify "executed"
2    /*
3     * Signed 64-bit integer multiply.
4     *
5     * For JIT: op1 in a0/a1, op2 in a2/a3, return in v0/v1
6     *
7     * Consider WXxYZ (a1a0 x a3a2) with a long multiply:
8     *
9     *         a1   a0
10     *   x     a3   a2
11     *   -------------
12     *       a2a1 a2a0
13     *       a3a0
14     *  a3a1 (<= unused)
15     *  ---------------
16     *         v1   v0
17     *
18     */
19    /* mul-long vAA, vBB, vCC */
20    mul     rRESULT1,rARG3,rARG0              #  v1= a3a0
21    multu   rARG2,rARG0
22    mfhi    t1
23    mflo    rRESULT0                          #  v0= a2a0
24    mul     t0,rARG2,rARG1                    #  t0= a2a1
25    addu    rRESULT1,rRESULT1,t1              #  v1= a3a0 + hi(a2a0)
26    addu    rRESULT1,rRESULT1,t0              #  v1= a3a0 + hi(a2a0) + a2a1;
27    RETURN
28