Assumption that "VectorizedValue" will always be an Instruction is not correct.
authorSuyog Sarda <suyog.sarda@samsung.com>
Fri, 9 Jan 2015 10:23:48 +0000 (10:23 +0000)
committerSuyog Sarda <suyog.sarda@samsung.com>
Fri, 9 Jan 2015 10:23:48 +0000 (10:23 +0000)
commit85d0473650a694606126932eaf021ad7d4f1dc64
treedf0a5aa0ca0d1898192b9aa2884e40c1e4f021bc
parent949ff4d9f2eac092bce2e0d73f1262f829ae4d78
Assumption that "VectorizedValue" will always be an Instruction is not correct.
It can be a constant or a vector argument.

ex :

define i32 @hadd(<4 x i32> %a) #0 {
entry:
  %vecext = extractelement <4 x i32> %a, i32 0
  %vecext1 = extractelement <4 x i32> %a, i32 1
  %add = add i32 %vecext, %vecext1
  %vecext2 = extractelement <4 x i32> %a, i32 2
  %add3 = add i32 %add, %vecext2
  %vecext4 = extractelement <4 x i32> %a, i32 3
  %add5 = add i32 %add3, %vecext4
  ret i32 %add5
}

llvm-svn: 225517
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp