/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 |