summaryrefslogtreecommitdiff
path: root/vm/mterp/x86/OP_MUL_INT_2ADDR.S
blob: 823ab649dd8b843d0f8f2bada9b5e74f96e7e21e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
%verify "executed"
    /* mul vA, vB */
    movzx   rINST_HI,%ecx               # ecx<- A+
    sarl    $$12,rINST_FULL             # rINST_FULL<- B
    GET_VREG(%eax,rINST_FULL)           # eax<- vB
    andb    $$0xf,%cl                   # ecx<- A
    SPILL(rPC)
    imull   (rFP,%ecx,4),%eax
    UNSPILL(rPC)
    SET_VREG(%eax,%ecx)
    FETCH_INST_WORD(1)
    ADVANCE_PC(1)
    GOTO_NEXT