Lines Matching defs:Shuf
22415 SDValue Shuf = DAG.getVectorShuffle(ShufVT, DL, DestVecBC, PaddedSubV, Mask);
22418 AddToWorklist(Shuf.getNode());
22419 return DAG.getBitcast(VT, Shuf);
22580 if (SDValue Shuf = mergeInsertEltWithShuffle(N, Elt))
22581 return Shuf;
22583 if (SDValue Shuf = combineInsertEltToShuffle(N, Elt))
22584 return Shuf;
22586 if (SDValue Shuf = combineInsertEltToLoad(N, Elt))
22587 return Shuf;
23171 auto *Shuf = cast<ShuffleVectorSDNode>(VecOp);
23173 int OrigElt = Shuf->getMaskElt(IndexC->getZExtValue());
23296 if (auto *Shuf = dyn_cast<ShuffleVectorSDNode>(VecOp)) {
23311 int Idx = (Elt > (int)NumElts) ? -1 : Shuf->getMaskElt(Elt);
23777 SDValue Shuf = TLI.buildLegalVectorShuffle(VecVT, DL, Extract.getOperand(0),
23779 if (!Shuf)
23781 return DAG.getBitcast(VT, Shuf);
25480 static SDValue foldShuffleOfConcatUndefs(ShuffleVectorSDNode *Shuf,
25482 SDValue N0 = Shuf->getOperand(0), N1 = Shuf->getOperand(1);
25490 ArrayRef<int> Mask = Shuf->getMask();
25491 EVT VT = Shuf->getValueType(0);
25520 SDLoc DL(Shuf);
25951 static SDValue combineShuffleOfSplatVal(ShuffleVectorSDNode *Shuf,
25953 EVT VT = Shuf->getValueType(0);
25956 if (!Shuf->getOperand(1).isUndef())
25962 if (!Shuf->isSplat()) {
25964 for (int Idx : Shuf->getMask()) {
25972 if (DAG.isSplatValue(Shuf->getOperand(0), DemandedElts, UndefElts)) {
25976 for (int Idx : Shuf->getMask()) {
25984 SmallVector<int, 8> SplatMask(Shuf->getMask());
25992 assert(SplatMask != Shuf->getMask() && "Expected mask to change!");
25993 return DAG.getVectorShuffle(VT, SDLoc(Shuf), Shuf->getOperand(0),
25994 Shuf->getOperand(1), SplatMask);
25999 // TODO: Create DemandedElts mask from Shuf's mask.
26001 if (DAG.isSplatValue(Shuf->getOperand(0), /*AllowUndefs*/ false))
26002 return Shuf->getOperand(0);
26004 auto *Splat = dyn_cast<ShuffleVectorSDNode>(Shuf->getOperand(0));
26008 ArrayRef<int> ShufMask = Shuf->getMask();
26037 return Shuf->getOperand(0);
26176 static SDValue replaceShuffleOfInsert(ShuffleVectorSDNode *Shuf,
26180 ArrayRef<int> Mask = Shuf->getMask();
26182 SDValue Op0 = Shuf->getOperand(0);
26183 SDValue Op1 = Shuf->getOperand(1);
26218 SDValue NewInsIndex = DAG.getVectorIdxConstant(ShufOp0Index, SDLoc(Shuf));
26219 return DAG.getNode(ISD::INSERT_VECTOR_ELT, SDLoc(Shuf), Op0.getValueType(),
26230 static SDValue simplifyShuffleOfShuffle(ShuffleVectorSDNode *Shuf) {
26232 auto *Shuf0 = dyn_cast<ShuffleVectorSDNode>(Shuf->getOperand(0));
26233 if (!Shuf0 || !Shuf->getOperand(1).isUndef())
26236 ArrayRef<int> Mask = Shuf->getMask();
26251 return Shuf->getOperand(0);