Fork of llvm with experimental commits and workarounds for RPCS3
Go to file
Simon Pilgrim 483654e906 [DAGCombiner] (REAPPLIED) Add vector demanded elements support to computeKnownBits
Currently computeKnownBits returns the common known zero/one bits for all elements of vector data, when we may only be interested in one/some of the elements.

This patch adds a DemandedElts argument that allows us to specify the elements we actually care about. The original computeKnownBits implementation calls with a DemandedElts demanding all elements to match current behaviour. Scalar types set this to 1.

The approach was found to be easier than trying to add a per-element known bits solution, for a similar usefulness given the combines where computeKnownBits is typically used.

I've only added support for a few opcodes so far (the ones that have proven straightforward to test), all others will default to demanding all elements but can be updated in due course.

DemandedElts support could similarly be added to computeKnownBitsForTargetNode in a future commit.

This looked like this had caused compile time regressions on some buildbots (and was reverted in rL285381), but appears to have just been a harmless bystander!

Differential Revision: https://reviews.llvm.org/D25691

llvm-svn: 285494
2016-10-29 11:29:39 +00:00
bindings [Go bindings] Update for r284678 API changes. 2016-10-20 09:14:39 +00:00
cmake cmake: Enable the lto cache when building with -flto=thin on darwin 2016-10-28 20:48:47 +00:00
docs [libFuzzer] mention one more trophie 2016-10-28 22:03:54 +00:00
examples [BuildingAJIT] Use the remote target triple to construct the TargetMachine in 2016-10-19 22:41:03 +00:00
include [DAGCombiner] (REAPPLIED) Add vector demanded elements support to computeKnownBits 2016-10-29 11:29:39 +00:00
lib [DAGCombiner] (REAPPLIED) Add vector demanded elements support to computeKnownBits 2016-10-29 11:29:39 +00:00
projects [CMake] Correct configuration order of the sub-projects based on ther dependancies 2016-10-09 20:38:29 +00:00
resources
runtimes [CMake] Make the runtimes directory work with bootstrap builds 2016-10-19 21:50:25 +00:00
test [DAGCombiner] (REAPPLIED) Add vector demanded elements support to computeKnownBits 2016-10-29 11:29:39 +00:00
tools Do not print out Flags field twice. 2016-10-28 23:57:37 +00:00
unittests Resubmit "Add support for advanced number formatting." 2016-10-29 00:27:22 +00:00
utils [utils] Add a '--unified-report' option to the code coverage prep script 2016-10-26 22:07:39 +00:00
.arcconfig project_id is from another era in phabricator land and does not provide any value. 2016-09-27 15:47:29 +00:00
.clang-format
.clang-tidy .clang-tidy: correct style name is 'camelBack' not 'lowerCase'. 2016-09-13 19:04:26 +00:00
.gitignore gitignore: ignore VS Code editor files 2016-09-02 22:54:26 +00:00
CMakeLists.txt cmake: Rename installhdrs to install-llvm-headers and fix the dependencies 2016-10-24 21:58:58 +00:00
CODE_OWNERS.TXT Take ownership of libLTO as discussed on llvm-dev. 2016-09-15 17:42:39 +00:00
configure
CREDITS.TXT Shamelessly add myself to CREDITS.TXT 2016-08-04 16:28:22 +00:00
LICENSE.TXT Remove autoconf references from LICENSE.TXT 2016-08-12 20:11:03 +00:00
llvm.spec.in
LLVMBuild.txt
README.txt
RELEASE_TESTERS.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 are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.