Commit 8bc2d19
committed
[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.1 parent 82be6e1 commit 8bc2d19
File tree
4 files changed
+4473
-4860
lines changed- llvm
- lib/Target/X86
- test/CodeGen/X86
4 files changed
+4473
-4860
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39961 | 39961 | | |
39962 | 39962 | | |
39963 | 39963 | | |
| 39964 | + | |
39964 | 39965 | | |
39965 | | - | |
| 39966 | + | |
| 39967 | + | |
39966 | 39968 | | |
39967 | 39969 | | |
39968 | 39970 | | |
| |||
39972 | 39974 | | |
39973 | 39975 | | |
39974 | 39976 | | |
| 39977 | + | |
39975 | 39978 | | |
39976 | | - | |
| 39979 | + | |
39977 | 39980 | | |
39978 | 39981 | | |
39979 | 39982 | | |
| |||
39984 | 39987 | | |
39985 | 39988 | | |
39986 | 39989 | | |
39987 | | - | |
39988 | 39990 | | |
39989 | 39991 | | |
39990 | 39992 | | |
| |||
40010 | 40012 | | |
40011 | 40013 | | |
40012 | 40014 | | |
40013 | | - | |
40014 | | - | |
| 40015 | + | |
| 40016 | + | |
| 40017 | + | |
| 40018 | + | |
40015 | 40019 | | |
40016 | 40020 | | |
40017 | 40021 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1333 | 1333 | | |
1334 | 1334 | | |
1335 | 1335 | | |
1336 | | - | |
1337 | | - | |
| 1336 | + | |
| 1337 | + | |
| 1338 | + | |
| 1339 | + | |
1338 | 1340 | | |
1339 | 1341 | | |
1340 | 1342 | | |
| |||
0 commit comments