[AArch64][GlobalISel] Select uzp1 and uzp2
authorJessica Paquette <jpaquette@apple.com>
Tue, 2 Jun 2020 16:30:04 +0000 (09:30 -0700)
committerJessica Paquette <jpaquette@apple.com>
Wed, 3 Jun 2020 22:09:41 +0000 (15:09 -0700)
commit8dd34cce0716e0d83c2f05375e8352b5fb4c680c
tree6e36dc9968a5ce3b79c875b6b3587423bd251f1a
parent0b025d2733d02a8080f38d767cceab4812c5d6e2
[AArch64][GlobalISel] Select uzp1 and uzp2

Porting the mask stuff for uzp1 and uzp2 from AArch64ISelLowering.

Add two custom opcodes: G_UZP1 and G_UZP2.

Produce them in the post-legalizer combiner when the mask checks out.

Tests:

- postlegalizer-combiner-uzp.mir verifies that we create G_UZP1 and G_UZP2.
The testcases that check that we create them come from neon-perm.ll.

- select-uzp.mir verifies that we can select G_UZP1 and G_UZP2.

Differential Revision: https://reviews.llvm.org/D81049
llvm/lib/Target/AArch64/AArch64Combine.td
llvm/lib/Target/AArch64/AArch64InstrGISel.td
llvm/lib/Target/AArch64/AArch64PostLegalizerCombiner.cpp
llvm/test/CodeGen/AArch64/GlobalISel/postlegalizer-combiner-uzp.mir [new file with mode: 0644]
llvm/test/CodeGen/AArch64/GlobalISel/select-uzp.mir [new file with mode: 0644]