llvm-project/llvm
Craig Topper b8b90ac1c5 [X86][DAGCombiner] Teach narrowShuffle to use concat_vectors instead of inserting into undef
Summary:
Concat_vectors is more canonical during early DAG combine. For example, its what's used by SelectionDAGBuilder when converting IR shuffles into SelectionDAG shuffles when element counts between inputs and mask don't match. We also have combines in DAGCombiner than can pull concat_vectors through a shuffle. See partitionShuffleOfConcats. So it seems like concat_vectors is a better operation to use here. I had to teach DAGCombiner's SimplifyVBinOp to also handle concat_vectors with undef. I haven't checked yet if we can remove the INSERT_SUBVECTOR version in there or not.

I didn't want to mess with the other caller of getShuffleHalfVectors that's used during shuffle lowering where insert_subvector probably is what we want to produce so I've enabled this via a boolean passed to the function.

Reviewers: spatel, RKSimon

Reviewed By: RKSimon

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

llvm-svn: 369872
2019-08-25 17:59:49 +00:00
..
benchmarks
bindings Bump llvm-go to C++14 2019-08-15 10:55:25 +00:00
cmake [CMake] Update C4324 MSVC warning comment to explain its still broken at VS2019 2019-08-20 11:20:05 +00:00
docs Debug Info: Support for DW_AT_export_symbols for anonymous structs 2019-08-23 17:19:21 +00:00
examples [ORC] Make sure we linker-mangle symbol names in the SpeculationLayer. 2019-08-18 21:29:57 +00:00
include [PowerPC][AIX] Adds support for writing the .data section in assembly files 2019-08-25 15:17:25 +00:00
lib [X86][DAGCombiner] Teach narrowShuffle to use concat_vectors instead of inserting into undef 2019-08-25 17:59:49 +00:00
projects [libc++] Take 2: Integrate the PSTL into libc++ 2019-08-05 18:29:14 +00:00
resources
runtimes
test [X86] Add test case for inserting/extracting from two shuffled vectors. NFC 2019-08-25 15:49:29 +00:00
tools [llvm-reduce] Silence -Wdocumentation 2019-08-24 15:04:33 +00:00
unittests [ORC] Remove query dependencies when symbols are resolved. 2019-08-23 20:37:32 +00:00
utils [TableGen] Correct comments for end of namespace. NFC 2019-08-25 10:47:30 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt Autogenerate the shebang lines for tools/opt-viewer 2019-08-21 01:48:28 +00:00
CODE_OWNERS.TXT
CREDITS.TXT
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.