llvm-capstone/llvm
Philip Reames 8fe7f13af8 [RewriteStatepointsForGC] Generalized vector phi/select handling for base pointers
This change extends the detection of base pointers for vector constructs to handle arbitrary phi and select nodes. The existing non-vector code already handles those, so this is basically just extending the vector special case to be less special cased. It still isn't generalized vector handling since we can't handle arbitrary vector instructions (e.g. shufflevectors), but it's a lot closer.

The general structure of the change is as follows:
 * Extend the base defining value relation over a subset of vector instructions and vector typed phi & select instructions.
 * Move scalarization from before base pointer rewriting to after base pointer rewriting. The extension of the BDV relation is sufficient to find vector base phis for vector inputs.
 * Preserve the existing special case logic for when the base of a vector element is locally obvious. This general idea could be extended to the scalar case as well.

Differential Revision: http://reviews.llvm.org/D10461#inline-84275

llvm-svn: 240850
2015-06-26 22:47:37 +00:00
..
autoconf [autoconf] Detect OLE32 for mingw. 2015-06-18 04:16:05 +00:00
bindings Update LLVM bindings after r239940. Apparently these aren't included in 2015-06-18 11:51:16 +00:00
cmake Spelling fixes in comments. 2015-06-24 21:46:53 +00:00
docs AMDGPU/SI: Update amd_kernel_code_t definition and add assembler support 2015-06-26 21:58:31 +00:00
examples Simplify the Mangler interface now that DataLayout is mandatory. 2015-06-23 13:59:29 +00:00
include CodeGen: Push the ModuleSlotTracker through Metadata 2015-06-26 22:28:47 +00:00
lib [RewriteStatepointsForGC] Generalized vector phi/select handling for base pointers 2015-06-26 22:47:37 +00:00
projects build: make libunwind a proper project 2015-04-25 01:47:39 +00:00
resources In MSVC builds embed a VERSIONINFO resource in our exe and DLL files. 2015-06-12 15:58:29 +00:00
test [RewriteStatepointsForGC] Generalized vector phi/select handling for base pointers 2015-06-26 22:47:37 +00:00
tools AMDGPU/SI: Set ELF OS/ABI to ELFOSABI_AMDGPU_HSA 2015-06-26 21:15:11 +00:00
unittests AsmPrinter: Use an intrusively linked list for DIE::Children 2015-06-25 23:52:10 +00:00
utils Pass 2 more variables to lit tests. 2015-06-23 20:57:26 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore Do not ignore projects/LLVMBuild.txt in git repo 2015-06-26 10:13:56 +00:00
CMakeLists.txt Do not pass -allow-shlib-undefined to the Solaris linker. 2015-06-22 18:24:01 +00:00
CODE_OWNERS.TXT Added Andrey Churbanov as the owner of the OpenMP runtime library code 2015-05-05 20:17:53 +00:00
configure [autoconf] Detect OLE32 for mingw. 2015-06-18 04:16:05 +00:00
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in Deprecate in-source autotools builds 2015-05-04 02:04:54 +00:00
Makefile.rules
README.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're writing a package for LLVM, see docs/Packaging.rst for our
suggestions.