[ARM][ISel] Improve the lowering of vector loads.
authorQuentin Colombet <qcolombet@apple.com>
Tue, 23 Jul 2013 22:34:47 +0000 (22:34 +0000)
committerQuentin Colombet <qcolombet@apple.com>
Tue, 23 Jul 2013 22:34:47 +0000 (22:34 +0000)
commit17f99a991f2e270a34c53854ce80acc30754537b
tree5c2d54fa2e1e32fe01a1a8b85db83711b2799243
parent00d92eee327b7ac9d91bc804843f70dea5dfc068
[ARM][ISel] Improve the lowering of vector loads.

When vectors are built from a single value, the ARM lowering issues a
scalar_to_vector node.
This node is then always morphed into a move from the general purpose unit to
the vector unit.
When the value comes from a load, this can be simplified into a vector load to
the right lane.

This patch changes the lowering of insert_vector_elt to expose a vector
friendly pattern in this situation.

This is a step toward fixing <rdar://problem/14170854>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186999 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/ARMISelLowering.cpp
test/CodeGen/ARM/vector-DAGCombine.ll