diff options
author | Craig Topper <craig.topper@gmail.com> | 2015-11-29 22:53:22 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2015-11-29 22:53:22 +0000 |
commit | ecae476e4cfb5bc5c00b15ac9925ec9ab41cf01f (patch) | |
tree | d498a274c883f0f2224be1231440b0aca03b052c /llvm/lib/Target | |
parent | 5237b3991d327b660bcbccab5a71b1603facbb53 (diff) | |
download | bcm5719-llvm-ecae476e4cfb5bc5c00b15ac9925ec9ab41cf01f.tar.gz bcm5719-llvm-ecae476e4cfb5bc5c00b15ac9925ec9ab41cf01f.zip |
[X86] int_x86_avx2_permps and X86ISD::VPERMV should take an integer vector for its shuffle indices.
llvm-svn: 254269
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 4 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86InstrFragmentsSIMD.td | 6 |
2 files changed, 6 insertions, 4 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 3904d273c7d..59350ab2184 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -10539,9 +10539,7 @@ static SDValue lowerV8F32VectorShuffle(SDValue Op, SDValue V1, SDValue V2, if (Subtarget->hasAVX2()) return DAG.getNode( X86ISD::VPERMV, DL, MVT::v8f32, - DAG.getBitcast(MVT::v8f32, DAG.getNode(ISD::BUILD_VECTOR, DL, - MVT::v8i32, VPermMask)), - V1); + DAG.getNode(ISD::BUILD_VECTOR, DL, MVT::v8i32, VPermMask), V1); // Otherwise, fall back. return lowerVectorShuffleAsLanePermuteAndBlend(DL, MVT::v8f32, V1, V2, Mask, diff --git a/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td b/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td index 30ca3b470fc..8d7d48bd61a 100644 --- a/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td +++ b/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td @@ -376,7 +376,11 @@ def X86vpmaddwd : SDNode<"X86ISD::VPMADDWD" , SDTPack>; def X86VPermilpv : SDNode<"X86ISD::VPERMILPV", SDTShuff2OpM>; def X86VPermilpi : SDNode<"X86ISD::VPERMILPI", SDTShuff2OpI>; -def X86VPermv : SDNode<"X86ISD::VPERMV", SDTShuff2Op>; +def X86VPermv : SDNode<"X86ISD::VPERMV", + SDTypeProfile<1, 2, [SDTCisVec<0>, SDTCisInt<1>, + SDTCisSameNumEltsAs<0,1>, + SDTCisSameSizeAs<0,1>, + SDTCisSameAs<0,2>]>>; def X86VPermi : SDNode<"X86ISD::VPERMI", SDTShuff2OpI>; def X86VPermt2 : SDNode<"X86ISD::VPERMV3", SDTypeProfile<1, 3, [SDTCisVec<0>, |