1%default {"result":"","special":""}
2    /*
3     * 32-bit binary div/rem operation.  Handles special case of op0=minint and
4     * op1=-1.
5     */
6    /* div/rem/2addr vA, vB */
7    movzx    rINSTbl,%ecx          # eax<- BA
8    SPILL(rIBASE)
9    sarl     $$4,%ecx              # ecx<- B
10    GET_VREG_R %ecx %ecx           # eax<- vBB
11    andb     $$0xf,rINSTbl         # rINST<- A
12    GET_VREG_R %eax rINST          # eax<- vBB
13    cmpl     $$0,%ecx
14    je       common_errDivideByZero
15    cmpl     $$-1,%ecx
16    jne      .L${opcode}_continue_div2addr
17    cmpl     $$0x80000000,%eax
18    jne      .L${opcode}_continue_div2addr
19    movl     $special,$result
20    SET_VREG $result rINST
21    UNSPILL(rIBASE)
22    FETCH_INST_OPCODE 1 %ecx
23    ADVANCE_PC 1
24    GOTO_NEXT_R %ecx
25
26.L${opcode}_continue_div2addr:
27    cltd
28    idivl   %ecx
29    SET_VREG $result rINST
30    UNSPILL(rIBASE)
31    FETCH_INST_OPCODE 1 %ecx
32    ADVANCE_PC 1
33    GOTO_NEXT_R %ecx
34