There is absolutely no reason for shift_right to depend on shr.