xref: /inferno-os/libkern/vlop-386.s (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
1 TEXT	_mulv(SB), $0
2 	MOVL	r+0(FP), CX
3 	MOVL	a+4(FP), AX
4 	MULL	b+12(FP)
5 	MOVL	AX, 0(CX)
6 	MOVL	DX, BX
7 	MOVL	a+4(FP), AX
8 	MULL	b+16(FP)
9 	ADDL	AX, BX
10 	MOVL	a+8(FP), AX
11 	MULL	b+12(FP)
12 	ADDL	AX, BX
13 	MOVL	BX, 4(CX)
14 	RET
15 
16 TEXT	_mul64by32(SB), $0
17 	MOVL	r+0(FP), CX
18 	MOVL	a+4(FP), AX
19 	MULL	b+12(FP)
20 	MOVL	AX, 0(CX)
21 	MOVL	DX, BX
22 	MOVL	a+8(FP), AX
23 	MULL	b+12(FP)
24 	ADDL	AX, BX
25 	MOVL	BX, 4(CX)
26 	RET
27 
28 TEXT	_div64by32(SB), $0
29 	MOVL	r+12(FP), CX
30 	MOVL	a+0(FP), AX
31 	MOVL	a+4(FP), DX
32 	DIVL	b+8(FP)
33 	MOVL	DX, 0(CX)
34 	RET
35 
36 TEXT	_addv(SB), $0
37 	MOVL	r+0(FP), CX
38 	MOVL	a+4(FP), AX
39 	MOVL	a+8(FP), BX
40 	ADDL	b+12(FP), AX
41 	ADCL	b+16(FP), BX
42 	MOVL	AX, 0(CX)
43 	MOVL	BX, 4(CX)
44 	RET
45