%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 |