diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2024-03-28 19:49:02 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2024-04-02 18:38:37 +0100 |
commit | 8bc2d19c13c3a0aa0bffe82596f75f25bed5004f (patch) | |
tree | a1f8490a372e1a3149684483889fbbcd3a19880f /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | 82be6e186b5f88779325c5ede99ac714b2cfc4fa (diff) | |
download | llvm-8bc2d19c13c3a0aa0bffe82596f75f25bed5004f.zip llvm-8bc2d19c13c3a0aa0bffe82596f75f25bed5004f.tar.gz llvm-8bc2d19c13c3a0aa0bffe82596f75f25bed5004f.tar.bz2 |
[X86] canonicalizeShuffleWithOp - don't fold VPERMI(BINOP(X,Y)) -> BINOP(VPERMI(X),VPERMI(Y))
VPERMI (VPERMQ/PD) is nearly always lane-crossing and poorly merges with target shuffles (other than itself).
For now, I've restricted VPERMI to only merge with itself, constants, loads and splats.
We might be able to merge with a few other special cases (AND/ANDNP with constant?), which could help the shuffle-vs-trunc-256.ll AVX512VL regression, but since that now gives similar codegen to the other AVX512 variants, I'd prefer to improve the shuffle lowering for that properly.
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions