Coverage Report

Created: 2025-04-24 07:09

/src/mcl/src/bint_switch.hpp
Line
Count
Source (jump to first uncovered line)
1
// this code is generated by python3 src/gen_bint_header.py switch
2
#if MCL_BINT_ASM != 1
3
template Unit addT<1>(Unit *z, const Unit *x, const Unit *y);
4
template Unit addT<2>(Unit *z, const Unit *x, const Unit *y);
5
template Unit addT<3>(Unit *z, const Unit *x, const Unit *y);
6
template Unit addT<4>(Unit *z, const Unit *x, const Unit *y);
7
template Unit addT<5>(Unit *z, const Unit *x, const Unit *y);
8
template Unit addT<6>(Unit *z, const Unit *x, const Unit *y);
9
template Unit addT<7>(Unit *z, const Unit *x, const Unit *y);
10
template Unit addT<8>(Unit *z, const Unit *x, const Unit *y);
11
template Unit addT<9>(Unit *z, const Unit *x, const Unit *y);
12
template Unit addT<10>(Unit *z, const Unit *x, const Unit *y);
13
template Unit addT<11>(Unit *z, const Unit *x, const Unit *y);
14
template Unit addT<12>(Unit *z, const Unit *x, const Unit *y);
15
template Unit addT<13>(Unit *z, const Unit *x, const Unit *y);
16
template Unit addT<14>(Unit *z, const Unit *x, const Unit *y);
17
template Unit addT<15>(Unit *z, const Unit *x, const Unit *y);
18
template Unit addT<16>(Unit *z, const Unit *x, const Unit *y);
19
#if MCL_SIZEOF_UNIT == 4
20
template Unit addT<17>(Unit *z, const Unit *x, const Unit *y);
21
template Unit addT<18>(Unit *z, const Unit *x, const Unit *y);
22
template Unit addT<19>(Unit *z, const Unit *x, const Unit *y);
23
template Unit addT<20>(Unit *z, const Unit *x, const Unit *y);
24
template Unit addT<21>(Unit *z, const Unit *x, const Unit *y);
25
template Unit addT<22>(Unit *z, const Unit *x, const Unit *y);
26
template Unit addT<23>(Unit *z, const Unit *x, const Unit *y);
27
template Unit addT<24>(Unit *z, const Unit *x, const Unit *y);
28
template Unit addT<25>(Unit *z, const Unit *x, const Unit *y);
29
template Unit addT<26>(Unit *z, const Unit *x, const Unit *y);
30
template Unit addT<27>(Unit *z, const Unit *x, const Unit *y);
31
template Unit addT<28>(Unit *z, const Unit *x, const Unit *y);
32
template Unit addT<29>(Unit *z, const Unit *x, const Unit *y);
33
template Unit addT<30>(Unit *z, const Unit *x, const Unit *y);
34
template Unit addT<31>(Unit *z, const Unit *x, const Unit *y);
35
#endif
36
template Unit subT<1>(Unit *z, const Unit *x, const Unit *y);
37
template Unit subT<2>(Unit *z, const Unit *x, const Unit *y);
38
template Unit subT<3>(Unit *z, const Unit *x, const Unit *y);
39
template Unit subT<4>(Unit *z, const Unit *x, const Unit *y);
40
template Unit subT<5>(Unit *z, const Unit *x, const Unit *y);
41
template Unit subT<6>(Unit *z, const Unit *x, const Unit *y);
42
template Unit subT<7>(Unit *z, const Unit *x, const Unit *y);
43
template Unit subT<8>(Unit *z, const Unit *x, const Unit *y);
44
template Unit subT<9>(Unit *z, const Unit *x, const Unit *y);
45
template Unit subT<10>(Unit *z, const Unit *x, const Unit *y);
46
template Unit subT<11>(Unit *z, const Unit *x, const Unit *y);
47
template Unit subT<12>(Unit *z, const Unit *x, const Unit *y);
48
template Unit subT<13>(Unit *z, const Unit *x, const Unit *y);
49
template Unit subT<14>(Unit *z, const Unit *x, const Unit *y);
50
template Unit subT<15>(Unit *z, const Unit *x, const Unit *y);
51
template Unit subT<16>(Unit *z, const Unit *x, const Unit *y);
52
#if MCL_SIZEOF_UNIT == 4
53
template Unit subT<17>(Unit *z, const Unit *x, const Unit *y);
54
template Unit subT<18>(Unit *z, const Unit *x, const Unit *y);
55
template Unit subT<19>(Unit *z, const Unit *x, const Unit *y);
56
template Unit subT<20>(Unit *z, const Unit *x, const Unit *y);
57
template Unit subT<21>(Unit *z, const Unit *x, const Unit *y);
58
template Unit subT<22>(Unit *z, const Unit *x, const Unit *y);
59
template Unit subT<23>(Unit *z, const Unit *x, const Unit *y);
60
template Unit subT<24>(Unit *z, const Unit *x, const Unit *y);
61
template Unit subT<25>(Unit *z, const Unit *x, const Unit *y);
62
template Unit subT<26>(Unit *z, const Unit *x, const Unit *y);
63
template Unit subT<27>(Unit *z, const Unit *x, const Unit *y);
64
template Unit subT<28>(Unit *z, const Unit *x, const Unit *y);
65
template Unit subT<29>(Unit *z, const Unit *x, const Unit *y);
66
template Unit subT<30>(Unit *z, const Unit *x, const Unit *y);
67
template Unit subT<31>(Unit *z, const Unit *x, const Unit *y);
68
#endif
69
template void addNFT<1>(Unit *z, const Unit *x, const Unit *y);
70
template void addNFT<2>(Unit *z, const Unit *x, const Unit *y);
71
template void addNFT<3>(Unit *z, const Unit *x, const Unit *y);
72
template void addNFT<4>(Unit *z, const Unit *x, const Unit *y);
73
template void addNFT<5>(Unit *z, const Unit *x, const Unit *y);
74
template void addNFT<6>(Unit *z, const Unit *x, const Unit *y);
75
template void addNFT<7>(Unit *z, const Unit *x, const Unit *y);
76
template void addNFT<8>(Unit *z, const Unit *x, const Unit *y);
77
template void addNFT<9>(Unit *z, const Unit *x, const Unit *y);
78
template void addNFT<10>(Unit *z, const Unit *x, const Unit *y);
79
template void addNFT<11>(Unit *z, const Unit *x, const Unit *y);
80
template void addNFT<12>(Unit *z, const Unit *x, const Unit *y);
81
template void addNFT<13>(Unit *z, const Unit *x, const Unit *y);
82
template void addNFT<14>(Unit *z, const Unit *x, const Unit *y);
83
template void addNFT<15>(Unit *z, const Unit *x, const Unit *y);
84
template void addNFT<16>(Unit *z, const Unit *x, const Unit *y);
85
#if MCL_SIZEOF_UNIT == 4
86
template void addNFT<17>(Unit *z, const Unit *x, const Unit *y);
87
template void addNFT<18>(Unit *z, const Unit *x, const Unit *y);
88
template void addNFT<19>(Unit *z, const Unit *x, const Unit *y);
89
template void addNFT<20>(Unit *z, const Unit *x, const Unit *y);
90
template void addNFT<21>(Unit *z, const Unit *x, const Unit *y);
91
template void addNFT<22>(Unit *z, const Unit *x, const Unit *y);
92
template void addNFT<23>(Unit *z, const Unit *x, const Unit *y);
93
template void addNFT<24>(Unit *z, const Unit *x, const Unit *y);
94
template void addNFT<25>(Unit *z, const Unit *x, const Unit *y);
95
template void addNFT<26>(Unit *z, const Unit *x, const Unit *y);
96
template void addNFT<27>(Unit *z, const Unit *x, const Unit *y);
97
template void addNFT<28>(Unit *z, const Unit *x, const Unit *y);
98
template void addNFT<29>(Unit *z, const Unit *x, const Unit *y);
99
template void addNFT<30>(Unit *z, const Unit *x, const Unit *y);
100
template void addNFT<31>(Unit *z, const Unit *x, const Unit *y);
101
#endif
102
template Unit subNFT<1>(Unit *z, const Unit *x, const Unit *y);
103
template Unit subNFT<2>(Unit *z, const Unit *x, const Unit *y);
104
template Unit subNFT<3>(Unit *z, const Unit *x, const Unit *y);
105
template Unit subNFT<4>(Unit *z, const Unit *x, const Unit *y);
106
template Unit subNFT<5>(Unit *z, const Unit *x, const Unit *y);
107
template Unit subNFT<6>(Unit *z, const Unit *x, const Unit *y);
108
template Unit subNFT<7>(Unit *z, const Unit *x, const Unit *y);
109
template Unit subNFT<8>(Unit *z, const Unit *x, const Unit *y);
110
template Unit subNFT<9>(Unit *z, const Unit *x, const Unit *y);
111
template Unit subNFT<10>(Unit *z, const Unit *x, const Unit *y);
112
template Unit subNFT<11>(Unit *z, const Unit *x, const Unit *y);
113
template Unit subNFT<12>(Unit *z, const Unit *x, const Unit *y);
114
template Unit subNFT<13>(Unit *z, const Unit *x, const Unit *y);
115
template Unit subNFT<14>(Unit *z, const Unit *x, const Unit *y);
116
template Unit subNFT<15>(Unit *z, const Unit *x, const Unit *y);
117
template Unit subNFT<16>(Unit *z, const Unit *x, const Unit *y);
118
#if MCL_SIZEOF_UNIT == 4
119
template Unit subNFT<17>(Unit *z, const Unit *x, const Unit *y);
120
template Unit subNFT<18>(Unit *z, const Unit *x, const Unit *y);
121
template Unit subNFT<19>(Unit *z, const Unit *x, const Unit *y);
122
template Unit subNFT<20>(Unit *z, const Unit *x, const Unit *y);
123
template Unit subNFT<21>(Unit *z, const Unit *x, const Unit *y);
124
template Unit subNFT<22>(Unit *z, const Unit *x, const Unit *y);
125
template Unit subNFT<23>(Unit *z, const Unit *x, const Unit *y);
126
template Unit subNFT<24>(Unit *z, const Unit *x, const Unit *y);
127
template Unit subNFT<25>(Unit *z, const Unit *x, const Unit *y);
128
template Unit subNFT<26>(Unit *z, const Unit *x, const Unit *y);
129
template Unit subNFT<27>(Unit *z, const Unit *x, const Unit *y);
130
template Unit subNFT<28>(Unit *z, const Unit *x, const Unit *y);
131
template Unit subNFT<29>(Unit *z, const Unit *x, const Unit *y);
132
template Unit subNFT<30>(Unit *z, const Unit *x, const Unit *y);
133
template Unit subNFT<31>(Unit *z, const Unit *x, const Unit *y);
134
#endif
135
template Unit mulUnitT<1>(Unit *z, const Unit *x, Unit y);
136
template Unit mulUnitT<2>(Unit *z, const Unit *x, Unit y);
137
template Unit mulUnitT<3>(Unit *z, const Unit *x, Unit y);
138
template Unit mulUnitT<4>(Unit *z, const Unit *x, Unit y);
139
template Unit mulUnitT<5>(Unit *z, const Unit *x, Unit y);
140
template Unit mulUnitT<6>(Unit *z, const Unit *x, Unit y);
141
template Unit mulUnitT<7>(Unit *z, const Unit *x, Unit y);
142
template Unit mulUnitT<8>(Unit *z, const Unit *x, Unit y);
143
template Unit mulUnitT<9>(Unit *z, const Unit *x, Unit y);
144
#if MCL_SIZEOF_UNIT == 4
145
template Unit mulUnitT<10>(Unit *z, const Unit *x, Unit y);
146
template Unit mulUnitT<11>(Unit *z, const Unit *x, Unit y);
147
template Unit mulUnitT<12>(Unit *z, const Unit *x, Unit y);
148
template Unit mulUnitT<13>(Unit *z, const Unit *x, Unit y);
149
template Unit mulUnitT<14>(Unit *z, const Unit *x, Unit y);
150
template Unit mulUnitT<15>(Unit *z, const Unit *x, Unit y);
151
template Unit mulUnitT<16>(Unit *z, const Unit *x, Unit y);
152
#endif
153
template Unit mulUnitAddT<1>(Unit *z, const Unit *x, Unit y);
154
template Unit mulUnitAddT<2>(Unit *z, const Unit *x, Unit y);
155
template Unit mulUnitAddT<3>(Unit *z, const Unit *x, Unit y);
156
template Unit mulUnitAddT<4>(Unit *z, const Unit *x, Unit y);
157
template Unit mulUnitAddT<5>(Unit *z, const Unit *x, Unit y);
158
template Unit mulUnitAddT<6>(Unit *z, const Unit *x, Unit y);
159
template Unit mulUnitAddT<7>(Unit *z, const Unit *x, Unit y);
160
template Unit mulUnitAddT<8>(Unit *z, const Unit *x, Unit y);
161
template Unit mulUnitAddT<9>(Unit *z, const Unit *x, Unit y);
162
#if MCL_SIZEOF_UNIT == 4
163
template Unit mulUnitAddT<10>(Unit *z, const Unit *x, Unit y);
164
template Unit mulUnitAddT<11>(Unit *z, const Unit *x, Unit y);
165
template Unit mulUnitAddT<12>(Unit *z, const Unit *x, Unit y);
166
template Unit mulUnitAddT<13>(Unit *z, const Unit *x, Unit y);
167
template Unit mulUnitAddT<14>(Unit *z, const Unit *x, Unit y);
168
template Unit mulUnitAddT<15>(Unit *z, const Unit *x, Unit y);
169
template Unit mulUnitAddT<16>(Unit *z, const Unit *x, Unit y);
170
#endif
171
template void mulT<1>(Unit *z, const Unit *x, const Unit *y);
172
template void mulT<2>(Unit *z, const Unit *x, const Unit *y);
173
template void mulT<3>(Unit *z, const Unit *x, const Unit *y);
174
template void mulT<4>(Unit *z, const Unit *x, const Unit *y);
175
template void mulT<5>(Unit *z, const Unit *x, const Unit *y);
176
template void mulT<6>(Unit *z, const Unit *x, const Unit *y);
177
template void mulT<7>(Unit *z, const Unit *x, const Unit *y);
178
template void mulT<8>(Unit *z, const Unit *x, const Unit *y);
179
template void mulT<9>(Unit *z, const Unit *x, const Unit *y);
180
#if MCL_SIZEOF_UNIT == 4
181
template void mulT<10>(Unit *z, const Unit *x, const Unit *y);
182
template void mulT<11>(Unit *z, const Unit *x, const Unit *y);
183
template void mulT<12>(Unit *z, const Unit *x, const Unit *y);
184
template void mulT<13>(Unit *z, const Unit *x, const Unit *y);
185
template void mulT<14>(Unit *z, const Unit *x, const Unit *y);
186
template void mulT<15>(Unit *z, const Unit *x, const Unit *y);
187
template void mulT<16>(Unit *z, const Unit *x, const Unit *y);
188
#endif
189
template void sqrT<1>(Unit *y, const Unit *x);
190
template void sqrT<2>(Unit *y, const Unit *x);
191
template void sqrT<3>(Unit *y, const Unit *x);
192
template void sqrT<4>(Unit *y, const Unit *x);
193
template void sqrT<5>(Unit *y, const Unit *x);
194
template void sqrT<6>(Unit *y, const Unit *x);
195
template void sqrT<7>(Unit *y, const Unit *x);
196
template void sqrT<8>(Unit *y, const Unit *x);
197
template void sqrT<9>(Unit *y, const Unit *x);
198
#if MCL_SIZEOF_UNIT == 4
199
template void sqrT<10>(Unit *y, const Unit *x);
200
template void sqrT<11>(Unit *y, const Unit *x);
201
template void sqrT<12>(Unit *y, const Unit *x);
202
template void sqrT<13>(Unit *y, const Unit *x);
203
template void sqrT<14>(Unit *y, const Unit *x);
204
template void sqrT<15>(Unit *y, const Unit *x);
205
template void sqrT<16>(Unit *y, const Unit *x);
206
#endif
207
#endif // MCL_BINT_ASM != 1
208
#if MCL_BINT_ASM_X64 == 1
209
u_ppu mclb_mulUnit1 = mclb_mulUnit_fast1;
210
u_ppu mclb_mulUnitAdd1 = mclb_mulUnitAdd_fast1;
211
void_ppp mclb_mul1 = mclb_mul_fast1;
212
void_pp mclb_sqr1 = mclb_sqr_fast1;
213
u_ppu mclb_mulUnit2 = mclb_mulUnit_fast2;
214
u_ppu mclb_mulUnitAdd2 = mclb_mulUnitAdd_fast2;
215
void_ppp mclb_mul2 = mclb_mul_fast2;
216
void_pp mclb_sqr2 = mclb_sqr_fast2;
217
u_ppu mclb_mulUnit3 = mclb_mulUnit_fast3;
218
u_ppu mclb_mulUnitAdd3 = mclb_mulUnitAdd_fast3;
219
void_ppp mclb_mul3 = mclb_mul_fast3;
220
void_pp mclb_sqr3 = mclb_sqr_fast3;
221
u_ppu mclb_mulUnit4 = mclb_mulUnit_fast4;
222
u_ppu mclb_mulUnitAdd4 = mclb_mulUnitAdd_fast4;
223
void_ppp mclb_mul4 = mclb_mul_fast4;
224
void_pp mclb_sqr4 = mclb_sqr_fast4;
225
u_ppu mclb_mulUnit5 = mclb_mulUnit_fast5;
226
u_ppu mclb_mulUnitAdd5 = mclb_mulUnitAdd_fast5;
227
void_ppp mclb_mul5 = mclb_mul_fast5;
228
void_pp mclb_sqr5 = mclb_sqr_fast5;
229
u_ppu mclb_mulUnit6 = mclb_mulUnit_fast6;
230
u_ppu mclb_mulUnitAdd6 = mclb_mulUnitAdd_fast6;
231
void_ppp mclb_mul6 = mclb_mul_fast6;
232
void_pp mclb_sqr6 = mclb_sqr_fast6;
233
u_ppu mclb_mulUnit7 = mclb_mulUnit_fast7;
234
u_ppu mclb_mulUnitAdd7 = mclb_mulUnitAdd_fast7;
235
void_ppp mclb_mul7 = mclb_mul_fast7;
236
void_pp mclb_sqr7 = mclb_sqr_fast7;
237
u_ppu mclb_mulUnit8 = mclb_mulUnit_fast8;
238
u_ppu mclb_mulUnitAdd8 = mclb_mulUnitAdd_fast8;
239
void_ppp mclb_mul8 = mclb_mul_fast8;
240
void_pp mclb_sqr8 = mclb_sqr_fast8;
241
u_ppu mclb_mulUnit9 = mclb_mulUnit_fast9;
242
u_ppu mclb_mulUnitAdd9 = mclb_mulUnitAdd_fast9;
243
void_ppp mclb_mul9 = mclb_mul_fast9;
244
void_pp mclb_sqr9 = mclb_sqr_fast9;
245
0
extern "C" MCL_DLL_API void mclb_disable_fast() {
246
0
  mclb_mulUnit1 = mclb_mulUnit_slow1;
247
0
  mclb_mulUnitAdd1 = mclb_mulUnitAdd_slow1;
248
0
  mclb_mul1 = mclb_mul_slow1;
249
0
  mclb_sqr1 = mclb_sqr_slow1;
250
0
  mclb_mulUnit2 = mclb_mulUnit_slow2;
251
0
  mclb_mulUnitAdd2 = mclb_mulUnitAdd_slow2;
252
0
  mclb_mul2 = mclb_mul_slow2;
253
0
  mclb_sqr2 = mclb_sqr_slow2;
254
0
  mclb_mulUnit3 = mclb_mulUnit_slow3;
255
0
  mclb_mulUnitAdd3 = mclb_mulUnitAdd_slow3;
256
0
  mclb_mul3 = mclb_mul_slow3;
257
0
  mclb_sqr3 = mclb_sqr_slow3;
258
0
  mclb_mulUnit4 = mclb_mulUnit_slow4;
259
0
  mclb_mulUnitAdd4 = mclb_mulUnitAdd_slow4;
260
0
  mclb_mul4 = mclb_mul_slow4;
261
0
  mclb_sqr4 = mclb_sqr_slow4;
262
0
  mclb_mulUnit5 = mclb_mulUnit_slow5;
263
0
  mclb_mulUnitAdd5 = mclb_mulUnitAdd_slow5;
264
0
  mclb_mul5 = mclb_mul_slow5;
265
0
  mclb_sqr5 = mclb_sqr_slow5;
266
0
  mclb_mulUnit6 = mclb_mulUnit_slow6;
267
0
  mclb_mulUnitAdd6 = mclb_mulUnitAdd_slow6;
268
0
  mclb_mul6 = mclb_mul_slow6;
269
0
  mclb_sqr6 = mclb_sqr_slow6;
270
0
  mclb_mulUnit7 = mclb_mulUnit_slow7;
271
0
  mclb_mulUnitAdd7 = mclb_mulUnitAdd_slow7;
272
0
  mclb_mul7 = mclb_mul_slow7;
273
0
  mclb_sqr7 = mclb_sqr_slow7;
274
0
  mclb_mulUnit8 = mclb_mulUnit_slow8;
275
0
  mclb_mulUnitAdd8 = mclb_mulUnitAdd_slow8;
276
0
  mclb_mul8 = mclb_mul_slow8;
277
0
  mclb_sqr8 = mclb_sqr_slow8;
278
0
  mclb_mulUnit9 = mclb_mulUnit_slow9;
279
0
  mclb_mulUnitAdd9 = mclb_mulUnitAdd_slow9;
280
0
  mclb_mul9 = mclb_mul_slow9;
281
0
  mclb_sqr9 = mclb_sqr_slow9;
282
0
}
283
#endif // MCL_BINT_ASM_X64 == 1
284
#if MCL_BINT_ASM_X64 == 1
285
extern "C" void mclb_mul_slow1(Unit *z, const Unit *x, const Unit *y)
286
0
{
287
0
  z[1] = mulUnitT<1>(z, x, y[0]);
288
0
  for (size_t i = 1; i < 1; i++) {
289
0
    z[1 + i] = mulUnitAddT<1>(&z[i], x, y[i]);
290
0
  }
291
0
}
292
extern "C" void mclb_mul_slow2(Unit *z, const Unit *x, const Unit *y)
293
0
{
294
0
  z[2] = mulUnitT<2>(z, x, y[0]);
295
0
  for (size_t i = 1; i < 2; i++) {
296
0
    z[2 + i] = mulUnitAddT<2>(&z[i], x, y[i]);
297
0
  }
298
0
}
299
extern "C" void mclb_mul_slow3(Unit *z, const Unit *x, const Unit *y)
300
0
{
301
0
  z[3] = mulUnitT<3>(z, x, y[0]);
302
0
  for (size_t i = 1; i < 3; i++) {
303
0
    z[3 + i] = mulUnitAddT<3>(&z[i], x, y[i]);
304
0
  }
305
0
}
306
extern "C" void mclb_mul_slow4(Unit *z, const Unit *x, const Unit *y)
307
0
{
308
0
  z[4] = mulUnitT<4>(z, x, y[0]);
309
0
  for (size_t i = 1; i < 4; i++) {
310
0
    z[4 + i] = mulUnitAddT<4>(&z[i], x, y[i]);
311
0
  }
312
0
}
313
extern "C" void mclb_mul_slow5(Unit *z, const Unit *x, const Unit *y)
314
0
{
315
0
  z[5] = mulUnitT<5>(z, x, y[0]);
316
0
  for (size_t i = 1; i < 5; i++) {
317
0
    z[5 + i] = mulUnitAddT<5>(&z[i], x, y[i]);
318
0
  }
319
0
}
320
extern "C" void mclb_mul_slow6(Unit *z, const Unit *x, const Unit *y)
321
0
{
322
0
  z[6] = mulUnitT<6>(z, x, y[0]);
323
0
  for (size_t i = 1; i < 6; i++) {
324
0
    z[6 + i] = mulUnitAddT<6>(&z[i], x, y[i]);
325
0
  }
326
0
}
327
extern "C" void mclb_mul_slow7(Unit *z, const Unit *x, const Unit *y)
328
0
{
329
0
  z[7] = mulUnitT<7>(z, x, y[0]);
330
0
  for (size_t i = 1; i < 7; i++) {
331
0
    z[7 + i] = mulUnitAddT<7>(&z[i], x, y[i]);
332
0
  }
333
0
}
334
extern "C" void mclb_mul_slow8(Unit *z, const Unit *x, const Unit *y)
335
0
{
336
0
  z[8] = mulUnitT<8>(z, x, y[0]);
337
0
  for (size_t i = 1; i < 8; i++) {
338
0
    z[8 + i] = mulUnitAddT<8>(&z[i], x, y[i]);
339
0
  }
340
0
}
341
extern "C" void mclb_mul_slow9(Unit *z, const Unit *x, const Unit *y)
342
0
{
343
0
  z[9] = mulUnitT<9>(z, x, y[0]);
344
0
  for (size_t i = 1; i < 9; i++) {
345
0
    z[9 + i] = mulUnitAddT<9>(&z[i], x, y[i]);
346
0
  }
347
0
}
348
#endif // MCL_BINT_ASM_X64 == 1
349
#if MCL_BINT_ASM_X64 == 1
350
extern "C" void mclb_sqr_slow1(Unit *y, const Unit *x)
351
0
{
352
0
  mclb_mul_slow1(y, x, x);
353
0
}
354
extern "C" void mclb_sqr_slow2(Unit *y, const Unit *x)
355
0
{
356
0
  mclb_mul_slow2(y, x, x);
357
0
}
358
extern "C" void mclb_sqr_slow3(Unit *y, const Unit *x)
359
0
{
360
0
  mclb_mul_slow3(y, x, x);
361
0
}
362
extern "C" void mclb_sqr_slow4(Unit *y, const Unit *x)
363
0
{
364
0
  mclb_mul_slow4(y, x, x);
365
0
}
366
extern "C" void mclb_sqr_slow5(Unit *y, const Unit *x)
367
0
{
368
0
  mclb_mul_slow5(y, x, x);
369
0
}
370
extern "C" void mclb_sqr_slow6(Unit *y, const Unit *x)
371
0
{
372
0
  mclb_mul_slow6(y, x, x);
373
0
}
374
extern "C" void mclb_sqr_slow7(Unit *y, const Unit *x)
375
0
{
376
0
  mclb_mul_slow7(y, x, x);
377
0
}
378
extern "C" void mclb_sqr_slow8(Unit *y, const Unit *x)
379
0
{
380
0
  mclb_mul_slow8(y, x, x);
381
0
}
382
extern "C" void mclb_sqr_slow9(Unit *y, const Unit *x)
383
0
{
384
0
  mclb_mul_slow9(y, x, x);
385
0
}
386
#endif // MCL_BINT_ASM_X64 == 1