1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-18 18:42:46 +02:00
Go to file
Kerry McLaughlin d947615252 [LoopVectorize] Enable strict reductions when allowReordering() returns false
When loop hints are passed via metadata, the allowReordering function
in LoopVectorizationLegality will allow the order of floating point
operations to be changed:

  bool allowReordering() const {
    // When enabling loop hints are provided we allow the vectorizer to change
    // the order of operations that is given by the scalar loop. This is not
    // enabled by default because can be unsafe or inefficient.

The -enable-strict-reductions flag introduced in D98435 will currently only
vectorize reductions in-loop if hints are used, since canVectorizeFPMath()
will return false if reordering is not allowed.

This patch changes canVectorizeFPMath() to query whether it is safe to
vectorize the loop with ordered reductions if no hints are used. For
testing purposes, an additional flag (-hints-allow-reordering) has been
added to disable the reordering behaviour described above.

Reviewed By: sdesmalen

Differential Revision: https://reviews.llvm.org/D101836
2021-05-26 13:59:12 +01:00
benchmarks
bindings [SanitizeCoverage] Add support for NoSanitizeCoverage function attribute 2021-05-25 12:57:14 +02:00
cmake [CMake] Don't LTO optimize targets that aren't part of any distribution 2021-05-19 15:02:11 -07:00
docs [Docs] Updated the content of getting started documentation under llvm/lib/MC 2021-05-26 16:25:26 +05:30
examples [ORC] Update SpeculativeJIT example for dispatchTask changes in 5344c88dcb2. 2021-05-10 09:30:46 -07:00
include [LoopVectorize] Enable strict reductions when allowReordering() returns false 2021-05-26 13:59:12 +01:00
lib [LoopVectorize] Enable strict reductions when allowReordering() returns false 2021-05-26 13:59:12 +01:00
projects llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
resources
runtimes [runtimes] Add the libc project to the list of runtimes. 2021-03-23 17:33:03 +00:00
test [LoopVectorize] Enable strict reductions when allowReordering() returns false 2021-05-26 13:59:12 +01:00
tools [NFC][object] Change the input parameter of the method isDebugSection. 2021-05-26 08:47:53 +00:00
unittests [MC][ELF] Emit unique sections for different flags 2021-05-26 11:51:29 +01:00
utils [gn build] Port 36d0fdf9ac3b 2021-05-26 04:31:12 +00:00
.clang-format
.clang-tidy
.gitattributes
.gitignore Remove .gitignore entries not relevant in the monorepo. 2021-04-07 12:25:02 -07:00
CMakeLists.txt [CMake] Don't LTO optimize targets that aren't part of any distribution 2021-05-19 15:02:11 -07:00
CODE_OWNERS.TXT [M68k][CODE_OWNERS](0/8) Add code owner for the M68k target 2021-03-08 12:30:56 -08:00
configure
CREDITS.TXT Update personal info in CREDITS.TXT 2021-04-11 19:25:02 +08: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.