Add an optional ability to expand larger BUILD_VECTORs with shuffles
authorHal Finkel <hfinkel@anl.gov>
Mon, 31 Mar 2014 19:42:55 +0000 (19:42 +0000)
committerHal Finkel <hfinkel@anl.gov>
Mon, 31 Mar 2014 19:42:55 +0000 (19:42 +0000)
commit152321199040ed99bf19425c5d721dd24f086857
tree57757655ec85100c2a7e87ec77249b2efcd82c98
parent193c3e91b9e5c0d2fe68b29d4d4eb01f14ce36ee
Add an optional ability to expand larger BUILD_VECTORs with shuffles

This adds the ability to expand large (meaning with more than two unique
defined values) BUILD_VECTOR nodes in terms of SCALAR_TO_VECTOR and (legal)
vector shuffles. There is now no limit of the size we are capable of expanding
this way, although we don't currently do this for vectors with many unique
values because of the default implementation of TLI's
shouldExpandBuildVectorWithShuffles function.

There is currently no functional change to any existing targets because the new
capabilities are not used unless some target overrides the TLI
shouldExpandBuildVectorWithShuffles function. As a result, I've not included a
test case for the new functionality in this commit, but regression tests will
(at least) be added soon when I commit support for the PPC QPX vector
instruction set.

The benefit of committing this now is that it makes the
shouldExpandBuildVectorWithShuffles callback, which had to be added for other
reasons regardless, fully functional. I suspect that other targets will
also benefit from tuning the heuristic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205243 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SelectionDAG/LegalizeDAG.cpp