This provides the low-level support to start using MVE vector types in
and predicated instructions in C source code:
LLVM IR, loading and storing them, * spills, reloads using them as function parameters,
and register moves forpassing them to __asm__ statements containing hand-written MVE
* ditto for the VPT predication mask that lives in VPR.P0* spills, reloads and register moves for MVE vector registers
* make all the MVE vect* ditto for types legal in ISel, and provide seleche VPT predication
DAG patterns for LOAD and STORE mask that lives in VPR.P0
* an extension of Thumb2ITBlockPass to spot MachineInstrs that list
themselves as VPT-predicated* make all the MVE vector types legal in ISel, and add the actual VPST instruprovide selection
above each one.DAG patterns for BITCAST, LOAD and STORE
The VPT block generation is currently trivial: it only ever puts one
instruction in a block (no longer forms such as VPTTET), and it alwaysAlso in this commit I've added an extra architecture name to
uses the VPST instruction (meaning 'predicate on whatever was alreadyupdate_llc_test_checks.py, so that I could use it to generate the
in P0') as opposed to VPT ('do a comparison and immediately start aexpected output checks for my simple test case.
VPT block based on the results').