Patch to match cases where shuffle masks can be reduced to bit shifts. Similar to byte shift shuffle matching from D5699.
For integer vector shuffles where lanes are being moved to the left/right in short groups and zeros are being inserted. Each integer type can be shifted safely using any wider type (so i8 -> i16/i32/i64, i16 -> i32/i64, i32 -> i64).
I have an upcoming patch that will fix the combine-or.ll domain mismatch.
I kept to just providing the immediate versions of the SSE2 logical bit shifts - there may be a case for adding support for AVX2 per-lane shifts but I don't have the hardware to test this.
Theoretically I think in the future this could be generalised (endian fixes) and moved to DAGCombine?
Please go ahead and commit these bits and the comment update as a separate change. This change should focus on adding bit-shift variants.