blob: 8541f119dd3bbda1b7c3f7321aecf63b91d8847a [file] [log] [blame]
Douglas Leung200f0402016-02-25 20:05:47 -08001 /*
2 * Generic 64-bit "/2addr" binary operation. Provide an "instr" line
3 * that specifies an instruction that performs "result = a0-a1 op a2-a3".
4 * This could be an MIPS instruction or a function call.
5 *
6 * For: add-double/2addr, sub-double/2addr, mul-double/2addr,
7 * div-double/2addr, rem-double/2addr
8 */
9 /* binop/2addr vA, vB */
10 GET_OPA4(rOBJ) # rOBJ <- A+
11 GET_OPB(a1) # a1 <- B
12 EAS2(a1, rFP, a1) # a1 <- &fp[B]
13 EAS2(t0, rFP, rOBJ) # t0 <- &fp[A]
14 LOAD64_F(fa0, fa0f, t0)
15 LOAD64_F(fa1, fa1f, a1)
16
17 FETCH_ADVANCE_INST(1) # advance rPC, load rINST
18 $instr
19 SET_VREG64_F(fv0, fv0f, rOBJ)
20 GET_INST_OPCODE(t0) # extract opcode from rINST
21 GOTO_OPCODE(t0) # jump to next instruction