@@ -59360,7 +59360,8 @@ static SDValue combineINSERT_SUBVECTOR(SDNode *N, SelectionDAG &DAG,
59360
59360
}
59361
59361
59362
59362
// If we're splatting the lower half subvector of a full vector load into the
59363
- // upper half, attempt to create a subvector broadcast.
59363
+ // upper half, just splat the subvector directly, potentially creating a
59364
+ // subvector broadcast.
59364
59365
// TODO: Drop hasOneUse checks.
59365
59366
if ((int)IdxVal == (VecNumElts / 2) &&
59366
59367
Vec.getValueSizeInBits() == (2 * SubVec.getValueSizeInBits()) &&
@@ -59370,12 +59371,7 @@ static SDValue combineINSERT_SUBVECTOR(SDNode *N, SelectionDAG &DAG,
59370
59371
if (VecLd && SubLd &&
59371
59372
DAG.areNonVolatileConsecutiveLoads(
59372
59373
SubLd, VecLd, SubVec.getValueSizeInBits() / 8, 0)) {
59373
- SDValue BcastLd = getBROADCAST_LOAD(X86ISD::SUBV_BROADCAST_LOAD, dl, OpVT,
59374
- SubVecVT, SubLd, 0, DAG);
59375
- SDValue NewSubVec = DAG.getNode(ISD::EXTRACT_SUBVECTOR, dl, SubVecVT,
59376
- BcastLd, DAG.getVectorIdxConstant(0, dl));
59377
- DCI.CombineTo(SubLd, NewSubVec, BcastLd.getValue(1));
59378
- return BcastLd;
59374
+ return concatSubVectors(SubVec, SubVec, DAG, dl);
59379
59375
}
59380
59376
}
59381
59377
0 commit comments