[DagCombiner] Generalized BuildVector Vector Concatenation
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 22 Feb 2015 18:17:28 +0000 (18:17 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 22 Feb 2015 18:17:28 +0000 (18:17 +0000)
commit66c960350c9f1380ae5adbb19947e435d7b0d752
tree4145515f858fdc31e6430775d9e8831fed0b90d5
parent0e8abfa6ed986c892ec723236e32e78fd9c47b88
[DagCombiner] Generalized BuildVector Vector Concatenation

The CONCAT_VECTORS combiner pass can transform the concat of two BUILD_VECTOR nodes into a single BUILD_VECTOR node.

This patch generalises this to support any number of BUILD_VECTOR nodes, and also permits UNDEF nodes to be included as well.

This was noticed as AVX vec128 -> vec256 canonicalization sometimes creates a CONCAT_VECTOR with a real vec128 lower and an vec128 UNDEF upper.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230177 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SelectionDAG/DAGCombiner.cpp
test/CodeGen/X86/vector-zext.ll