blob: d91dcb809e2ddb06c23629a86b0eacf89e00b3c0 [file] [log] [blame]
%verify "executed"
/*
* Signed 64-bit integer multiply.
*
* For JIT: op1 in a0/a1, op2 in a2/a3, return in v0/v1
*
* Consider WXxYZ (a1a0 x a3a2) with a long multiply:
*
* a1 a0
* x a3 a2
* -------------
* a2a1 a2a0
* a3a0
* a3a1 (<= unused)
* ---------------
* v1 v0
*
*/
/* mul-long vAA, vBB, vCC */
mul rRESULT1,rARG3,rARG0 # v1= a3a0
multu rARG2,rARG0
mfhi t1
mflo rRESULT0 # v0= a2a0
mul t0,rARG2,rARG1 # t0= a2a1
addu rRESULT1,rRESULT1,t1 # v1= a3a0 + hi(a2a0)
addu rRESULT1,rRESULT1,t0 # v1= a3a0 + hi(a2a0) + a2a1;
RETURN