diff options
author | Ivan Chikish <nekotekina@gmail.com> | 2023-05-15 11:25:32 +0100 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2023-05-15 11:25:32 +0100 |
commit | 579812c081a23f70804b7214d59776f59d056914 (patch) | |
tree | f925fac82daf9c5fe2757c074494609a5ea2803c /clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp | |
parent | b5d1ea9d2b771b25df4a0997e600beab7684800f (diff) | |
download | llvm-579812c081a23f70804b7214d59776f59d056914.zip llvm-579812c081a23f70804b7214d59776f59d056914.tar.gz llvm-579812c081a23f70804b7214d59776f59d056914.tar.bz2 |
[X86] LowerRotate: prefer unpack-based algorithm
Splitting and improving from the https://reviews.llvm.org/D146357
When running tests for LowerShift, I discovered some poor codegen in rotate and funnel shift tests. This patch attempts to address some of them.
Using unpack for splitting and using double-bitwidth shifts may improve performance according to https://uica.uops.info tests.
No cross-lane shuffles
No dirtying double-width registers
Massive improvement for AVX2 rotates in some cases (var_funnnel_v8i16, var_funnnel_v16i16) — because unpack is currently only used for vXi8 vectors.
Differential Revision: https://reviews.llvm.org/D149071
Diffstat (limited to 'clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp')
0 files changed, 0 insertions, 0 deletions