Only perform special shift-by-zero cases with immediates, not registers, in ARM.5
Use internal ASR method rather than relying on C++ and the compiler