llvm-project/llvm
Sanjay Patel c00e48a3db [InstCombine] extend vector select matching for non-splat constants
In D21740, we discussed trying to make this a more general matcher. However, I didn't see a clean
way to handle the regular m_Not cases and these non-splat vector patterns, so I've opted for the
direct approach here. If there are other potential uses of areInverseVectorBitmasks(), we could
move that helper function to a higher level.

There is an open question as to which is of these forms should be considered the canonical IR:
  %sel = select <4 x i1> <i1 true, i1 false, i1 false, i1 true>, <4 x i32> %a, <4 x i32> %b
  %shuf = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 5, i32 6, i32 3>

Differential Revision: http://reviews.llvm.org/D22114

llvm-svn: 275289
2016-07-13 18:07:02 +00:00
..
bindings [OCaml] Add functions for accessing metadata nodes. 2016-06-22 03:30:24 +00:00
cmake [cmake] Create the LLVM_BUILD_UTILS option. 2016-07-10 02:43:47 +00:00
docs PR28516: Fix LangRef description of call and invoke to match IR changes for typeless pointers 2016-07-13 17:21:34 +00:00
examples New Kaleidoscope chapter: Creating object files 2016-07-02 17:01:59 +00:00
include Fix for Bug 26903, adds support to inline __builtin_mempcpy 2016-07-13 17:25:11 +00:00
lib [InstCombine] extend vector select matching for non-splat constants 2016-07-13 18:07:02 +00:00
projects
resources
runtimes [CMake] Add LLVM runtimes directory 2016-06-23 22:07:21 +00:00
test [InstCombine] extend vector select matching for non-splat constants 2016-07-13 18:07:02 +00:00
tools [ThinLTO/gold] Enable symbol resolution in distributed backend case 2016-07-13 16:35:56 +00:00
unittests [llvm-pdbdump] Propagate errors a little more consistently 2016-07-10 03:34:47 +00:00
utils vim: separate the keywords into one per line 2016-07-13 03:47:58 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore [CMake] Add LLVM runtimes directory 2016-06-23 22:07:21 +00:00
CMakeLists.txt [cmake] Create the LLVM_BUILD_UTILS option. 2016-07-10 02:43:47 +00:00
CODE_OWNERS.TXT Transfer ownership of the gold plugin. 2016-07-05 20:49:50 +00:00
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
README.txt
configure
llvm.spec.in

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 are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.