Bob Wilson f20700ca77 SelectionDAG shuffle nodes do not allow operands with different numbers of
elements than the result vector type.  So, when an instruction like:

%8 = shufflevector <2 x float> %4, <2 x float> %7, <4 x i32> <i32 1, i32 0, i32 3, i32 2>

is translated to a DAG, each operand is changed to a concat_vectors node that appends 2 undef elements.  That is:

shuffle [a,b], [c,d] is changed to:
shuffle [a,b,u,u], [c,d,u,u]

That's probably the right thing for x86 but for NEON, we'd much rather have:

shuffle [a,b,c,d], undef

Teach the DAG combiner how to do that transformation for ARM.  Radar 8597007.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117482 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-27 20:38:28 +00:00
..
2010-08-04 21:56:30 +00:00
2010-09-17 21:46:16 +00:00
2010-10-22 21:55:03 +00:00
2010-10-22 23:46:04 +00:00
2010-01-19 00:35:20 +00:00
2010-09-02 20:19:24 +00:00
2010-03-14 18:42:52 +00:00
2010-04-17 16:29:15 +00:00
2010-04-17 16:29:15 +00:00
2010-02-08 23:47:34 +00:00
2010-06-04 01:01:24 +00:00
2010-06-04 01:01:24 +00:00
2010-06-04 23:28:13 +00:00
2009-10-21 08:15:52 +00:00
2010-10-22 22:04:28 +00:00
2010-01-05 17:55:26 +00:00
2010-10-22 21:55:03 +00:00
2010-10-26 21:26:47 +00:00
2010-08-30 23:41:49 +00:00
2009-09-24 20:23:02 +00:00
2009-09-15 20:58:02 +00:00
2009-09-15 20:58:02 +00:00
2009-10-07 20:51:42 +00:00