diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-01-23 15:30:07 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-01-23 15:30:07 +0000 |
commit | 9b4a097f94065fdcdb7aab7ce42502f2ca182600 (patch) | |
tree | 2ad00ea633d068bd758217708eb897f57a4d3bd4 /llvm/lib/Target | |
parent | e2905c8a0cf78552c9f97f50315822f1110b366c (diff) | |
download | bcm5719-llvm-9b4a097f94065fdcdb7aab7ce42502f2ca182600.tar.gz bcm5719-llvm-9b4a097f94065fdcdb7aab7ce42502f2ca182600.zip |
Use EVT::changeVectorElementTypeToInteger() to convert index type to integer
llvm-svn: 323207
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index da928b76847..952a937ddef 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -7920,16 +7920,16 @@ LowerBUILD_VECTORAsVariablePermute(SDValue V, SelectionDAG &DAG, if (!PermIdx || PermIdx->getZExtValue() != Idx) return SDValue(); } - MVT IndicesVT = VT; - if (VT.isFloatingPoint()) - IndicesVT = MVT::getVectorVT(MVT::getIntegerVT(VT.getScalarSizeInBits()), - VT.getVectorNumElements()); + + MVT IndicesVT = EVT(VT).changeVectorElementTypeToInteger().getSimpleVT(); IndicesVec = DAG.getZExtOrTrunc(IndicesVec, SDLoc(IndicesVec), IndicesVT); + if (SrcVec.getValueSizeInBits() < IndicesVT.getSizeInBits()) { SrcVec = DAG.getNode(ISD::INSERT_SUBVECTOR, SDLoc(SrcVec), VT, DAG.getUNDEF(VT), SrcVec, DAG.getIntPtrConstant(0, SDLoc(SrcVec))); } + if (VT == MVT::v16i8) return DAG.getNode(X86ISD::PSHUFB, SDLoc(V), VT, SrcVec, IndicesVec); return DAG.getNode(X86ISD::VPERMV, SDLoc(V), VT, IndicesVec, SrcVec); |