Allow to fold vector load if there is more than one bitcast, so in the case:
authorJakub Staszak <kubastaszak@gmail.com>
Mon, 29 Oct 2012 21:56:35 +0000 (21:56 +0000)
committerJakub Staszak <kubastaszak@gmail.com>
Mon, 29 Oct 2012 21:56:35 +0000 (21:56 +0000)
commit6d317824a5e8b4c5d8dc18e9e2ec365e5a1b515e
treec6d6a42eac87bc7a3fac3a9a3186a8f225686be7
parent369ff7b740c154dc4357c6d063f4957498a1e7b9
Allow to fold vector load if there is more than one bitcast, so in the case:

%0 = load <8 x i16>* %dest
%1 = shufflevector <8 x i16> %0, <8 x i16> %in,
      <8 x i32> < i32 0, i32 1, i32 2, i32 3, i32 13, i32 undef, i32 14, i32 14>
store <8 x i16> %1, <8 x i16>* %dest

We get:
  vmovlpd (%eax), %xmm0, %xmm0

instead of:
  vmovaps (%eax), %xmm1
  vmovsd  %xmm1, %xmm0, %xmm0

No extra test-case is added. I just fixed the existing one
(also it uses FileCheck now).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166971 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/vec_shuffle-30.ll