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