]> granicus.if.org Git - llvm/commit
[AArch64][GlobalISel] Implement partial support for G_SHUFFLE_VECTOR
authorAmara Emerson <aemerson@apple.com>
Wed, 20 Feb 2019 22:11:39 +0000 (22:11 +0000)
committerAmara Emerson <aemerson@apple.com>
Wed, 20 Feb 2019 22:11:39 +0000 (22:11 +0000)
commite890ea0ea2491ca4c5f44f5ff057e2e26c4f15d6
tree6ff15397ec46fad4331073f6a35a320e6e51e53e
parent1f08b282ae1e555603cd112416ff54420927c1fa
[AArch64][GlobalISel] Implement partial support for G_SHUFFLE_VECTOR

This change makes some basic type combinations for G_SHUFFLE_VECTOR legal, and
implements them with a very pessimistic TBL2 instruction in the selector.

For TBL2, support is also needed to generate constant pool entries and load from
them in order to materialize the mask register.

Currently supports <2 x s64> and <4 x s32> result types.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@354521 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/AArch64/AArch64InstructionSelector.cpp
lib/Target/AArch64/AArch64LegalizerInfo.cpp
test/CodeGen/AArch64/GlobalISel/legalize-shuffle-vector.mir [new file with mode: 0644]
test/CodeGen/AArch64/GlobalISel/legalizer-info-validation.mir
test/CodeGen/AArch64/GlobalISel/select-shuffle-vector.mir [new file with mode: 0644]