diff options
| author | Alasdair Armstrong | 2019-03-13 14:25:00 +0000 |
|---|---|---|
| committer | Alasdair Armstrong | 2019-03-13 14:27:40 +0000 |
| commit | ee54fe8fc8a4afc8fb9f6cc0bd8e2930162f49ad (patch) | |
| tree | 5b68a9b927ccb2341902fbc98ce138d333641f6f /lib | |
| parent | 874bb01f0e2c201474e0a07602a38037bb2495f9 (diff) | |
C: Add missing update_lbits builtin
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sail.c | 14 | ||||
| -rw-r--r-- | lib/sail.h | 2 |
2 files changed, 16 insertions, 0 deletions
@@ -930,6 +930,20 @@ void set_slice_int(sail_int *rop, } } +void update_lbits(lbits *rop, const lbits op, const sail_int n_mpz, const uint64_t bit) +{ + uint64_t n = mpz_get_ui(n_mpz); + + mpz_set(*rop->bits, *op.bits); + rop->len = op.len; + + if (bit == UINT64_C(0)) { + mpz_clrbit(*rop->bits, n); + } else { + mpz_setbit(*rop->bits, n); + } +} + void vector_update_subrange_lbits(lbits *rop, const lbits op, const sail_int n_mpz, @@ -290,6 +290,8 @@ void set_slice_int(sail_int *rop, const sail_int start_mpz, const lbits slice); +void update_lbits(lbits *rop, const lbits op, const sail_int n_mpz, const uint64_t bit); + void vector_update_subrange_lbits(lbits *rop, const lbits op, const sail_int n_mpz, |
