llvm-project/llvm
Sanjay Patel a47c8e40c7 [InstCombine] fold lshr(trunc(lshr X, C1)) C2
Only the multi-use cases are changing here because there's
another fold that catches the simpler patterns.

But that other fold is the source of infinite loops when we
try to add D110170, so removing that is planned as a follow-up.

Attempt to show the general proof in Alive2:
https://alive2.llvm.org/ce/z/Ns1uS2

Note that the overshift fold-to-zero tests are not
currently handled by instsimplify. If they were, we
could assert that the shift amount sum is less than
the source bitwidth.
2021-09-24 15:44:07 -04:00
..
benchmarks
bindings [NFC][C API] Make LLVMSetInstrParamAlignment's index param type LLVMAttributeIndex 2021-09-07 15:13:45 -07:00
cmake [CMake] Pass llvm-readelf to CMake external builds 2021-09-23 14:16:14 -07:00
docs [SystemZ][z/OS] Add GOFF Support to the DataLayout 2021-09-24 14:09:01 -04:00
examples [ORC][examples] Export exectuable symbols explicitly in LLJITWithExecutorProcessControl 2021-09-23 21:40:06 +02:00
include [ThinLTO] Update combined index for SamplePGO indirect calls to locals 2021-09-24 12:29:49 -07:00
lib [InstCombine] fold lshr(trunc(lshr X, C1)) C2 2021-09-24 15:44:07 -04:00
projects
resources
runtimes
test [InstCombine] fold lshr(trunc(lshr X, C1)) C2 2021-09-24 15:44:07 -04:00
tools Fix bot failure by adding needed dependence 2021-09-24 12:43:10 -07:00
unittests [SystemZ][z/OS] Add GOFF Support to the DataLayout 2021-09-24 14:09:01 -04:00
utils [TableGen] Allow targets to entirely ignore Psets for registers 2021-09-23 23:07:35 -04:00
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt [cmake] Put check from D110016 behind (default-on) flag 2021-09-20 15:09:05 -04:00
CODE_OWNERS.TXT
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.