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