SHR
#define SHR(x, n) ((x) >> (n))
#define SHR(val, val_width, amount) (((val) | ((val) << (val_width))) >> (amount)) & ((1 << (val_width)) - 1)