llvm-project/llvm
Kit Barton f9d0a40573 Ensure all uses of permute instructions feed vector stores
There is a problem in VSXSwapRemoval where it is incorrectly removing permute instructions.
In this case, the permute is feeding both a vector store and also a non-store instruction. In this case, the permute cannot be removed.

The fix is to simply look at all the uses of the vector register defined by the permute and ensure that all the uses are vector store instructions.

This problem was reported in PR 27735 (https://llvm.org/bugs/show_bug.cgi?id=27735).

Test case based on the original problem reported.

Phabricator Review: http://reviews.llvm.org/D21802

llvm-svn: 274645
2016-07-06 18:03:52 +00:00
..
bindings [OCaml] Add functions for accessing metadata nodes. 2016-06-22 03:30:24 +00:00
cmake [CMake] Adjust export_executable_symbols to cope with non-target link libraries 2016-07-05 13:16:54 +00:00
docs Add writeonly IR attribute 2016-07-04 08:01:29 +00:00
examples New Kaleidoscope chapter: Creating object files 2016-07-02 17:01:59 +00:00
include [TTI] The cost model should not assume vector casts get completely scalarized 2016-07-06 17:30:56 +00:00
lib Ensure all uses of permute instructions feed vector stores 2016-07-06 18:03:52 +00:00
projects
resources
runtimes [CMake] Add LLVM runtimes directory 2016-06-23 22:07:21 +00:00
test Ensure all uses of permute instructions feed vector stores 2016-07-06 18:03:52 +00:00
tools [pdb] Re-add code to write PDB files. 2016-06-30 17:43:00 +00:00
unittests [codeview] Add DISubprogram::ThisAdjustment 2016-07-01 02:41:21 +00:00
utils TableGen: avoid string copy. 2016-07-05 22:51:30 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore [CMake] Add LLVM runtimes directory 2016-06-23 22:07:21 +00:00
CMakeLists.txt [CMake] Module builds depend on target intrinsics_gen to be built first. 2016-06-30 20:35:56 +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.