In my first attempt at a legalization framework for GlobalISel (http://reviews.llvm.org/D21534), Quentin said he intended to move towards a lower-level type representation (essentially just size & lanes). Since the legalization description makes heavy use of types, it's probably best to do that earlier rather than later, hence this patch.
I've added a new LLT class, with 3 variants, designed to look similar to IR-level types:
- unsized for labels etc
- sN for scalars & aggregates.
- <N x sM> for vectors.
At the moment, vectors must contain more than 1 element (so no <1 x double>). I know there are doubts about this being adequate, but I'd like to press on as far as possible under the assumption that RegBankSelect can handle things and it's easier to relax that requirement than impose it later if we're wrong.
There should be no functional change here (we still don't have that much functionality to change!). Test changes are just updating to the new syntax.
Cheers.
Tim.
Add a comment saying that NumElements must be > 1.