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
.type __gmpn_bdiv_q_1,@function
__gmpn_bdiv_q_1:
rbit x6, x3
clz x5, x6
lsr x3, x3, x5
adrp x7, :got:__gmp_binvert_limb_table
ubfx x6, x3, 1, 7
ldr x7, [x7, #:got_lo12:__gmp_binvert_limb_table]
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
.size __gmpn_bdiv_q_1,.-__gmpn_bdiv_q_1
.text
.align 3
.globl __gmpn_pi1_bdiv_q_1
.type __gmpn_pi1_bdiv_q_1,@function
__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
.size __gmpn_pi1_bdiv_q_1,.-__gmpn_pi1_bdiv_q_1
|