eta_algorithms/
utils.rs

1#[inline(always)]
2pub fn rotate_inc(val: usize, mask: usize) -> usize {
3    (val + 1) & mask
4}
5
6#[inline(always)]
7pub fn rotate_dec(val: usize, mask: usize) -> usize {
8    (val - 1) & mask
9}
10
11#[inline(always)]
12pub fn closest_pow2(mut n: usize) -> usize {
13    n -= 1; // In case we have a power of 2
14            // This is for setting all the bits to the right to 1
15
16    n |= n >> 1;
17    n |= n >> 2;
18    n |= n >> 4;
19    n |= n >> 8;
20    n |= n >> 16;
21    n |= n >> 32;
22    n + 1
23}