@@ -5724,21 +5724,20 @@ SDValue DAGTypeLegalizer::PromoteIntRes_EXTRACT_SUBVECTOR(SDNode *N) {
5724
5724
5725
5725
SDValue InOp0 = N->getOperand (0 );
5726
5726
if (getTypeAction (InOp0.getValueType ()) == TargetLowering::TypePromoteInteger)
5727
- InOp0 = GetPromotedInteger (N-> getOperand ( 0 ) );
5727
+ InOp0 = GetPromotedInteger (InOp0 );
5728
5728
5729
5729
EVT InVT = InOp0.getValueType ();
5730
+ EVT InSVT = InVT.getVectorElementType ();
5730
5731
5731
5732
unsigned OutNumElems = OutVT.getVectorNumElements ();
5732
5733
SmallVector<SDValue, 8 > Ops;
5733
5734
Ops.reserve (OutNumElems);
5734
5735
for (unsigned i = 0 ; i != OutNumElems; ++i) {
5735
-
5736
5736
// Extract the element from the original vector.
5737
- SDValue Index = DAG.getNode (ISD::ADD, dl, BaseIdx.getValueType (),
5738
- BaseIdx, DAG.getConstant (i, dl, BaseIdx.getValueType ()));
5739
- SDValue Ext = DAG.getNode (ISD::EXTRACT_VECTOR_ELT, dl,
5740
- InVT.getVectorElementType (), N->getOperand (0 ), Index);
5741
-
5737
+ SDValue Index = DAG.getNode (ISD::ADD, dl, BaseIdx.getValueType (), BaseIdx,
5738
+ DAG.getConstant (i, dl, BaseIdx.getValueType ()));
5739
+ SDValue Ext = DAG.getNode (ISD::EXTRACT_VECTOR_ELT, dl, InSVT,
5740
+ N->getOperand (0 ), Index);
5742
5741
SDValue Op = DAG.getAnyExtOrTrunc (Ext, dl, NOutVTElem);
5743
5742
// Insert the converted element to the new vector.
5744
5743
Ops.push_back (Op);
0 commit comments