[all-commits] [llvm/llvm-project] 7fb84d: [AArch64][GlobalISel] Port buildvector -> dup patt...
Jessica Paquette via All-commits
all-commits at lists.llvm.org
Thu Jun 25 14:19:30 PDT 2020
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: 7fb84dff69572b59dc730f9616fea918bedc7384
https://github.com/llvm/llvm-project/commit/7fb84dff69572b59dc730f9616fea918bedc7384
Author: Jessica Paquette <jpaquette at apple.com>
Date: 2020-06-25 (Thu, 25 Jun 2020)
Changed paths:
M llvm/lib/Target/AArch64/GISel/AArch64PostLegalizerCombiner.cpp
M llvm/test/CodeGen/AArch64/GlobalISel/postlegalizer-combiner-shuffle-splat.mir
Log Message:
-----------
[AArch64][GlobalISel] Port buildvector -> dup pattern from AArch64ISelLowering
Given this:
```
%x:_(<n x sK>) = G_BUILD_VECTOR %lane, ...
...
%y:_(<n x sK>) = G_SHUFFLE_VECTOR %x(<n x sK>), %foo, shufflemask(0, 0, ...)
```
We can produce:
```
%y:_(<n x sK) = G_DUP %lane(sK)
```
Doesn't seem to be too common, but AArch64ISelLowering attempts to do this
before trying to produce a DUPLANE. Might as well port it.
Also make it so that when the splat has an undef mask, we try setting it to
0. SDAG does this, and it makes sure that when we get the build vector operand,
we actually get a source operand.
Differential Revision: https://reviews.llvm.org/D81979
More information about the All-commits
mailing list