summaryrefslogtreecommitdiff
path: root/vere/ext/gmp/gen/aarch64-macos/mpn/bdiv_q_1.s
blob: 8ee70a5dd7ed75796d7592ddc29e7179d91cb4bf (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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137

























































		
		





	.text
	.align	3
	.globl	___gmpn_bdiv_q_1 
	
___gmpn_bdiv_q_1:

	rbit	x6, x3
	clz	x5, x6
	lsr	x3, x3, x5

	adrp	x7, ___gmp_binvert_limb_table@GOTPAGE
	ubfx	x6, x3, 1, 7
	ldr	x7, [x7, ___gmp_binvert_limb_table@GOTPAGEOFF]
	ldrb	w6, [x7, x6]
	ubfiz	x7, x6, 1, 8
	umull	x6, w6, w6
	msub	x6, x6, x3, x7
	lsl	x7, x6, 1
	mul	x6, x6, x6
	msub	x6, x6, x3, x7
	lsl	x7, x6, 1
	mul	x6, x6, x6
	msub	x4, x6, x3, x7

	b	___gmpn_pi1_bdiv_q_1
	

	.text
	.align	3
	.globl	___gmpn_pi1_bdiv_q_1 
	
___gmpn_pi1_bdiv_q_1:
	sub	x2, x2, #1
	subs	x6, x6, x6		
	ldr	x9, [x1],#8
	cbz	x5, Lnorm

Lunorm:
	lsr	x12, x9, x5
	cbz	x2, Leu1
	sub	x8, xzr, x5

Ltpu:	ldr	x9, [x1],#8
	lsl	x7, x9, x8
	orr	x7, x7, x12
	sbcs	x6, x7, x6
	mul	x7, x6, x4
	str	x7, [x0],#8
	lsr	x12, x9, x5
	umulh	x6, x7, x3
	sub	x2, x2, #1
	cbnz	x2, Ltpu

Leu1:	sbcs	x6, x12, x6
	mul	x6, x6, x4
	str	x6, [x0]
	ret

Lnorm:
	mul	x5, x9, x4
	str	x5, [x0],#8
	cbz	x2, Len1

Ltpn:	ldr	x9, [x1],#8
	umulh	x5, x5, x3
	sbcs	x5, x9, x5
	mul	x5, x5, x4
	str	x5, [x0],#8
	sub	x2, x2, #1
	cbnz	x2, Ltpn

Len1:	ret