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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
.text
.align 3
.globl ___gmpn_addlsh1_n
___gmpn_addlsh1_n:
lsr x6, x3, #2
tbz x3, #0, Lbx0
Lbx1: ldr x5, [x1]
tbnz x3, #1, Lb11
Lb01: ldr x11, [x2]
cbz x6, L1
ldp x8, x9, [x2,#8]
lsl x13, x11, #1
adds x15, x13, x5
str x15, [x0],#8
sub x1, x1, #24
sub x2, x2, #8
b Lmid
L1: lsl x13, x11, #1
adds x15, x13, x5
str x15, [x0]
lsr x0, x11, 63
adc x0, x0, xzr
ret
Lb11: ldr x9, [x2]
ldp x10, x11, [x2,#8]!
lsl x13, x9, #1
adds x17, x13, x5
str x17, [x0],#8
sub x1, x1, #8
cbz x6, Lend
b Ltop
Lbx0: tbnz x3, #1, Lb10
Lb00: adds x11, xzr, xzr
ldp x8, x9, [x2],#-16
sub x1, x1, #32
b Lmid
Lb10: adds x9, xzr, xzr
ldp x10, x11, [x2]
sub x1, x1, #16
cbz x6, Lend
.align 4
Ltop: ldp x4, x5, [x1,#16]
extr x12, x10, x9, #63
ldp x8, x9, [x2,#16]
extr x13, x11, x10, #63
adcs x14, x12, x4
adcs x15, x13, x5
stp x14, x15, [x0],#16
Lmid: ldp x4, x5, [x1,#32]!
extr x12, x8, x11, #63
ldp x10, x11, [x2,#32]!
extr x13, x9, x8, #63
adcs x16, x12, x4
adcs x17, x13, x5
stp x16, x17, [x0],#16
sub x6, x6, #1
cbnz x6, Ltop
Lend: ldp x4, x5, [x1,#16]
extr x12, x10, x9, #63
extr x13, x11, x10, #63
adcs x14, x12, x4
adcs x15, x13, x5
stp x14, x15, [x0]
lsr x0, x11, 63
adc x0, x0, xzr
ret
|