summaryrefslogtreecommitdiff
path: root/sys/src/libmp/amd64/mpdigdiv.s
blob: 6025d141a83ab51818bb6b0a5b68e39e4ed49e8b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
TEXT	mpdigdiv(SB),$0

/*	MOVL	dividend+0(FP),BX */
	MOVL	0(RARG),AX
	MOVL	4(RARG),DX
	MOVL	divisor+8(FP),BX
	MOVQ	quotient+16(FP),DI
	XORL	CX,CX
	CMPL	DX,BX		/* dividend >= 2^32 * divisor */
	JHS	_divovfl
	CMPL	BX,CX		/* divisor == 0 */
	JE	_divovfl
	DIVL	BX		/* AX = DX:AX/BX */
	MOVL	AX,0(DI)
	RET

	/* return all 1's */
_divovfl:
	NOTL	CX
	MOVL	CX,0(DI)
	RET