1    /*
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
22