%verify "executed" %default {"routine":"__divdi3","special":"$0x80000000"} /* div/2addr vA, vB */ movzbl rINSTbl,%eax shrl $$4,%eax # eax<- B andb $$0xf,rINSTbl # rINST<- A SPILL(rIBASE) # save rIBASE/%edx GET_VREG_WORD rIBASE %eax 0 GET_VREG_WORD %eax %eax 1 movl rIBASE,OUT_ARG2(%esp) testl %eax,%eax je .L${opcode}_check_zero cmpl $$-1,%eax je .L${opcode}_check_neg1 .L${opcode}_notSpecial: GET_VREG_WORD rIBASE rINST 0 GET_VREG_WORD %ecx rINST 1 .L${opcode}_notSpecial1: movl %eax,OUT_ARG3(%esp) movl rIBASE,OUT_ARG0(%esp) movl %ecx,OUT_ARG1(%esp) call $routine .L${opcode}_finish: SET_VREG_WORD rIBASE rINST 1 UNSPILL(rIBASE) # restore rIBASE/%edx SET_VREG_WORD %eax rINST 0 FETCH_INST_OPCODE 1 %ecx ADVANCE_PC 1 GOTO_NEXT_R %ecx .L${opcode}_check_zero: testl rIBASE,rIBASE jne .L${opcode}_notSpecial jmp common_errDivideByZero .L${opcode}_check_neg1: testl rIBASE,%eax jne .L${opcode}_notSpecial GET_VREG_WORD rIBASE rINST 0 GET_VREG_WORD %ecx rINST 1 testl rIBASE,rIBASE jne .L${opcode}_notSpecial1 cmpl $$0x80000000,%ecx jne .L${opcode}_notSpecial1 /* minint / -1, return minint on div, 0 on rem */ xorl %eax,%eax movl $special,rIBASE jmp .L${opcode}_finish