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