summaryrefslogtreecommitdiffstats
path: root/vm/mterp/mips/OP_MOVE_WIDE_FROM16.S
blob: 7fd217a0ef1b2379d094ecc4bf41eb829b4bc7e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
%verify "executed"
    /* move-wide/from16 vAA, vBBBB */
    /* NOTE: regs can overlap, e.g. "move v6, v7" or "move v7, v6" */
    FETCH(a3, 1)                           #  a3 <- BBBB
    GET_OPA(a2)                            #  a2 <- AA
    EAS2(a3, rFP, a3)                      #  a3 <- &fp[BBBB]
    EAS2(a2, rFP, a2)                      #  a2 <- &fp[AA]
    LOAD64(a0, a1, a3)                     #  a0/a1 <- fp[BBBB]
    FETCH_ADVANCE_INST(2)                  #  advance rPC, load rINST
    STORE64(a0, a1, a2)                    #  fp[AA] <- a0/a1
    GET_INST_OPCODE(t0)                    #  extract opcode from rINST
    GOTO_OPCODE(t0)                        #  jump to next instruction