summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2018-01-23 15:30:07 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2018-01-23 15:30:07 +0000
commit9b4a097f94065fdcdb7aab7ce42502f2ca182600 (patch)
tree2ad00ea633d068bd758217708eb897f57a4d3bd4 /llvm/lib/Target
parente2905c8a0cf78552c9f97f50315822f1110b366c (diff)
downloadbcm5719-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.cpp8
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);
OpenPOWER on IntegriCloud