[DAGCombiner] Fold truncate(build_vector(x,y)) -> build_vector(truncate(x),truncate(y))
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Thu, 28 Mar 2019 11:34:21 +0000 (11:34 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Thu, 28 Mar 2019 11:34:21 +0000 (11:34 +0000)
commit38a0616c1df029aff481eb0224dacb55c317865e
treeee83062e80991b328b8973fc97c6e340ef718b55
parent3ce9af9370d091b7d959902216482f3015e965fc
[DAGCombiner] Fold truncate(build_vector(x,y)) -> build_vector(truncate(x),truncate(y))

If scalar truncates are free, attempt to pre-truncate build_vectors source operands.

Only attempt to do this before legalization as we often end up with truncations/extensions during build_vector lowering.

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

llvm-svn: 357161
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
llvm/test/CodeGen/X86/bool-vector.ll
llvm/test/CodeGen/X86/known-signbits-vector.ll