llvm-project/llvm
Roman Lebedev 70472f34b2
[Reassociate] Convert `add`-like `or`'s into an `add`'s to allow reassociation
InstCombine is quite aggressive in doing the opposite transform,
folding `add` of operands with no common bits set into an `or`,
and that not many things support that new pattern..

In this case, teaching Reassociate about it is easy,
there's preexisting art for `sub`/`shl`:
just convert such an `or` into an `add`:
https://rise4fun.com/Alive/Xlyv
2020-11-03 22:30:51 +03:00
..
benchmarks
bindings [IR] add fn attr for no_stack_protector; prevent inlining on mismatch 2020-10-23 11:55:39 -07:00
cmake [llvm] Export LLVM_LIT_ARGS in LLVMConfig.cmake 2020-10-29 20:27:05 -07:00
docs [NFC][AMDGPU] Minor editorial improvements to AMDGPUUsage.rst 2020-11-03 16:56:01 +00:00
examples [ORC] Break up C-API header Orc.h, and add JITEventListener support. 2020-10-19 01:59:04 -07:00
include [DAG] computeKnownBits - Move ISD::SRA handling into KnownBits::ashr 2020-11-03 18:09:33 +00:00
lib [Reassociate] Convert `add`-like `or`'s into an `add`'s to allow reassociation 2020-11-03 22:30:51 +03:00
projects
resources
runtimes [runtimes] Revert the libc++ __config_site change 2020-10-23 09:41:48 -04:00
test [Reassociate] Convert `add`-like `or`'s into an `add`'s to allow reassociation 2020-11-03 22:30:51 +03:00
tools [AMDGPU] Add gfx1033 target 2020-11-03 16:27:48 +00:00
unittests Fix GCC error: specialization of 'template<class LeafTy> struct llvm::LinearPolyBaseTypeTraits' in different namespace 2020-11-03 16:55:32 +01:00
utils [openmp][openacc][NFC] Simplify access and validation of DirectiveBase information 2020-11-03 11:13:06 -05:00
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt [cmake] Add LLVM_UBSAN_FLAGS, to allow overriding UBSan flags 2020-10-26 15:48:19 -07:00
CODE_OWNERS.TXT Update email addresses in CODE_OWNERS. 2020-10-26 18:51:04 -07:00
CREDITS.TXT [NFC] Add contributors names to CREDITS.TXT 2020-10-07 13:22:55 -04:00
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.