llvm-project/llvm
Amara Emerson 95ac3d15e9 [AArch64][GlobalISel] Add G_VECREDUCE fewerElements support for full scalarization.
For some reductions like G_VECREDUCE_OR on AArch64, we need to scalarize
completely if the source is <= 64b. This change adds support for that in
the legalizer. If the source has a pow-2 num elements, then we can do
a tree reduction using the scalar operation in the individual elements.
Otherwise, we just create a sequential chain of operations.

For AArch64, we only need to scalarize if the input is <64b. If it's great than
64b then we can first do a fewElements step to 64b, taking advantage of vector
instructions until we reach the point of scalarization.

I also had to relax the verifier checks for reductions because the intrinsics
support <1 x EltTy> types, which we lower to scalars for GlobalISel.

Differential Revision: https://reviews.llvm.org/D108276
2021-08-19 16:38:52 -07:00
..
benchmarks
bindings
cmake [CMake] Fix recompile all .inc files with LLVM_OPTIMIZED_TABLEGEN in Visual Studio. 2021-08-18 10:24:58 +03:00
docs [docs] Document how to install sphinx and recommonmark on Ubuntu 2021-08-19 18:24:17 +03:00
examples [examples] Fix Kaleidoscope for Windows 2021-08-19 13:20:51 +10:00
include [AArch64][GlobalISel] Add G_VECREDUCE fewerElements support for full scalarization. 2021-08-19 16:38:52 -07:00
lib [AArch64][GlobalISel] Add G_VECREDUCE fewerElements support for full scalarization. 2021-08-19 16:38:52 -07:00
projects
resources
runtimes [OpenMP] Fixing llvm-omp-device-info compilation with runtimes 2021-07-30 13:09:08 -05:00
test [AArch64][GlobalISel] Add G_VECREDUCE fewerElements support for full scalarization. 2021-08-19 16:38:52 -07:00
tools [NewPM] Make some sanitizer passes parameterized in the PassRegistry 2021-08-19 12:43:37 +02:00
unittests [NFC] Cleanup AttributeList::getStackAlignment() 2021-08-19 14:21:40 -07:00
utils [gn build] Port 5fdaaf7fd8 2021-08-19 01:52:47 +00:00
.clang-format
.clang-tidy
.gitattributes Fix: [MCParser] Correctly handle CRLF line ends when consuming line comments 2021-08-17 16:16:19 +01:00
.gitignore
CMakeLists.txt [NFC] Trim trailing whitespaces in `llvm/CMakeLists.txt` 2021-08-16 12:49:59 -04:00
CODE_OWNERS.TXT Add Johannes to CODE_OWNERS for openmp offloading 2021-08-02 19:45:47 +01:00
CREDITS.TXT
LICENSE.TXT
README.txt
RELEASE_TESTERS.TXT
configure
llvm.spec.in

README.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.