aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorDavid Green <david.green@arm.com>2022-04-19 12:58:55 +0100
committerDavid Green <david.green@arm.com>2022-04-19 12:58:55 +0100
commitcc9495f6791aaaacbff55d7eace43550eb27e3c9 (patch)
treeaee138896b8f862fc914c609959369c7ee46abd2 /clang/lib/Frontend/CompilerInvocation.cpp
parent76410040b9f391185c7df48c14519860e1cf75e5 (diff)
downloadllvm-cc9495f6791aaaacbff55d7eace43550eb27e3c9.zip
llvm-cc9495f6791aaaacbff55d7eace43550eb27e3c9.tar.gz
llvm-cc9495f6791aaaacbff55d7eace43550eb27e3c9.tar.bz2
[AArch64] Only mark cost 1 perfect shuffles as legal
The perfect shuffle tables encode a cost of either 0 (a nop-copy) or 1 (a single instruction) with a cost encoding of 0 in the upper 2 bits. All perfect shuffles with any cost are then marked as legal shuffles though (the maximum encoded cost is 3), which can confuse the DAG combiner into thinking the shuffles are cheaper than the should be. Limiting legal shuffles to single instructions seems to do better in most case, producing less instructions for complex shuffles. There are some cases that now become tbl, which may be better or worse depending on whether the instruction is in a loop and the tbl load can be hoisted out. Differential Revision: https://reviews.llvm.org/D123377
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions