blob: ab535f3fb0a564e1f06e21ada90f7b87d5597971 [file] [log] [blame]
Serguei Katkov6cbe0812016-03-01 16:10:48 +06001%default {"result":"","rem":"0"}
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 movzbq 2(rPC), %rax # eax <- BB
8 movsbl 3(rPC), %ecx # ecx <- ssssssCC
9 GET_VREG %eax, %rax # eax <- rBB
10 testl %ecx, %ecx
11 je common_errDivideByZero
12 cmpl $$-1, %ecx
13 je 2f
14 cdq # rax <- sign-extended of eax
15 idivl %ecx
161:
17 SET_VREG $result, rINSTq # vA <- result
18 ADVANCE_PC_FETCH_AND_GOTO_NEXT 2
192:
20 .if $rem
21 xorl $result, $result
22 .else
23 negl $result
24 .endif
25 jmp 1b