[ARM] MVE predicate register support
authorDavid Green <david.green@arm.com>
Wed, 24 Jul 2019 11:51:36 +0000 (11:51 +0000)
committerDavid Green <david.green@arm.com>
Wed, 24 Jul 2019 11:51:36 +0000 (11:51 +0000)
commitc7e55d4f5213d27456c8a2f74ee5284181067d73
tree42037fd6749f9c33af253a6d9dfbf4a7e3f0d8b6
parentb09bc8a27dd7846ce446cab9e2548c8d29d74750
[ARM] MVE predicate register support

This adds support code for building and shuffling i1 predicate registers. It
generally uses two basic principles, either converting the predicate into an
scalar (through a PREDICATE_CAST) and doing scalar operations on it there, or
by converting the register to an full vector register and back.

Some of the code here is a not super efficient but will hopefully cover most
cases of moving i1 vectors around and can be improved in subsequent patches.

Some code by David Sherwood.

Differential Revision: https://reviews.llvm.org/D65052

llvm-svn: 366890
llvm/lib/Target/ARM/ARMISelLowering.cpp
llvm/lib/Target/ARM/ARMISelLowering.h
llvm/lib/Target/ARM/ARMInstrMVE.td
llvm/test/CodeGen/Thumb2/mve-pred-build-const.ll [new file with mode: 0644]
llvm/test/CodeGen/Thumb2/mve-pred-build-var.ll [new file with mode: 0644]
llvm/test/CodeGen/Thumb2/mve-pred-ext.ll [new file with mode: 0644]
llvm/test/CodeGen/Thumb2/mve-pred-shuffle.ll [new file with mode: 0644]
llvm/test/CodeGen/Thumb2/mve-pred-spill.ll [new file with mode: 0644]
llvm/test/CodeGen/Thumb2/mve-vcmp.ll