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
|
.text
.align 3
.globl __gmpn_mul_1c
.type __gmpn_mul_1c,@function
__gmpn_mul_1c:
adds xzr, xzr, xzr
b .Lcom
.size __gmpn_mul_1c,.-__gmpn_mul_1c
.text
.align 3
.globl __gmpn_mul_1
.type __gmpn_mul_1,@function
__gmpn_mul_1:
adds x4, xzr, xzr
.Lcom: lsr x18, 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 x18, .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 x18, .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 x18, x18, #1
cbz x18, .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 x18, x18, #1
cbnz x18, .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
.size __gmpn_mul_1,.-__gmpn_mul_1
|