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
|