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}