diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2024-05-06 11:25:23 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-06 11:25:23 +0100 |
| commit | 8e7618aa21652132f930b6576b92291c5f1d46b6 (patch) | |
| tree | a3b0620c10cd0d79323b7da4c8cc6deff4476eaa /llvm/lib/Bitcode/Reader/BitcodeReader.cpp | |
| parent | 0a0cac6dbd0ef67eb473f85a968bbf4ebea5220d (diff) | |
[X86] Fold BLEND(PERMUTE(X),PERMUTE(Y)) -> PERMUTE(BLEND(X,Y)) (#90219)
If we don't demand the same element from both single source shuffles (permutes), then attempt to blend the sources together first and then perform a merged permute.
For vXi16 blends we have to be careful as these are much more likely to involve byte/word vector shuffles that will result in the creation of additional shuffle instructions.
This fold might be worth it for VSELECT with constant masks on AVX512 targets, but I haven't investigated this yet, but I've tried to write combineBlendOfPermutes so to be prepared for this.
The PR34592 -O0 regression is an unfortunate failure to cleanup with a later pass that calls SimplifyDemandedElts like the -O3 does - I'm not sure how worried we should be tbh.
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
0 files changed, 0 insertions, 0 deletions
