We were missing a few types here which would cause us to fall back on some low-hanging fruit (e.g. v4s16)
Reimplement the legal rule for G_SHUFFLE_VECTOR using existing LegalityPredicate stuff, and add a helper that checks if two type indices are the same type.
clang-format: please reformat the code