LLVM-IR shifts have UB if the shift amount is equal to or greater to
the shift range, but a number of architectures have well-defined
behavior in this case.
Utilize the behavior of ARM for shl and lshr to remove some code,
as can be seen in the tests.