[ARM] Selection for MVE VMOVN
commitf36eb5e87c511eb104d0e3f60397acd6d51f662b
authorDavid Green <david.green@arm.com>
Mon, 14 Oct 2019 15:19:33 +0000 (14 15:19 +0000)
committerDavid Green <david.green@arm.com>
Mon, 14 Oct 2019 15:19:33 +0000 (14 15:19 +0000)
tree98b57b61da97b345f490013eb35ebd5b2f8d06a5
parent852f45a10a23463e41e385a3be91c5cdfc72cce9
[ARM] Selection for MVE VMOVN

The adds both VMOVNt and VMOVNb instruction selection from the appropriate
shuffles. We detect shuffle masks of the form:
0, N, 2, N+2, 4, N+4, ...
or
0, N+1, 2, N+3, 4, N+5, ...
ISel will also try the opposite patterns, with inputs reversed. These are
selected to VMOVNt and VMOVNb respectively.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@374781 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/ARMISelLowering.cpp
lib/Target/ARM/ARMISelLowering.h
lib/Target/ARM/ARMInstrMVE.td
test/CodeGen/Thumb2/mve-vmovn.ll