summaryrefslogtreecommitdiff
path: root/sys/src/libmp/arm/mpvecsub.s
blob: c82aa210c7aa9481830ff181ac7b3ecb7f202fd5 (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
TEXT mpvecsub(SB),$0
	MOVW	alen+4(FP), R4
	MOVW	b+8(FP), R5
	MOVW	blen+12(FP), R6
	MOVW	diff+16(FP), R7
	MOVW	$0, R8
	MOVW	R8, R3
	CMP	R8, R6
	B.EQ	_sub1
	SUB	R6, R4, R4
_subloop1:
	MOVW.P	4(R0), R1
	MOVW.P	4(R5), R2
	CMP	R3, R8
	SBC.S	R2, R1
	SBC	R8, R8, R3
	MOVW.P	R1, 4(R7)
	SUB.S	$1, R6
	B.NE	_subloop1
_sub1:
	CMP	R8, R4
	RET.EQ
_subloop2:
	MOVW.P	4(R0), R1
	CMP	R3, R8
	SBC.S	R8, R1
	SBC	R8, R8, R3
	MOVW.P	R1, 4(R7)
	SUB.S	$1, R4
	B.NE	_subloop2
	RET