Lines Matching refs:Mask
615 SmallVectorImpl<int> &Mask) { in collectSingleShuffleElements() argument
621 Mask.assign(NumElts, -1); in collectSingleShuffleElements()
627 Mask.push_back(i); in collectSingleShuffleElements()
633 Mask.push_back(i + NumElts); in collectSingleShuffleElements()
650 if (collectSingleShuffleElements(VecOp, LHS, RHS, Mask)) { in collectSingleShuffleElements()
652 Mask[InsertedIdx] = -1; in collectSingleShuffleElements()
666 if (collectSingleShuffleElements(VecOp, LHS, RHS, Mask)) { in collectSingleShuffleElements()
669 Mask[InsertedIdx % NumElts] = ExtractedIdx; in collectSingleShuffleElements()
672 Mask[InsertedIdx % NumElts] = ExtractedIdx + NumLHSElts; in collectSingleShuffleElements()
774 static ShuffleOps collectShuffleElements(Value *V, SmallVectorImpl<int> &Mask, in collectShuffleElements() argument
781 Mask.assign(NumElts, -1); in collectShuffleElements()
787 Mask.assign(NumElts, 0); in collectShuffleElements()
807 ShuffleOps LR = collectShuffleElements(VecOp, Mask, RHS, IC, Rerun); in collectShuffleElements()
819 Mask[i] = i; in collectShuffleElements()
825 Mask[InsertedIdx % NumElts] = NumLHSElts + ExtractedIdx; in collectShuffleElements()
836 Mask.push_back(i == InsertedIdx ? ExtractedIdx : NumLHSElts + i); in collectShuffleElements()
844 Mask)) in collectShuffleElements()
852 Mask.push_back(i); in collectShuffleElements()
1269 SmallVector<int, 16> Mask(NumElements, 0); in foldInsSequenceIntoSplat() local
1272 Mask[i] = -1; in foldInsSequenceIntoSplat()
1274 return new ShuffleVectorInst(FirstIE, Mask); in foldInsSequenceIntoSplat()
1430 ArrayRef<int> Mask = Shuf->getShuffleMask(); in foldConstantInsEltIntoShuffle() local
1431 unsigned NumElts = Mask.size(); in foldConstantInsEltIntoShuffle()
1441 NewMaskElts[I] = Mask[I]; in foldConstantInsEltIntoShuffle()
1471 SmallVector<int, 16> Mask(NumElts); in foldConstantInsEltIntoShuffle() local
1479 Mask[I] = NumElts + I; in foldConstantInsEltIntoShuffle()
1487 Mask[I] = I; in foldConstantInsEltIntoShuffle()
1493 ConstantVector::get(Values), Mask); in foldConstantInsEltIntoShuffle()
1699 SmallVector<int, 16> Mask; in visitInsertElementInst() local
1701 collectShuffleElements(&IE, Mask, nullptr, *this, Rerun); in visitInsertElementInst()
1709 return new ShuffleVectorInst(LR.first, LR.second, Mask); in visitInsertElementInst()
1753 static bool canEvaluateShuffled(Value *V, ArrayRef<int> Mask, in canEvaluateShuffled() argument
1777 if (llvm::is_contained(Mask, -1)) in canEvaluateShuffled()
1810 Mask.size() > cast<FixedVectorType>(ITy)->getNumElements()) in canEvaluateShuffled()
1813 if (!canEvaluateShuffled(Operand, Mask, Depth - 1)) in canEvaluateShuffled()
1826 for (int I : Mask) { in canEvaluateShuffled()
1833 return canEvaluateShuffled(I->getOperand(0), Mask, Depth - 1); in canEvaluateShuffled()
1917 static Value *evaluateInDifferentElementOrder(Value *V, ArrayRef<int> Mask, in evaluateInDifferentElementOrder() argument
1925 return PoisonValue::get(FixedVectorType::get(EltTy, Mask.size())); in evaluateInDifferentElementOrder()
1928 return UndefValue::get(FixedVectorType::get(EltTy, Mask.size())); in evaluateInDifferentElementOrder()
1931 return ConstantAggregateZero::get(FixedVectorType::get(EltTy, Mask.size())); in evaluateInDifferentElementOrder()
1935 Mask); in evaluateInDifferentElementOrder()
1972 (Mask.size() != in evaluateInDifferentElementOrder()
1980 V = evaluateInDifferentElementOrder(I->getOperand(i), Mask, Builder); in evaluateInDifferentElementOrder()
1998 for (int e = Mask.size(); Index != e; ++Index) { in evaluateInDifferentElementOrder()
1999 if (Mask[Index] == Element) { in evaluateInDifferentElementOrder()
2008 return evaluateInDifferentElementOrder(I->getOperand(0), Mask, Builder); in evaluateInDifferentElementOrder()
2010 Value *V = evaluateInDifferentElementOrder(I->getOperand(0), Mask, in evaluateInDifferentElementOrder()
2026 ArrayRef<int> Mask) { in isShuffleExtractingFromLHS() argument
2029 unsigned MaskElems = Mask.size(); in isShuffleExtractingFromLHS()
2030 unsigned BegIdx = Mask.front(); in isShuffleExtractingFromLHS()
2031 unsigned EndIdx = Mask.back(); in isShuffleExtractingFromLHS()
2035 if (static_cast<unsigned>(Mask[I]) != BegIdx + I) in isShuffleExtractingFromLHS()
2094 SmallVector<int, 16> Mask; in foldSelectShuffleOfSelectShuffle() local
2095 Shuf.getShuffleMask(Mask); in foldSelectShuffleOfSelectShuffle()
2096 unsigned NumElts = Mask.size(); in foldSelectShuffleOfSelectShuffle()
2103 ShuffleVectorInst::commuteShuffleMask(Mask, NumElts); in foldSelectShuffleOfSelectShuffle()
2128 NewMask[i] = Mask[i] < (signed)NumElts ? Mask[i] : Mask1[i]; in foldSelectShuffleOfSelectShuffle()
2165 ArrayRef<int> Mask = Shuf.getShuffleMask(); in foldSelectShuffleWith1Binop() local
2166 Constant *NewC = Op0IsBinop ? ConstantExpr::getShuffleVector(C, IdC, Mask) : in foldSelectShuffleWith1Binop()
2167 ConstantExpr::getShuffleVector(IdC, C, Mask); in foldSelectShuffleWith1Binop()
2170 is_contained(Mask, PoisonMaskElem) && in foldSelectShuffleWith1Binop()
2184 if (is_contained(Mask, PoisonMaskElem) && !MightCreatePoisonOrUB) in foldSelectShuffleWith1Binop()
2196 ArrayRef<int> Mask = Shuf.getShuffleMask(); in canonicalizeInsertSplat() local
2203 !match(Op1, m_Undef()) || match(Mask, m_ZeroMask()) || IndexC == 0) in canonicalizeInsertSplat()
2218 if (Mask[i] == PoisonMaskElem) in canonicalizeInsertSplat()
2219 NewMask[i] = Mask[i]; in canonicalizeInsertSplat()
2296 ArrayRef<int> Mask = Shuf.getShuffleMask(); in foldSelectShuffle() local
2297 Constant *NewC = ConstantExpr::getShuffleVector(C0, C1, Mask); in foldSelectShuffle()
2303 is_contained(Mask, PoisonMaskElem) && in foldSelectShuffle()
2338 V = Builder.CreateShuffleVector(X, Y, Mask); in foldSelectShuffle()
2354 if (is_contained(Mask, PoisonMaskElem) && !MightCreatePoisonOrUB) in foldSelectShuffle()
2388 ArrayRef<int> Mask = Shuf.getShuffleMask(); in foldTruncShuffle() local
2389 for (unsigned i = 0, e = Mask.size(); i != e; ++i) { in foldTruncShuffle()
2390 if (Mask[i] == PoisonMaskElem) in foldTruncShuffle()
2394 if (Mask[i] != (int)LSBIndex) in foldTruncShuffle()
2548 ArrayRef<int> Mask; in foldIdentityExtractShuffle() local
2549 if (!match(Op0, m_Shuffle(m_Value(X), m_Value(Y), m_Mask(Mask)))) in foldIdentityExtractShuffle()
2570 assert(NumElts < Mask.size() && in foldIdentityExtractShuffle()
2575 int MaskElt = Mask[i]; in foldIdentityExtractShuffle()
2586 SmallVector<int, 16> Mask; in foldShuffleWithInsert() local
2587 Shuf.getShuffleMask(Mask); in foldShuffleWithInsert()
2589 int NumElts = Mask.size(); in foldShuffleWithInsert()
2601 if (!is_contained(Mask, (int)IdxC)) in foldShuffleWithInsert()
2609 if (!is_contained(Mask, (int)IdxC)) in foldShuffleWithInsert()
2630 if (Mask[i] == -1) in foldShuffleWithInsert()
2634 if (Mask[i] == NumElts + i) in foldShuffleWithInsert()
2638 if (NewInsIndex != -1 || Mask[i] != IndexC->getSExtValue()) in foldShuffleWithInsert()
2664 ShuffleVectorInst::commuteShuffleMask(Mask, NumElts); in foldShuffleWithInsert()
2707 ArrayRef<int> Mask = Shuf.getShuffleMask(); in foldIdentityPaddedShuffles() local
2708 SmallVector<int, 16> NewMask(Mask.size(), -1); in foldIdentityPaddedShuffles()
2709 for (int i = 0, e = Mask.size(); i != e; ++i) { in foldIdentityPaddedShuffles()
2710 if (Mask[i] == -1) in foldIdentityPaddedShuffles()
2715 if (Mask[i] < WideElts) { in foldIdentityPaddedShuffles()
2716 if (Shuffle0->getMaskValue(Mask[i]) == -1) in foldIdentityPaddedShuffles()
2719 if (Shuffle1->getMaskValue(Mask[i] - WideElts) == -1) in foldIdentityPaddedShuffles()
2726 if (Mask[i] < WideElts) { in foldIdentityPaddedShuffles()
2727 assert(Mask[i] < NarrowElts && "Unexpected shuffle mask"); in foldIdentityPaddedShuffles()
2728 NewMask[i] = Mask[i]; in foldIdentityPaddedShuffles()
2730 assert(Mask[i] < (WideElts + NarrowElts) && "Unexpected shuffle mask"); in foldIdentityPaddedShuffles()
2731 NewMask[i] = Mask[i] - (WideElts - NarrowElts); in foldIdentityPaddedShuffles()
2807 ArrayRef<int> Mask = SVI.getShuffleMask(); in visitShuffleVectorInst() local
2823 narrowShuffleMaskElts(XNumElts / VWidth, Mask, ScaledMask); in visitShuffleVectorInst()
2826 if (!widenShuffleMaskElts(VWidth / XNumElts, Mask, ScaledMask)) in visitShuffleVectorInst()
2842 return new ShuffleVectorInst(LHS, createUnaryMask(Mask, LHSWidth)); in visitShuffleVectorInst()
2887 if (match(RHS, m_Undef()) && canEvaluateShuffled(LHS, Mask)) { in visitShuffleVectorInst()
2888 Value *V = evaluateInDifferentElementOrder(LHS, Mask, Builder); in visitShuffleVectorInst()
2922 if (isShuffleExtractingFromLHS(SVI, Mask)) { in visitShuffleVectorInst()
2924 unsigned MaskElems = Mask.size(); in visitShuffleVectorInst()
2938 unsigned BegIdx = Mask.front(); in visitShuffleVectorInst()
3090 if (Mask[i] < 0) { in visitShuffleVectorInst()
3093 } else if (Mask[i] < (int)LHSWidth) { in visitShuffleVectorInst()
3099 eltMask = LHSMask[Mask[i]]; in visitShuffleVectorInst()
3105 eltMask = Mask[i]; in visitShuffleVectorInst()
3116 eltMask = RHSMask[Mask[i]-LHSWidth]; in visitShuffleVectorInst()
3125 eltMask = Mask[i]-LHSWidth; in visitShuffleVectorInst()
3149 if (isSplat || newMask == LHSMask || newMask == RHSMask || newMask == Mask) { in visitShuffleVectorInst()