Go to the documentation of this file.
66 #if defined(OPENSSL_NO_ASM) || \
67 !(defined(OPENSSL_X86) || \
68 (defined(OPENSSL_X86_64) && (defined(__GNUC__) || defined(__clang__))))
71 #define mul_add(r, a, w, c) \
74 t = (BN_ULLONG)(w) * (a) + (r) + (c); \
79 #define mul(r, a, w, c) \
82 t = (BN_ULLONG)(w) * (a) + (c); \
87 #define sqr(r0, r1, a) \
90 t = (BN_ULLONG)(a) * (a); \
97 #define mul_add(r, a, w, c) \
99 BN_ULONG high, low, ret, tmp = (a); \
101 BN_UMULT_LOHI(low, high, w, tmp); \
103 (c) = (ret < (c)) ? 1 : 0; \
106 (c) += (ret < low) ? 1 : 0; \
110 #define mul(r, a, w, c) \
112 BN_ULONG high, low, ret, ta = (a); \
113 BN_UMULT_LOHI(low, high, w, ta); \
116 (c) += (ret < low) ? 1 : 0; \
120 #define sqr(r0, r1, a) \
122 BN_ULONG tmp = (a); \
123 BN_UMULT_LOHI(r0, r1, tmp, tmp); \
165 mul(rp[0], ap[0], w,
c1);
166 mul(rp[1], ap[1], w,
c1);
167 mul(rp[2], ap[2], w,
c1);
168 mul(rp[3], ap[3], w,
c1);
174 mul(rp[0], ap[0], w,
c1);
205 BN_ULONG
bn_add_words(BN_ULONG *
r,
const BN_ULONG *
a,
const BN_ULONG *
b,
214 ll += (BN_ULLONG)
a[0] +
b[0];
217 ll += (BN_ULLONG)
a[1] +
b[1];
220 ll += (BN_ULLONG)
a[2] +
b[2];
223 ll += (BN_ULLONG)
a[3] +
b[3];
232 ll += (BN_ULLONG)
a[0] +
b[0];
364 #define mul_add_c(a, b, c0, c1, c2) \
367 BN_ULLONG t = (BN_ULLONG)(a) * (b); \
369 (c0) = (BN_ULONG)Lw(t); \
370 hi = (BN_ULONG)Hw(t); \
377 #define mul_add_c2(a, b, c0, c1, c2) \
380 BN_ULLONG t = (BN_ULLONG)(a) * (b); \
381 BN_ULLONG tt = t + (c0); \
382 (c0) = (BN_ULONG)Lw(tt); \
383 hi = (BN_ULONG)Hw(tt); \
389 (c0) = (BN_ULONG)Lw(t); \
390 hi = (BN_ULONG)Hw(t); \
397 #define sqr_add_c(a, i, c0, c1, c2) \
400 BN_ULLONG t = (BN_ULLONG)(a)[i] * (a)[i]; \
402 (c0) = (BN_ULONG)Lw(t); \
403 hi = (BN_ULONG)Hw(t); \
410 #define sqr_add_c2(a, i, j, c0, c1, c2) mul_add_c2((a)[i], (a)[j], c0, c1, c2)
416 #define mul_add_c(a, b, c0, c1, c2) \
418 BN_ULONG ta = (a), tb = (b); \
420 BN_UMULT_LOHI(lo, hi, ta, tb); \
422 hi += ((c0) < lo) ? 1 : 0; \
424 (c2) += ((c1) < hi) ? 1 : 0; \
427 #define mul_add_c2(a, b, c0, c1, c2) \
429 BN_ULONG ta = (a), tb = (b); \
430 BN_ULONG lo, hi, tt; \
431 BN_UMULT_LOHI(lo, hi, ta, tb); \
433 tt = hi + (((c0) < lo) ? 1 : 0); \
435 (c2) += ((c1) < tt) ? 1 : 0; \
437 hi += (c0 < lo) ? 1 : 0; \
439 (c2) += ((c1) < hi) ? 1 : 0; \
442 #define sqr_add_c(a, i, c0, c1, c2) \
444 BN_ULONG ta = (a)[i]; \
446 BN_UMULT_LOHI(lo, hi, ta, ta); \
448 hi += (c0 < lo) ? 1 : 0; \
450 (c2) += ((c1) < hi) ? 1 : 0; \
453 #define sqr_add_c2(a, i, j, c0, c1, c2) mul_add_c2((a)[i], (a)[j], c0, c1, c2)
#define sqr_add_c2(a, i, j, c0, c1, c2)
void bn_sqr_comba8(BN_ULONG r[16], const BN_ULONG a[8])
#define sqr_add_c(a, i, c0, c1, c2)
void bn_sqr_comba4(BN_ULONG r[8], const BN_ULONG a[4])
BN_ULONG bn_add_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b, size_t n)
BN_ULONG bn_mul_add_words(BN_ULONG *rp, const BN_ULONG *ap, size_t num, BN_ULONG w)
void bn_sqr_words(BN_ULONG *r, const BN_ULONG *a, size_t n)
void bn_mul_comba8(BN_ULONG r[16], const BN_ULONG a[8], const BN_ULONG b[8])
BN_ULONG bn_mul_words(BN_ULONG *rp, const BN_ULONG *ap, size_t num, BN_ULONG w)
BN_ULONG bn_sub_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b, size_t n)
void bn_mul_comba4(BN_ULONG r[8], const BN_ULONG a[4], const BN_ULONG b[4])
#define mul_add_c(a, b, c0, c1, c2)
#define mul_add(r, a, w, c)
grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:59:26