Lines Matching defs:Shuf
21971 SDValue Shuf = DAG.getVectorShuffle(ShufVT, DL, DestVecBC, PaddedSubV, Mask);
21974 AddToWorklist(Shuf.getNode());
21975 return DAG.getBitcast(VT, Shuf);
22136 if (SDValue Shuf = mergeInsertEltWithShuffle(N, Elt))
22137 return Shuf;
22139 if (SDValue Shuf = combineInsertEltToShuffle(N, Elt))
22140 return Shuf;
22142 if (SDValue Shuf = combineInsertEltToLoad(N, Elt))
22143 return Shuf;
22688 auto *Shuf = cast<ShuffleVectorSDNode>(VecOp);
22690 int OrigElt = Shuf->getMaskElt(IndexC->getZExtValue());
22813 if (auto *Shuf = dyn_cast<ShuffleVectorSDNode>(VecOp)) {
22828 int Idx = (Elt > (int)NumElts) ? -1 : Shuf->getMaskElt(Elt);
23294 SDValue Shuf = TLI.buildLegalVectorShuffle(VecVT, DL, Extract.getOperand(0),
23296 if (!Shuf)
23298 return DAG.getBitcast(VT, Shuf);
24975 static SDValue foldShuffleOfConcatUndefs(ShuffleVectorSDNode *Shuf,
24977 SDValue N0 = Shuf->getOperand(0), N1 = Shuf->getOperand(1);
24985 ArrayRef<int> Mask = Shuf->getMask();
24986 EVT VT = Shuf->getValueType(0);
25015 SDLoc DL(Shuf);
25446 static SDValue combineShuffleOfSplatVal(ShuffleVectorSDNode *Shuf,
25448 EVT VT = Shuf->getValueType(0);
25451 if (!Shuf->getOperand(1).isUndef())
25457 if (!Shuf->isSplat()) {
25459 for (int Idx : Shuf->getMask()) {
25467 if (DAG.isSplatValue(Shuf->getOperand(0), DemandedElts, UndefElts)) {
25471 for (int Idx : Shuf->getMask()) {
25479 SmallVector<int, 8> SplatMask(Shuf->getMask().begin(),
25480 Shuf->getMask().end());
25488 assert(SplatMask != Shuf->getMask() && "Expected mask to change!");
25489 return DAG.getVectorShuffle(VT, SDLoc(Shuf), Shuf->getOperand(0),
25490 Shuf->getOperand(1), SplatMask);
25495 // TODO: Create DemandedElts mask from Shuf's mask.
25497 if (DAG.isSplatValue(Shuf->getOperand(0), /*AllowUndefs*/ false))
25498 return Shuf->getOperand(0);
25500 auto *Splat = dyn_cast<ShuffleVectorSDNode>(Shuf->getOperand(0));
25504 ArrayRef<int> ShufMask = Shuf->getMask();
25533 return Shuf->getOperand(0);
25672 static SDValue replaceShuffleOfInsert(ShuffleVectorSDNode *Shuf,
25676 ArrayRef<int> Mask = Shuf->getMask();
25678 SDValue Op0 = Shuf->getOperand(0);
25679 SDValue Op1 = Shuf->getOperand(1);
25716 SDValue NewInsIndex = DAG.getVectorIdxConstant(ShufOp0Index, SDLoc(Shuf));
25717 return DAG.getNode(ISD::INSERT_VECTOR_ELT, SDLoc(Shuf), Op0.getValueType(),
25725 static SDValue simplifyShuffleOfShuffle(ShuffleVectorSDNode *Shuf) {
25727 auto *Shuf0 = dyn_cast<ShuffleVectorSDNode>(Shuf->getOperand(0));
25728 if (!Shuf0 || !Shuf->getOperand(1).isUndef())
25731 ArrayRef<int> Mask = Shuf->getMask();
25746 return Shuf->getOperand(0);