llvm-project/llvm
Max Kazantsev 80bc4a5554 [IndVars] Canonicalize comparisons between non-negative values and indvars
-If there is a IndVar which is known to be non-negative, and there is a value which is also non-negative,
then signed and unsigned comparisons between them produce the same result. Both of those can be
seen in the same loop. To allow other optimizations to simplify them, we turn all instructions like

  %c = icmp slt i32 %iv, %b
to

  %c = icmp ult i32 %iv, %b

if both %iv and %b are known to be non-negative.

Differential Revision: https://reviews.llvm.org/D34979

llvm-svn: 307126
2017-07-05 06:38:49 +00:00
..
bindings [NFC] Remove multiple semicolons 2017-06-28 23:15:16 +00:00
cmake TableGen.cmake: Use DEPFILE for Ninja Generator with CMake>=3.7. 2017-06-21 22:04:07 +00:00
docs fix trivial typos in documents; NFC 2017-07-02 12:44:27 +00:00
examples [Orc] Remove the memory manager argument to addModule, and de-templatize the 2017-07-04 04:42:30 +00:00
include [profiledata] Avoid creating a temporary vector in getNumValueData 2017-07-05 01:20:52 +00:00
lib [IndVars] Canonicalize comparisons between non-negative values and indvars 2017-07-05 06:38:49 +00:00
projects
resources
runtimes [CMake][runtimes] Add install target for runtimes builtins 2017-06-02 19:38:11 +00:00
test [IndVars] Canonicalize comparisons between non-negative values and indvars 2017-07-05 06:38:49 +00:00
tools Fix dangling StringRefs found by clang-tidy misc-dangling-handle check. 2017-07-04 15:13:02 +00:00
unittests [Orc] Remove the memory manager argument to addModule, and de-templatize the 2017-07-04 04:42:30 +00:00
utils [globalisel][tablegen] Fix release builds after r307079 2017-07-04 15:31:50 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt Completely disable git/svn version checking if not needed. 2017-06-30 18:48:33 +00:00
CODE_OWNERS.TXT Remove the BBVectorize pass. 2017-06-30 07:09:08 +00:00
CREDITS.TXT Another test commit 2017-07-01 03:24:06 +00:00
LICENSE.TXT
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT
configure
llvm.spec.in

README.txt

Low Level Virtual Machine (LLVM)
================================

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.