Skip to content

Commit 79c7b7e

Browse files
committed
[X86] combineToExtendBoolVectorInReg - use SelectionDAG::getSplat helper instead of shuffle(scalar_to_vector(x))
1 parent 19f657d commit 79c7b7e

File tree

1 file changed

+4
-11
lines changed

1 file changed

+4
-11
lines changed

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46202,21 +46202,14 @@ static SDValue combineToExtendBoolVectorInReg(
4620246202
// widened bits won't be used, and this might allow the use of a broadcast
4620346203
// load.
4620446204
assert((EltSizeInBits % NumElts) == 0 && "Unexpected integer scale");
46205-
unsigned Scale = EltSizeInBits / NumElts;
46206-
EVT BroadcastVT =
46207-
EVT::getVectorVT(*DAG.getContext(), SclVT, NumElts * Scale);
46208-
Vec = DAG.getNode(ISD::SCALAR_TO_VECTOR, DL, BroadcastVT, N00);
46209-
ShuffleMask.append(NumElts * Scale, 0);
46210-
Vec = DAG.getVectorShuffle(BroadcastVT, DL, Vec, Vec, ShuffleMask);
46211-
Vec = DAG.getBitcast(VT, Vec);
46205+
EVT BroadcastVT = EVT::getVectorVT(*DAG.getContext(), SclVT,
46206+
(NumElts * EltSizeInBits) / NumElts);
46207+
Vec = DAG.getBitcast(VT, DAG.getSplat(BroadcastVT, DL, N00));
4621246208
} else {
4621346209
// For smaller scalar integers, we can simply any-extend it to the vector
4621446210
// element size (we don't care about the upper bits) and broadcast it to all
4621546211
// elements.
46216-
SDValue Scl = DAG.getAnyExtOrTrunc(N00, DL, SVT);
46217-
Vec = DAG.getNode(ISD::SCALAR_TO_VECTOR, DL, VT, Scl);
46218-
ShuffleMask.append(NumElts, 0);
46219-
Vec = DAG.getVectorShuffle(VT, DL, Vec, Vec, ShuffleMask);
46212+
Vec = DAG.getSplat(VT, DL, DAG.getAnyExtOrTrunc(N00, DL, SVT));
4622046213
}
4622146214

4622246215
// Now, mask the relevant bit in each element.

0 commit comments

Comments
 (0)