// bad = (1 | 2) ^ 3
// = 3 ^ 3
// = 0
// good = 1 | (2 ^ 3)
// = 1 | 1
// = 1
or_xor = 1 | 2 ^ 3;
// bad = (5 ^ 2) & 3
// = 7 & 3
// = 3
// good = 5 ^ (2 & 3)
// = 5 ^ 2
// = 3
xor_and = 5 ^ 2 & 3;
// bad = (7 & 2) << 1
// = 2 << 1
// = 4
// good = 7 & (2 << 1)
// = 7 & 4
// = 4
and_shl = 7 & 2 << 1;
// bad = 8 << (2 >> 1)
// = 8 << 1
// = 16
// good = (8 << 2) >> 1
// = 32 >> 1
// = 16
shl_shr = 8 << 2 >> 1;
// bad = (3 >> 1) + 2
// = 1 + 2
// = 3
// good = 3 >> (1 + 2)
// = 3 >> 3
// = 0
shr_add = 3 >> 1 + 2;
// bad = 1 + (2 - 3)
// = 1 + -1
// = 0
// good = (1 + 2) - 3
// = 3 - 3
// = 0
add_sub = 1 + 2 - 3;
// bad = (1 + 2) * 3
// = 3 * 3
// = 9
// good = 1 + (2 * 3)
// = 1 + 6
// = 7
add_mul = 1 + 2 * 3;
// bad = 3 * (2 / 1)
// = 3 * 2
// = 6
// good = (3 * 2) / 1
// = 6
mul_div = 3 * 2 / 1;
mod = 5 % 4;
unary_inv = ~0;
unary_neg = 5 + -4;