1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project%default {"result":"","special":""}
2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /*
3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * 32-bit div/rem "lit8" binary operation.  Handles special case of
4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * op0=minint & op1=-1
5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /* div/rem/lit8 vAA, vBB, #+CC */
7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    movzbl    2(rPC),%eax              # eax<- BB
8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    movsbl    3(rPC),%ecx              # ecx<- ssssssCC
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    GET_VREG  (%eax,%eax)              # eax<- rBB
10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    movzx     rINST_HI,rINST_FULL      # rINST_FULL<- AA
11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    SPILL(rPC)
12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    cmpl     $$0,%ecx
13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    je       common_errDivideByZero
14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    cmpl     $$0x80000000,%eax
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    jne      .L${opcode}_continue_div
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    cmpl     $$-1,%ecx
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    jne      .L${opcode}_continue_div
18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    movl     $special,$result
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    jmp      .L${opcode}_finish_div
20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project%break
22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project.L${opcode}_continue_div:
23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    cltd
24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    idivl   %ecx
25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project.L${opcode}_finish_div:
26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    SET_VREG($result,rINST_FULL)
27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    UNSPILL(rPC)
28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    FETCH_INST_WORD(2)
29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    ADVANCE_PC(2)
30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    GOTO_NEXT
31