Making sure we don't truncate / extend pointers, don't try to change
vector topology or bitcast vectors to scalars or back, and most
importantly, don't extend to a smaller type or truncate to a large
one.
While crafting a test for this change with a more or less decent code coverage I noticed that our MIR Parser is not able to parse vector pointer LLTs. We do quite explicitly support their representation in LLT class, and there is a direct counterpart in LLVM IR. Also it's easy to imagine a target actually sporting them (with some sort of vector scatter / gather stores / loads. So the test ended up depending on a fix for MIR Parser planned as a separate commit:
[MIRParser][GlobalISel] Parsing vector pointer types (<M x pA>) MIParser wasn't able to parse LLTs like `<4 x p0>`, fixing that.
This diff includes both commits together.