[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)
commit4e30d9b6d85a0a4a79c9b527f39deff18b302e4f
tree85a4be0a21acf06d6ecca8b685bf8c3e15730205
parente2dd84e42f037458ce9ab863bbc590c84f20c977
[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

llvm-svn: 230177
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
llvm/test/CodeGen/X86/vector-zext.ll