This provides the low-level support to start using MVE vector types
and predicated instructions in C source code:
- spills, reloads and register moves for MVE vector registers
- ditto for the VPT predication mask that lives in VPR.P0
- make all the MVE vector types legal in ISel, and provide selection DAG patterns for LOAD and STORE
- an extension of Thumb2ITBlockPass to spot MachineInstrs that list themselves as VPT-predicated, and add the actual VPST instruction above each one.
The VPT block generation is currently trivial: it only ever puts one
instruction in a block (no longer forms such as VPTTET), and it always
uses the VPST instruction (meaning 'predicate on whatever was already
in P0') as opposed to VPT ('do a comparison and immediately start a
VPT block based on the results').