[InstCombine] Fold shift of a constant into a reverse shift (#192982)
C1 << (C2 - X) -> (C1 << C2) >> X
C1 << (C2 ^ X) -> (C1 << C2) >> X (if equivalent to the above)
C1 >> (C2 - X) -> (C1 >> C2) << X (right shift modes match)
C1 >> (C2 ^ X) -> (C1 >> C2) << X (if equivalent to the above)
Proof: https://alive2.llvm.org/ce/z/q-4soi