%default {"result":"","special":""} /* * 32-bit binary div/rem operation. Handles special case of op0=minint and * op1=-1. */ /* div/rem/2addr vA, vB */ movzx rINSTbl, %ecx # eax <- BA mov rIBASE, LOCAL0(%esp) sarl $$4, %ecx # ecx <- B GET_VREG %ecx, %ecx # eax <- vBB andb $$0xf, rINSTbl # rINST <- A GET_VREG %eax, rINST # eax <- vBB testl %ecx, %ecx je common_errDivideByZero cmpl $$-1, %ecx jne .L${opcode}_continue_div2addr cmpl $$0x80000000, %eax jne .L${opcode}_continue_div2addr movl $special, $result SET_VREG $result, rINST mov LOCAL0(%esp), rIBASE ADVANCE_PC_FETCH_AND_GOTO_NEXT 1 .L${opcode}_continue_div2addr: cltd idivl %ecx SET_VREG $result, rINST mov LOCAL0(%esp), rIBASE ADVANCE_PC_FETCH_AND_GOTO_NEXT 1