summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/bn/bn_mul.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/bn/bn_mul.c')
-rw-r--r--src/lib/libcrypto/bn/bn_mul.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/src/lib/libcrypto/bn/bn_mul.c b/src/lib/libcrypto/bn/bn_mul.c
index 118e8cddc5..65088cc5c4 100644
--- a/src/lib/libcrypto/bn/bn_mul.c
+++ b/src/lib/libcrypto/bn/bn_mul.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: bn_mul.c,v 1.37 2023/04/19 10:51:22 jsing Exp $ */ 1/* $OpenBSD: bn_mul.c,v 1.38 2023/06/12 16:17:24 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -210,17 +210,13 @@ bn_mul_words(BN_ULONG *r, const BN_ULONG *a, int num, BN_ULONG w)
210 if (num <= 0) 210 if (num <= 0)
211 return 0; 211 return 0;
212 212
213#ifndef OPENSSL_SMALL_FOOTPRINT
214 while (num & ~3) { 213 while (num & ~3) {
215 bn_mulw_addw(a[0], w, carry, &carry, &r[0]); 214 bn_qwmulw_addw(a[3], a[2], a[1], a[0], w, carry, &carry,
216 bn_mulw_addw(a[1], w, carry, &carry, &r[1]); 215 &r[3], &r[2], &r[1], &r[0]);
217 bn_mulw_addw(a[2], w, carry, &carry, &r[2]);
218 bn_mulw_addw(a[3], w, carry, &carry, &r[3]);
219 a += 4; 216 a += 4;
220 r += 4; 217 r += 4;
221 num -= 4; 218 num -= 4;
222 } 219 }
223#endif
224 while (num) { 220 while (num) {
225 bn_mulw_addw(a[0], w, carry, &carry, &r[0]); 221 bn_mulw_addw(a[0], w, carry, &carry, &r[0]);
226 a++; 222 a++;
@@ -247,17 +243,14 @@ bn_mul_add_words(BN_ULONG *r, const BN_ULONG *a, int num, BN_ULONG w)
247 if (num <= 0) 243 if (num <= 0)
248 return 0; 244 return 0;
249 245
250#ifndef OPENSSL_SMALL_FOOTPRINT
251 while (num & ~3) { 246 while (num & ~3) {
252 bn_mulw_addw_addw(a[0], w, r[0], carry, &carry, &r[0]); 247 bn_qwmulw_addqw_addw(a[3], a[2], a[1], a[0], w,
253 bn_mulw_addw_addw(a[1], w, r[1], carry, &carry, &r[1]); 248 r[3], r[2], r[1], r[0], carry, &carry,
254 bn_mulw_addw_addw(a[2], w, r[2], carry, &carry, &r[2]); 249 &r[3], &r[2], &r[1], &r[0]);
255 bn_mulw_addw_addw(a[3], w, r[3], carry, &carry, &r[3]);
256 a += 4; 250 a += 4;
257 r += 4; 251 r += 4;
258 num -= 4; 252 num -= 4;
259 } 253 }
260#endif
261 while (num) { 254 while (num) {
262 bn_mulw_addw_addw(a[0], w, r[0], carry, &carry, &r[0]); 255 bn_mulw_addw_addw(a[0], w, r[0], carry, &carry, &r[0]);
263 a++; 256 a++;