@@ -381,25 +381,33 @@ BN_ULONG bn_sub_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
381
381
#ifndef OPENSSL_SMALL_FOOTPRINT
382
382
while (n & ~3 ) {
383
383
t1 = a [0 ];
384
- t2 = b [0 ];
385
- r [0 ] = (t1 - t2 - c ) & BN_MASK2 ;
386
- if (t1 != t2 )
387
- c = (t1 < t2 );
384
+ t2 = (t1 - c ) & BN_MASK2 ;
385
+ c = (t2 > t1 );
386
+ t1 = b [0 ];
387
+ t1 = (t2 - t1 ) & BN_MASK2 ;
388
+ r [0 ] = t1 ;
389
+ c += (t1 > t2 );
388
390
t1 = a [1 ];
389
- t2 = b [1 ];
390
- r [1 ] = (t1 - t2 - c ) & BN_MASK2 ;
391
- if (t1 != t2 )
392
- c = (t1 < t2 );
391
+ t2 = (t1 - c ) & BN_MASK2 ;
392
+ c = (t2 > t1 );
393
+ t1 = b [1 ];
394
+ t1 = (t2 - t1 ) & BN_MASK2 ;
395
+ r [1 ] = t1 ;
396
+ c += (t1 > t2 );
393
397
t1 = a [2 ];
394
- t2 = b [2 ];
395
- r [2 ] = (t1 - t2 - c ) & BN_MASK2 ;
396
- if (t1 != t2 )
397
- c = (t1 < t2 );
398
+ t2 = (t1 - c ) & BN_MASK2 ;
399
+ c = (t2 > t1 );
400
+ t1 = b [2 ];
401
+ t1 = (t2 - t1 ) & BN_MASK2 ;
402
+ r [2 ] = t1 ;
403
+ c += (t1 > t2 );
398
404
t1 = a [3 ];
399
- t2 = b [3 ];
400
- r [3 ] = (t1 - t2 - c ) & BN_MASK2 ;
401
- if (t1 != t2 )
402
- c = (t1 < t2 );
405
+ t2 = (t1 - c ) & BN_MASK2 ;
406
+ c = (t2 > t1 );
407
+ t1 = b [3 ];
408
+ t1 = (t2 - t1 ) & BN_MASK2 ;
409
+ r [3 ] = t1 ;
410
+ c += (t1 > t2 );
403
411
a += 4 ;
404
412
b += 4 ;
405
413
r += 4 ;
@@ -408,10 +416,12 @@ BN_ULONG bn_sub_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
408
416
#endif
409
417
while (n ) {
410
418
t1 = a [0 ];
411
- t2 = b [0 ];
412
- r [0 ] = (t1 - t2 - c ) & BN_MASK2 ;
413
- if (t1 != t2 )
414
- c = (t1 < t2 );
419
+ t2 = (t1 - c ) & BN_MASK2 ;
420
+ c = (t2 > t1 );
421
+ t1 = b [0 ];
422
+ t1 = (t2 - t1 ) & BN_MASK2 ;
423
+ r [0 ] = t1 ;
424
+ c += (t1 > t2 );
415
425
a ++ ;
416
426
b ++ ;
417
427
r ++ ;
@@ -449,7 +459,7 @@ BN_ULONG bn_sub_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
449
459
t += c0; /* no carry */ \
450
460
c0 = (BN_ULONG )Lw (t ); \
451
461
hi = (BN_ULONG )Hw (t ); \
452
- c1 = (c1 + hi )& BN_MASK2 ; if (c1 < hi ) c2 ++ ; \
462
+ c1 = (c1 + hi )& BN_MASK2 ; c2 += (c1 < hi ); \
453
463
} while (0 )
454
464
455
465
# define mul_add_c2 (a ,b ,c0 ,c1 ,c2 ) do { \
@@ -458,11 +468,11 @@ BN_ULONG bn_sub_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
458
468
BN_ULLONG tt = t+c0; /* no carry */ \
459
469
c0 = (BN_ULONG )Lw (tt ); \
460
470
hi = (BN_ULONG )Hw (tt ); \
461
- c1 = (c1 + hi )& BN_MASK2 ; if (c1 < hi ) c2 ++ ; \
471
+ c1 = (c1 + hi )& BN_MASK2 ; c2 += (c1 < hi ); \
462
472
t += c0 ; /* no carry */ \
463
473
c0 = (BN_ULONG )Lw (t ); \
464
474
hi = (BN_ULONG )Hw (t ); \
465
- c1 = (c1 + hi )& BN_MASK2 ; if (c1 < hi ) c2 ++ ; \
475
+ c1 = (c1 + hi )& BN_MASK2 ; c2 += (c1 < hi ); \
466
476
} while (0 )
467
477
468
478
# define sqr_add_c (a ,i ,c0 ,c1 ,c2 ) do { \
@@ -471,7 +481,7 @@ BN_ULONG bn_sub_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
471
481
t += c0; /* no carry */ \
472
482
c0 = (BN_ULONG )Lw (t ); \
473
483
hi = (BN_ULONG )Hw (t ); \
474
- c1 = (c1 + hi )& BN_MASK2 ; if (c1 < hi ) c2 ++ ; \
484
+ c1 = (c1 + hi )& BN_MASK2 ; c2 += (c1 < hi ); \
475
485
} while (0 )
476
486
477
487
# define sqr_add_c2 (a ,i ,j ,c0 ,c1 ,c2 ) \
@@ -486,26 +496,26 @@ BN_ULONG bn_sub_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
486
496
BN_ULONG ta = (a), tb = (b); \
487
497
BN_ULONG lo, hi; \
488
498
BN_UMULT_LOHI(lo,hi,ta,tb); \
489
- c0 += lo; hi += (c0<lo)?1:0; \
490
- c1 += hi; c2 += (c1<hi)?1:0; \
499
+ c0 += lo; hi += (c0<lo); \
500
+ c1 += hi; c2 += (c1<hi); \
491
501
} while(0)
492
502
493
503
# define mul_add_c2 (a ,b ,c0 ,c1 ,c2 ) do { \
494
504
BN_ULONG ta = (a), tb = (b); \
495
505
BN_ULONG lo, hi, tt; \
496
506
BN_UMULT_LOHI(lo,hi,ta,tb); \
497
- c0 += lo; tt = hi+(( c0<lo)?1:0); \
498
- c1 += tt; c2 += (c1<tt)?1:0; \
499
- c0 += lo; hi += (c0<lo)?1:0; \
500
- c1 += hi; c2 += (c1<hi)?1:0; \
507
+ c0 += lo; tt = hi + ( c0<lo); \
508
+ c1 += tt; c2 += (c1<tt); \
509
+ c0 += lo; hi += (c0<lo); \
510
+ c1 += hi; c2 += (c1<hi); \
501
511
} while(0)
502
512
503
513
# define sqr_add_c (a ,i ,c0 ,c1 ,c2 ) do { \
504
514
BN_ULONG ta = (a)[i]; \
505
515
BN_ULONG lo, hi; \
506
516
BN_UMULT_LOHI(lo,hi,ta,ta); \
507
- c0 += lo; hi += (c0<lo)?1:0; \
508
- c1 += hi; c2 += (c1<hi)?1:0; \
517
+ c0 += lo; hi += (c0<lo); \
518
+ c1 += hi; c2 += (c1<hi); \
509
519
} while(0)
510
520
511
521
# define sqr_add_c2 (a ,i ,j ,c0 ,c1 ,c2 ) \
@@ -520,26 +530,26 @@ BN_ULONG bn_sub_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
520
530
BN_ULONG ta = (a), tb = (b); \
521
531
BN_ULONG lo = ta * tb; \
522
532
BN_ULONG hi = BN_UMULT_HIGH(ta,tb); \
523
- c0 += lo; hi += (c0<lo)?1:0; \
524
- c1 += hi; c2 += (c1<hi)?1:0; \
533
+ c0 += lo; hi += (c0<lo); \
534
+ c1 += hi; c2 += (c1<hi); \
525
535
} while(0)
526
536
527
537
# define mul_add_c2 (a ,b ,c0 ,c1 ,c2 ) do { \
528
538
BN_ULONG ta = (a), tb = (b), tt; \
529
539
BN_ULONG lo = ta * tb; \
530
540
BN_ULONG hi = BN_UMULT_HIGH(ta,tb); \
531
- c0 += lo; tt = hi + (( c0<lo)?1:0); \
532
- c1 += tt; c2 += (c1<tt)?1:0; \
533
- c0 += lo; hi += (c0<lo)?1:0; \
534
- c1 += hi; c2 += (c1<hi)?1:0; \
541
+ c0 += lo; tt = hi + (c0<lo); \
542
+ c1 += tt; c2 += (c1<tt); \
543
+ c0 += lo; hi += (c0<lo); \
544
+ c1 += hi; c2 += (c1<hi); \
535
545
} while(0)
536
546
537
547
# define sqr_add_c (a ,i ,c0 ,c1 ,c2 ) do { \
538
548
BN_ULONG ta = (a)[i]; \
539
549
BN_ULONG lo = ta * ta; \
540
550
BN_ULONG hi = BN_UMULT_HIGH(ta,ta); \
541
- c0 += lo; hi += (c0<lo)?1:0; \
542
- c1 += hi; c2 += (c1<hi)?1:0; \
551
+ c0 += lo; hi += (c0<lo); \
552
+ c1 += hi; c2 += (c1<hi); \
543
553
} while(0)
544
554
545
555
# define sqr_add_c2 (a ,i ,j ,c0 ,c1 ,c2 ) \
@@ -554,8 +564,8 @@ BN_ULONG bn_sub_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
554
564
BN_ULONG lo = LBITS(a), hi = HBITS(a); \
555
565
BN_ULONG bl = LBITS(b), bh = HBITS(b); \
556
566
mul64(lo,hi,bl,bh); \
557
- c0 = (c0+lo)&BN_MASK2; if (c0<lo) hi++; \
558
- c1 = (c1+hi)&BN_MASK2; if (c1<hi) c2++; \
567
+ c0 = (c0+lo)&BN_MASK2; hi += (c0<lo); \
568
+ c1 = (c1+hi)&BN_MASK2; c2 += (c1<hi); \
559
569
} while(0)
560
570
561
571
# define mul_add_c2 (a ,b ,c0 ,c1 ,c2 ) do { \
@@ -564,17 +574,17 @@ BN_ULONG bn_sub_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
564
574
BN_ULONG bl = LBITS(b), bh = HBITS(b); \
565
575
mul64(lo,hi,bl,bh); \
566
576
tt = hi; \
567
- c0 = (c0+lo)&BN_MASK2; if (c0<lo) tt++; \
568
- c1 = (c1+tt)&BN_MASK2; if (c1<tt) c2++; \
569
- c0 = (c0+lo)&BN_MASK2; if (c0<lo) hi++; \
570
- c1 = (c1+hi)&BN_MASK2; if (c1<hi) c2++; \
577
+ c0 = (c0+lo)&BN_MASK2; tt += (c0<lo); \
578
+ c1 = (c1+tt)&BN_MASK2; c2 += (c1<tt); \
579
+ c0 = (c0+lo)&BN_MASK2; hi += (c0<lo); \
580
+ c1 = (c1+hi)&BN_MASK2; c2 += (c1<hi); \
571
581
} while(0)
572
582
573
583
# define sqr_add_c (a ,i ,c0 ,c1 ,c2 ) do { \
574
584
BN_ULONG lo, hi; \
575
585
sqr64(lo,hi,(a)[i]); \
576
- c0 = (c0+lo)&BN_MASK2; if (c0<lo) hi++; \
577
- c1 = (c1+hi)&BN_MASK2; if (c1<hi) c2++; \
586
+ c0 = (c0+lo)&BN_MASK2; hi += (c0<lo); \
587
+ c1 = (c1+hi)&BN_MASK2; c2 += (c1<hi); \
578
588
} while(0)
579
589
580
590
# define sqr_add_c2 (a ,i ,j ,c0 ,c1 ,c2 ) \
0 commit comments