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
|
.text
.align 5
.text
.align 3
.globl ___gmpn_mod_34lsub1
___gmpn_mod_34lsub1:
subs x1, x1, #3
mov x8, #0
b.lt Lle2
ldp x2, x3, [x0, #0]
ldr x4, [x0, #16]
add x0, x0, #24
subs x1, x1, #3
b.lt Lsum
cmn x0, #0
Ltop: ldp x5, x6, [x0, #0]
ldr x7, [x0, #16]
add x0, x0, #24
sub x1, x1, #3
adcs x2, x2, x5
adcs x3, x3, x6
adcs x4, x4, x7
tbz x1, #63, Ltop
adc x8, xzr, xzr
Lsum: cmn x1, #2
mov x5, #0
b.lo 1f
ldr x5, [x0], #8
1: mov x6, #0
b.ls 1f
ldr x6, [x0], #8
1: adds x2, x2, x5
adcs x3, x3, x6
adcs x4, x4, xzr
adc x8, x8, xzr
Lsum2:
and x0, x2, #0xffffffffffff
add x0, x0, x2, lsr #48
add x0, x0, x8
lsl x8, x3, #16
and x1, x8, #0xffffffffffff
add x0, x0, x1
add x0, x0, x3, lsr #32
lsl x8, x4, #32
and x1, x8, #0xffffffffffff
add x0, x0, x1
add x0, x0, x4, lsr #16
ret
Lle2: cmn x1, #1
b.ne L1
ldp x2, x3, [x0]
mov x4, #0
b Lsum2
L1: ldr x2, [x0]
and x0, x2, #0xffffffffffff
add x0, x0, x2, lsr #48
ret
|