summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorMichael Liao <michael.liao@intel.com>2013-10-15 17:51:58 +0000
committerMichael Liao <michael.liao@intel.com>2013-10-15 17:51:58 +0000
commitad71659def09fecdcebd6683128c533eb479dae8 (patch)
tree24f6d0a3d4a572c4b0cfac87bec874df201229d8 /llvm/lib
parent8ba068211d7e2a5976cad7272465c20efa0ce8a6 (diff)
downloadbcm5719-llvm-ad71659def09fecdcebd6683128c533eb479dae8.tar.gz
bcm5719-llvm-ad71659def09fecdcebd6683128c533eb479dae8.zip
Fix PR17546
- Type of index used in extract_vector_elt or insert_vector_elt supposes to be TLI.getVectorIdxTy() which is pointer type on most targets. It'd better to truncate (or zero-extend in case it's changed later) it to mask element type to guarantee they are matching instead of asserting that. llvm-svn: 192722
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp7
1 files changed, 1 insertions, 6 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 8e3a4d747aa..54d824419fd 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -7627,12 +7627,7 @@ X86TargetLowering::LowerEXTRACT_VECTOR_ELT(SDValue Op,
MVT MaskVT = MVT::getVectorVT(MaskEltVT, VecVT.getSizeInBits() /
MaskEltVT.getSizeInBits());
- if (Idx.getSimpleValueType() != MaskEltVT)
- if (Idx.getOpcode() == ISD::ZERO_EXTEND ||
- Idx.getOpcode() == ISD::SIGN_EXTEND)
- Idx = Idx.getOperand(0);
- assert(Idx.getSimpleValueType() == MaskEltVT &&
- "Unexpected index in insertelement");
+ Idx = DAG.getZExtOrTrunc(Idx, dl, MaskEltVT);
SDValue Mask = DAG.getNode(X86ISD::VINSERT, dl, MaskVT,
getZeroVector(MaskVT, Subtarget, DAG, dl),
Idx, DAG.getConstant(0, getPointerTy()));
OpenPOWER on IntegriCloud