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
|
.text
.align 3
.globl ___gmpn_mul_1c
___gmpn_mul_1c:
adds xzr, xzr, xzr
b Lcom
.text
.align 3
.globl ___gmpn_mul_1
___gmpn_mul_1:
adds x4, xzr, xzr
Lcom: lsr x17, x2, #2
tbnz x2, #0, Lbx1
Lbx0: mov x11, x4
tbz x2, #1, Lb00
Lb10: ldp x4, x5, [x1]
mul x8, x4, x3
umulh x10, x4, x3
cbz x17, L2
ldp x6, x7, [x1,#16]!
mul x9, x5, x3
b Lmid-8
L2: mul x9, x5, x3
b L2e
Lbx1: ldr x7, [x1],#8
mul x9, x7, x3
umulh x11, x7, x3
adds x9, x9, x4
str x9, [x0],#8
tbnz x2, #1, Lb10
Lb01: cbz x17, L1
Lb00: ldp x6, x7, [x1]
mul x8, x6, x3
umulh x10, x6, x3
ldp x4, x5, [x1,#16]
mul x9, x7, x3
adcs x12, x8, x11
umulh x11, x7, x3
add x0, x0, #16
sub x17, x17, #1
cbz x17, Lend
.align 4
Ltop: mul x8, x4, x3
ldp x6, x7, [x1,#32]!
adcs x13, x9, x10
umulh x10, x4, x3
mul x9, x5, x3
stp x12, x13, [x0,#-16]
adcs x12, x8, x11
umulh x11, x5, x3
Lmid: mul x8, x6, x3
ldp x4, x5, [x1,#16]
adcs x13, x9, x10
umulh x10, x6, x3
mul x9, x7, x3
stp x12, x13, [x0],#32
adcs x12, x8, x11
umulh x11, x7, x3
sub x17, x17, #1
cbnz x17, Ltop
Lend: mul x8, x4, x3
adcs x13, x9, x10
umulh x10, x4, x3
mul x9, x5, x3
stp x12, x13, [x0,#-16]
L2e: adcs x12, x8, x11
umulh x11, x5, x3
adcs x13, x9, x10
stp x12, x13, [x0]
L1: adc x0, x11, xzr
ret
|