llvm-project/llvm
James Molloy 1d88d6f289 [ValueTracking] Add a new predicate: isKnownNonEqual()
isKnownNonEqual(A, B) returns true if it can be determined that A != B.

At the moment it only knows two facts, that a non-wrapping add of nonzero to a value cannot be that value:

A + B != A [where B != 0, addition is nsw or nuw]

and that contradictory known bits imply two values are not equal.

This patch also hooks this up to InstSimplify; InstSimplify had a peephole for the first fact but not the second so this teaches InstSimplify a new trick too (alas no measured performance impact!)

llvm-svn: 251012
2015-10-22 13:18:42 +00:00
..
autoconf Don't use bashism/kshism of test ==. From Kamil Rytarowski. 2015-09-12 16:30:32 +00:00
bindings [OCaml] Expose Llvm.{set_,}unnamed_addr. 2015-10-21 17:43:02 +00:00
cmake Fix add_llvm_external_project. 2015-10-22 08:31:46 +00:00
docs [OperandBundles] Make function attributes conservatively correct 2015-10-22 03:12:22 +00:00
examples [JIT/Examples] Fix Fibonacci so that it runs again. 2015-10-17 06:36:46 +00:00
include [ValueTracking] Add a new predicate: isKnownNonEqual() 2015-10-22 13:18:42 +00:00
lib [ValueTracking] Add a new predicate: isKnownNonEqual() 2015-10-22 13:18:42 +00:00
projects
resources
test [ValueTracking] Add a new predicate: isKnownNonEqual() 2015-10-22 13:18:42 +00:00
tools [JIT] Towards a working small memory model. 2015-10-21 22:12:03 +00:00
unittests [IR] Add a `makeNoWrapRegion` method to `ConstantRange` 2015-10-22 03:12:57 +00:00
utils Lit: Rework r249161; Move RLIMIT_NPROC to main.py. 2015-10-15 15:37:13 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt [CMake] All the checks for if LLVM_VERSION_* variables are set need to be if(DEFINED ...) 2015-10-20 18:16:37 +00:00
CODE_OWNERS.TXT CODE_OWNERS.TXT is supposed to be sorted by surname 2015-09-07 00:41:40 +00:00
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in We're actually -Wmissing-field-initializers clean thanks to the cmake 2015-08-07 16:44:47 +00:00
Makefile.rules We're actually -Wmissing-field-initializers clean thanks to the cmake 2015-08-07 16:44:47 +00:00
README.txt
configure Don't use bashism/kshism of test ==. From Kamil Rytarowski. 2015-09-12 16:30:32 +00:00
llvm.spec.in [Sparc] Implement i64 load/store support for 32-bit sparc. 2015-08-10 19:11:39 +00:00

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're writing a package for LLVM, see docs/Packaging.rst for our
suggestions.