Skip to content

Commit 21e95b4

Browse files
committed
moved u128+u128 to int128.h
1 parent 7c67d34 commit 21e95b4

File tree

4 files changed

+15
-18
lines changed

4 files changed

+15
-18
lines changed

src/field_5x52_int128_impl.h

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -57,26 +57,9 @@ static FIAT_SECP256K1_DETTMAN_FIAT_INLINE uint64_t u64_and_u128_u64(secp256k1_ui
5757
}
5858

5959
static FIAT_SECP256K1_DETTMAN_FIAT_INLINE secp256k1_uint128 u128_add_u128_u128(secp256k1_uint128 a, secp256k1_uint128 b) {
60-
uint64_t bl;
61-
uint64_t bh;
62-
uint64_t rh;
63-
uint64_t rl;
6460
secp256k1_uint128 r = a;
6561

66-
bl = secp256k1_u128_to_u64(&b);
67-
68-
/* adding low b to r*/
69-
secp256k1_u128_accum_u64(&r, bl);
70-
71-
rl = secp256k1_u128_to_u64(&r);
72-
rh = secp256k1_u128_hi_u64(&r);
73-
74-
/* adding high b*/
75-
bh = secp256k1_u128_hi_u64(&b);
76-
rh += bh;
77-
78-
/* saving all in r*/
79-
secp256k1_u128_load(&r, rh, rl);
62+
secp256k1_u128_accum(&r, &b);
8063

8164
return r;
8265
}

src/int128.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ static SECP256K1_INLINE void secp256k1_u128_accum_mul(secp256k1_uint128 *r, uint
2828
*/
2929
static SECP256K1_INLINE void secp256k1_u128_accum_u64(secp256k1_uint128 *r, uint64_t a);
3030

31+
/* Add an unsigned 128-bit value a to r.
32+
* The final result is taken modulo 2^128.
33+
*/
34+
static SECP256K1_INLINE void secp256k1_u128_accum(secp256k1_uint128 *r, secp256k1_uint128 *a);
35+
3136
/* Unsigned (logical) right shift.
3237
* Non-constant time in n.
3338
*/

src/int128_native_impl.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ static SECP256K1_INLINE void secp256k1_u128_accum_u64(secp256k1_uint128 *r, uint
2020
*r += a;
2121
}
2222

23+
static SECP256K1_INLINE void secp256k1_u128_accum(secp256k1_uint128 *r, secp256k1_uint128 *a){
24+
*r += *a;
25+
}
26+
2327
static SECP256K1_INLINE void secp256k1_u128_rshift(secp256k1_uint128 *r, unsigned int n) {
2428
VERIFY_CHECK(n < 128);
2529
*r >>= n;

src/int128_struct_impl.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,11 @@ static SECP256K1_INLINE void secp256k1_u128_accum_u64(secp256k1_uint128 *r, uint
7171
r->hi += r->lo < a;
7272
}
7373

74+
static SECP256K1_INLINE void secp256k1_u128_accum(secp256k1_uint128 *r, secp256k1_uint128 *a){
75+
r->lo += a->lo;
76+
r->hi += r->lo < a->lo + a->hi;
77+
}
78+
7479
/* Unsigned (logical) right shift.
7580
* Non-constant time in n.
7681
*/

0 commit comments

Comments
 (0)