llvm-project/llvm
Quentin Colombet 618dec2aef [GISel][KnownBits] Add a cache mechanism to speed compile time
This patch adds a cache that is valid only for the duration of a call
to getKnownBits. With such short lived cache we avoid all the problems
of cache invalidation while still getting the benefits of reusing
the information we already computed.

This cache is useful whenever an instruction occurs more than once
in a chain of computation.
E.g.,
v0 = G_ADD v1, v2
v3 = G_ADD v0, v1

Previously we would compute the known bits for:
v1, v2, v0, then v1 again and finally v3.

With the patch, now we won't have to recompute v1 again.

NFC
2020-02-21 14:31:42 -08:00
..
benchmarks
bindings Rework go bindings so that validation works fine 2020-02-13 14:13:03 +01:00
cmake [AIX] Improve 32/64-bit build configuration 2020-02-20 15:41:00 -05:00
docs [AMDGPU] AMDGPUUsage define call convention ABI 2020-02-19 15:56:19 -05:00
examples [ORC][examples] Fix ThinLtoJIT example after changes in 85fb997659. 2020-02-20 11:15:08 -08:00
include [GISel][KnownBits] Add a cache mechanism to speed compile time 2020-02-21 14:31:42 -08:00
lib [GISel][KnownBits] Add a cache mechanism to speed compile time 2020-02-21 14:31:42 -08:00
projects
resources
runtimes [runtimes] Add umbrella targets for runtimes 2020-02-12 09:46:14 -08:00
test [AArch64][SVE] Add support for DestructiveBinary and DestructiveBinaryComm DestructiveInstTypes 2020-02-21 15:19:54 -06:00
tools [llvm-objcopy][MachO] Change the storage of sections 2020-02-21 13:30:52 -08:00
unittests [ARM] Change ARMAttributeParser::Parse to use support::endianness and simplify 2020-02-21 11:05:33 -08:00
utils [gn build] Port 1874dee566 2020-02-21 20:51:44 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes
.gitignore Continue removing llgo. 2020-02-10 10:33:58 -08:00
CMakeLists.txt [AIX] Improve 32/64-bit build configuration 2020-02-20 15:41:00 -05:00
CODE_OWNERS.TXT Continue removing llgo. 2020-02-10 10:33:58 -08:00
CREDITS.TXT
LICENSE.TXT
LLVMBuild.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.