Lines Matching +full:0 +full:x31
41 } while (0)
58 } while (0)
68 fmacc = _addcarry_u64(0, fmalo, (v1), &fmalo); \
69 _addcarry_u64(fmacc, fmahi, 0, &fmahi); \
70 fmacc = _addcarry_u64(0, fmalo, (v2), &(lo)); \
71 _addcarry_u64(fmacc, fmahi, 0, &(hi)); \
72 } while (0)
90 } while (0)
102 fmacc = _addcarry_u64(0, fma1lo, (v1), &fma1lo); \
103 _addcarry_u64(fmacc, fma1hi, 0, &fma1hi); \
104 fmacc = _addcarry_u64(0, fma2lo, (v2), &fma2lo); \
105 _addcarry_u64(fmacc, fma2hi, 0, &fma2hi); \
106 fmacc = _addcarry_u64(0, fma1lo, fma2lo, &(lo)); \
108 } while (0)
113 #define MASK62 ((uint64_t)0x3FFFFFFFFFFFFFFF)
117 * Subtract b from a, and return the final carry. If 'ctl32' is 0, then
127 cc = 0; in i62_sub()
130 for (u = 0; u < num; u ++) { in i62_sub()
157 memset(d, 0, num * sizeof *d); in montymul()
158 dh = 0; in montymul()
159 for (u = 0; u < num; u ++) { in montymul()
166 f = MUL62_lo(d[0] + MUL62_lo(x[u], y[0]), m0i) << 2; in montymul()
168 FMA2(hi, lo, xu, y[0], f, m[0], d[0] << 2, 0); in montymul()
172 FMA2(hi, lo, xu, y[v + 0], in montymul()
173 f, m[v + 0], d[v + 0] << 2, r << 2); in montymul()
179 d[v + 0] = lo >> 2; in montymul()
199 i62_sub(d, m, num, (uint32_t)dh | NOT(i62_sub(d, m, num, 0))); in montymul()
210 for (u = 0; u < num; u ++) { in frommonty()
213 f = MUL62_lo(x[0], m0i) << 2; in frommonty()
214 cc = 0; in frommonty()
215 for (v = 0; v < num; v ++) { in frommonty()
220 if (v != 0) { in frommonty()
226 i62_sub(x, m, num, NOT(i62_sub(x, m, num, 0))); in frommonty()
231 br_i62_modpow_opt(uint32_t *x31, const unsigned char *e, size_t elen, in br_i62_modpow_opt() argument
243 mw31num = (m31[0] + 31) >> 5; in br_i62_modpow_opt()
264 return 0; in br_i62_modpow_opt()
266 br_i31_modpow(x31, e, elen, m31, m0i31, in br_i62_modpow_opt()
278 for (u = 0; u < mw62num; u ++) { in br_i62_modpow_opt()
279 br_i31_muladd_small(x31, 0, m31); in br_i62_modpow_opt()
280 br_i31_muladd_small(x31, 0, m31); in br_i62_modpow_opt()
295 for (u = 0; u < mw31num; u += 2) { in br_i62_modpow_opt()
301 x[v] = (uint64_t)x31[u + 1]; in br_i62_modpow_opt()
305 x[v] = (uint64_t)x31[u + 1] in br_i62_modpow_opt()
306 + ((uint64_t)x31[u + 2] << 31); in br_i62_modpow_opt()
330 m0i = MUL62_lo(m0i, (uint64_t)2 + MUL62_lo(m0i, m[0])); in br_i62_modpow_opt()
334 * then t2 is set to x; otherwise, t2[0] is left untouched, and in br_i62_modpow_opt()
354 br_i31_zero(x31, m31[0]); in br_i62_modpow_opt()
355 x31[(m31[0] + 31) >> 5] = 1; in br_i62_modpow_opt()
356 br_i31_muladd_small(x31, 0, m31); in br_i62_modpow_opt()
358 br_i31_muladd_small(x31, 0, m31); in br_i62_modpow_opt()
360 for (u = 0; u < mw31num; u += 2) { in br_i62_modpow_opt()
365 x[v] = (uint64_t)x31[u + 1]; in br_i62_modpow_opt()
367 x[v] = (uint64_t)x31[u + 1] in br_i62_modpow_opt()
368 + ((uint64_t)x31[u + 2] << 31); in br_i62_modpow_opt()
376 acc = 0; in br_i62_modpow_opt()
377 acc_len = 0; in br_i62_modpow_opt()
378 while (acc_len > 0 || elen > 0) { in br_i62_modpow_opt()
388 if (elen > 0) { in br_i62_modpow_opt()
402 for (i = 0; i < k; i ++) { in br_i62_modpow_opt()
416 memset(t2, 0, mw62num * sizeof *t2); in br_i62_modpow_opt()
423 for (v = 0; v < mw62num; v ++) { in br_i62_modpow_opt()
435 mask1 = -(uint64_t)EQ(bits, 0); in br_i62_modpow_opt()
437 for (u = 0; u < mw62num; u ++) { in br_i62_modpow_opt()
450 for (u = 0; u < mw31num; u += 2) { in br_i62_modpow_opt()
454 x31[u + 1] = (uint32_t)zw & 0x7FFFFFFF; in br_i62_modpow_opt()
456 x31[u + 2] = (uint32_t)(zw >> 31); in br_i62_modpow_opt()
466 br_i62_modpow_opt(uint32_t *x31, const unsigned char *e, size_t elen, in br_i62_modpow_opt() argument
471 mwlen = (m31[0] + 63) >> 5; in br_i62_modpow_opt()
473 return 0; in br_i62_modpow_opt()
475 return br_i31_modpow_opt(x31, e, elen, m31, m0i31, in br_i62_modpow_opt()
483 br_i62_modpow_opt_as_i31(uint32_t *x31, const unsigned char *e, size_t elen, in br_i62_modpow_opt_as_i31() argument
491 return br_i62_modpow_opt(x31, e, elen, m31, m0i31, in br_i62_modpow_opt_as_i31()