diff options
author | Matthias Braun <matze@braunis.de> | 2024-12-12 17:20:48 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-12 17:20:48 -0800 |
commit | 768754807f17754fb450ec672779b827ad5df4b4 (patch) | |
tree | a4a08f8a5cea4202d494282608b36a60b4cecf96 /lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp | |
parent | 38eaea73cab3f427edd16d60035cf126f9a99cd0 (diff) | |
download | llvm-768754807f17754fb450ec672779b827ad5df4b4.zip llvm-768754807f17754fb450ec672779b827ad5df4b4.tar.gz llvm-768754807f17754fb450ec672779b827ad5df4b4.tar.bz2 |
[InstCombine] Optimistically allow multiple shufflevector uses in foldOpPhi (#114278)
We would like to optimize situations of the form that happen after loop
vectorization+SROA:
```
loop:
%phi = phi zeroinitializer, %interleaved
%deinterleave_a = shufflevector %phi, poison ; pick half of the lanes
%deinterleave_b = shufflevector %phi, posion ; pick remaining lanes
... %a = ... %b = ...
%interleaved = shufflevector %a, %b ; interleave lanes of a+b
```
where the interleave and de-interleave shuffle operations cancel each
other out.
This could be handled by `foldOpPhi` but does not currently work because
it does
not proceed when there are multiple uses of the `Phi` operation.
This extends `foldOpPhi` to allow multiple `shufflevector` uses when
they are
shown to simplify for all `Phi` input values.
Diffstat (limited to 'lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp')
0 files changed, 0 insertions, 0 deletions