llvm-project/llvm
David Green c0ecbfa4fd [AArch64] Known bits for AArch64ISD::DUP
An AArch64ISD::DUP is just a splat, where the known bits for each lane
are the same as the input. This teaches that to computeKnownBitsForTargetNode.

Problems arise for constants though, as a constant BUILD_VECTOR can be
lowered to an AArch64ISD::DUP, which SimplifyDemandedBits would then
turn back into a constant BUILD_VECTOR leading to an infinite cycle.
This has been prevented by adding a isTargetCanonicalConstantNode node
to prevent the conversion back into a BUILD_VECTOR.

Differential Revision: https://reviews.llvm.org/D128144
2022-06-20 19:11:57 +01:00
..
benchmarks
bindings [llvm-ocaml] Add and use opaque pointer compatible bindings 2022-06-02 11:42:24 +02:00
cmake [CMake] Fix `FindGRPC.cmake` for setting up gRPC related libraries for macOS+homebrew context 2022-06-15 16:11:37 -07:00
docs [docs] More clearly document that the CoC applies to online sync-ups and office hours. 2022-06-20 13:47:53 +02:00
examples Remove unneeded cl::ZeroOrMore for cl::opt/cl::list options 2022-06-05 01:07:51 -07:00
include [AArch64] Known bits for AArch64ISD::DUP 2022-06-20 19:11:57 +01:00
lib [AArch64] Known bits for AArch64ISD::DUP 2022-06-20 19:11:57 +01:00
projects
resources
runtimes Revert "[runtimes] Detect changes to Tests.cmake" 2022-05-26 09:34:18 -07:00
test [AArch64] Known bits for AArch64ISD::DUP 2022-06-20 19:11:57 +01:00
tools [llvm] Don't use Optional::hasValue (NFC) 2022-06-20 10:38:12 -07:00
unittests [Alignment] Remove alignTo version taking a MaybeAlign 2022-06-20 15:15:53 +00:00
utils [llvm] Don't use Optional::hasValue (NFC) 2022-06-20 10:38:12 -07:00
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt [CMake] Enable LLVM_ENABLE_PER_TARGET_RUNTIME_DIR by default on Linux 2022-06-07 21:22:38 -07: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.