Skip to content

Commit

Permalink
Update LegalizeVectorTypes.cpp
Browse files Browse the repository at this point in the history
  • Loading branch information
abhishek-kaushik22 committed Jan 27, 2025
1 parent 275878c commit f3f6e57
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7040,10 +7040,10 @@ SDValue DAGTypeLegalizer::WidenVecOp_INSERT_SUBVECTOR(SDNode *N) {
SDValue SubVec = N->getOperand(1);
SDValue InVec = N->getOperand(0);

SDValue OrigSubVec;
EVT OrigVT;
if (getTypeAction(SubVec.getValueType()) == TargetLowering::TypeWidenVector) {
OrigSubVec = std::move(SubVec);
SubVec = GetWidenedVector(OrigSubVec);
OrigVT = SubVec.getValueType();
SubVec = GetWidenedVector(SubVec);
}

EVT SubVT = SubVec.getValueType();
Expand Down Expand Up @@ -7075,19 +7075,18 @@ SDValue DAGTypeLegalizer::WidenVecOp_INSERT_SUBVECTOR(SDNode *N) {

// If the operands can't be widened legally, just replace the INSERT_SUBVECTOR
// with a series of INSERT_VECTOR_ELT
EVT OrigVT = OrigSubVec.getValueType();
unsigned Idx = N->getConstantOperandVal(2);

SDValue InsertElt;
SDValue InsertElt = InVec;
SDLoc DL(N);
EVT VectorIdxTy = TLI.getVectorIdxTy(DAG.getDataLayout());
for (unsigned I = 0; I < OrigVT.getVectorNumElements(); ++I) {
SDValue ExtractElt =
DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, VT.getScalarType(), SubVec,
DAG.getConstant(I, DL, VectorIdxTy));
InsertElt =
DAG.getNode(ISD::INSERT_VECTOR_ELT, DL, VT, I != 0 ? InsertElt : InVec,
ExtractElt, DAG.getConstant(I + Idx, DL, VectorIdxTy));
DAG.getNode(ISD::INSERT_VECTOR_ELT, DL, VT, InsertElt, ExtractElt,
DAG.getConstant(I + Idx, DL, VectorIdxTy));
}

return InsertElt;
Expand Down

0 comments on commit f3f6e57

Please sign in to comment.