summaryrefslogtreecommitdiff
path: root/sys/src/libc/arm/vlop.s
blob: bc2237a86d4a2706cc166ed45e5deb0cb57ee249 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
TEXT	_mulv(SB), 1, $0
	MOVW	4(FP),R8	/* l0 */
	MOVW	8(FP),R11	/* h0 */
	MOVW	12(FP),R4	/* l1 */
	MOVW	16(FP),R5	/* h1 */
	MULLU	R8,R4,(R7,R6)	/* l0*l1 */
	MUL	R8,R5,R5	/* l0*h1 */
	ADD	R5,R7
	MUL	R11,R4,R4	/* h0*l1 */
	ADD	R4,R7
	MOVM.IA	[R6,R7],(R0)
	RET

TEXT	_addv(SB), 1, $0
	MOVW	4(FP),R8	/* l0 */
	MOVW	8(FP),R11	/* h0 */
	MOVW	12(FP),R4	/* l1 */
	MOVW	16(FP),R5	/* h1 */
	ADD.S	R8,R4
	ADC	R11,R5
	MOVM.IA	[R4,R5],(R0)
	RET

TEXT	_subv(SB), 1, $0
	MOVW	4(FP),R8	/* l0 */
	MOVW	8(FP),R11	/* h0 */
	MOVW	12(FP),R4	/* l1 */
	MOVW	16(FP),R5	/* h1 */
	SUB.S	R4,R8,R4
	SBC	R5,R11,R5
	MOVM.IA	[R4,R5],(R0)
	RET