Shifts with a uniform but non-constant count were considered very expensive to vectorize since rL178703, because the splat would often live in a different block and be invisible to ISel. However, since rL201655, CodeGenPrepare would sink those splats next to their use, so that we can select an appropriate vector shift.
This updates the cost model to reflect the fact we don't need to be so pessimistic anymore.
You can use llvm::getSplatValue() here, it does what you need.