1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00
Go to file
Stanislav Mekhanoshin 4e48d88543 [SLP] Control maximum vectorization factor from TTI
D82227 has added a proper check to limit PHI vectorization to the
maximum vector register size. That unfortunately resulted in at
least a couple of regressions on SystemZ and x86.

This change reverts PHI handling from D82227 and replaces it with
a more general check in SLPVectorizerPass::tryToVectorizeList().
Moved to tryToVectorizeList() it allows to restart vectorization
if initial chunk fails.

However, this function is more general and handles not only PHI
but everything which SLP handles. If vectorization factor would
be limited to maximum vector register size it would limit much
more vectorization than before leading to further regressions.
Therefore a new TTI callback getMaximumVF() is added with the
default 0 to preserve current behavior and limit nothing. Then
targets can decide what is better for them.

The callback gets ElementSize just like a similar getMinimumVF()
function and the main opcode of the chain. The latter is to avoid
regressions at least on the AMDGPU. We can have loads and stores
up to 128 bit wide, and <2 x 16> bit vector math on some
subtargets, where the rest shall not be vectorized. I.e. we need
to differentiate based on the element size and operation itself.

Differential Revision: https://reviews.llvm.org/D92059
2020-12-14 08:49:40 -08:00
benchmarks
bindings Adding PoisonValue for representing poison value explicitly in IR 2020-11-25 17:33:51 -07:00
cmake [PGO] Adjust -vp-counters-per-site under dynamic linking. 2020-12-11 09:42:53 -08:00
docs [NFC]{AMDGPU] Update AMDGPUUsage with AMD RDNA 2 reference 2020-12-13 17:21:02 +00:00
examples [Kaleidoscope] Migrate DebugInfo::get to DILocation::get 2020-12-11 18:01:04 -08:00
include [SLP] Control maximum vectorization factor from TTI 2020-12-14 08:49:40 -08:00
lib [SLP] Control maximum vectorization factor from TTI 2020-12-14 08:49:40 -08:00
projects llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
resources
runtimes [runtimes] Revert the libc++ __config_site change 2020-10-23 09:41:48 -04:00
test [SLP] Control maximum vectorization factor from TTI 2020-12-14 08:49:40 -08:00
tools [llvm-objdump] Use "--" for long options in --help text 2020-12-14 13:11:29 +00:00
unittests mac/arm: XFAIL the last 2 failing check-llvm tests 2020-12-12 20:12:02 -05:00
utils [UpdateTestChecks] Add --(no-)x86_scrub_sp option. 2020-12-12 17:11:13 +00:00
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt repair cygwin build 2020-12-03 11:49:16 -05:00
CODE_OWNERS.TXT [CODE_OWNERS.TXT] Update to include yours truly as the TableGen owner 2020-11-12 09:49:00 -05:00
configure
CREDITS.TXT [NFC] Add contributors names to CREDITS.TXT 2020-10-07 13:22:55 -04:00
LICENSE.TXT
llvm.spec.in
README.txt
RELEASE_TESTERS.TXT

The LLVM Compiler Infrastructure
================================

This directory and its subdirectories contain source code for LLVM,
a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.