Lines Matching refs:Mask
533 SmallVectorImpl<int> &Mask) { in collectSingleShuffleElements() argument
539 Mask.assign(NumElts, -1); in collectSingleShuffleElements()
545 Mask.push_back(i); in collectSingleShuffleElements()
551 Mask.push_back(i + NumElts); in collectSingleShuffleElements()
568 if (collectSingleShuffleElements(VecOp, LHS, RHS, Mask)) { in collectSingleShuffleElements()
570 Mask[InsertedIdx] = -1; in collectSingleShuffleElements()
584 if (collectSingleShuffleElements(VecOp, LHS, RHS, Mask)) { in collectSingleShuffleElements()
587 Mask[InsertedIdx % NumElts] = ExtractedIdx; in collectSingleShuffleElements()
590 Mask[InsertedIdx % NumElts] = ExtractedIdx + NumLHSElts; in collectSingleShuffleElements()
688 static ShuffleOps collectShuffleElements(Value *V, SmallVectorImpl<int> &Mask, in collectShuffleElements() argument
695 Mask.assign(NumElts, -1); in collectShuffleElements()
701 Mask.assign(NumElts, 0); in collectShuffleElements()
721 ShuffleOps LR = collectShuffleElements(VecOp, Mask, RHS, IC); in collectShuffleElements()
732 Mask[i] = i; in collectShuffleElements()
738 Mask[InsertedIdx % NumElts] = NumLHSElts + ExtractedIdx; in collectShuffleElements()
749 Mask.push_back(i == InsertedIdx ? ExtractedIdx : NumLHSElts + i); in collectShuffleElements()
757 Mask)) in collectShuffleElements()
765 Mask.push_back(i); in collectShuffleElements()
1177 SmallVector<int, 16> Mask(NumElements, 0); in foldInsSequenceIntoSplat() local
1180 Mask[i] = -1; in foldInsSequenceIntoSplat()
1182 return new ShuffleVectorInst(FirstIE, PoisonVec, Mask); in foldInsSequenceIntoSplat()
1338 ArrayRef<int> Mask = Shuf->getShuffleMask(); in foldConstantInsEltIntoShuffle() local
1339 unsigned NumElts = Mask.size(); in foldConstantInsEltIntoShuffle()
1349 NewMaskElts[I] = Mask[I]; in foldConstantInsEltIntoShuffle()
1375 SmallVector<int, 16> Mask(NumElts); in foldConstantInsEltIntoShuffle() local
1383 Mask[I] = NumElts + I; in foldConstantInsEltIntoShuffle()
1391 Mask[I] = I; in foldConstantInsEltIntoShuffle()
1397 ConstantVector::get(Values), Mask); in foldConstantInsEltIntoShuffle()
1481 SmallVector<int, 16> Mask; in visitInsertElementInst() local
1482 ShuffleOps LR = collectShuffleElements(&IE, Mask, nullptr, *this); in visitInsertElementInst()
1490 return new ShuffleVectorInst(LR.first, LR.second, Mask); in visitInsertElementInst()
1526 static bool canEvaluateShuffled(Value *V, ArrayRef<int> Mask, in canEvaluateShuffled() argument
1550 if (llvm::is_contained(Mask, -1)) in canEvaluateShuffled()
1583 Mask.size() > cast<FixedVectorType>(ITy)->getNumElements()) in canEvaluateShuffled()
1586 if (!canEvaluateShuffled(Operand, Mask, Depth - 1)) in canEvaluateShuffled()
1599 for (int i = 0, e = Mask.size(); i != e; ++i) { in canEvaluateShuffled()
1600 if (Mask[i] == ElementNumber) { in canEvaluateShuffled()
1606 return canEvaluateShuffled(I->getOperand(0), Mask, Depth - 1); in canEvaluateShuffled()
1690 static Value *evaluateInDifferentElementOrder(Value *V, ArrayRef<int> Mask) { in evaluateInDifferentElementOrder() argument
1697 return UndefValue::get(FixedVectorType::get(EltTy, Mask.size())); in evaluateInDifferentElementOrder()
1700 return ConstantAggregateZero::get(FixedVectorType::get(EltTy, Mask.size())); in evaluateInDifferentElementOrder()
1704 Mask); in evaluateInDifferentElementOrder()
1741 (Mask.size() != in evaluateInDifferentElementOrder()
1749 V = evaluateInDifferentElementOrder(I->getOperand(i), Mask); in evaluateInDifferentElementOrder()
1768 for (int e = Mask.size(); Index != e; ++Index) { in evaluateInDifferentElementOrder()
1769 if (Mask[Index] == Element) { in evaluateInDifferentElementOrder()
1778 return evaluateInDifferentElementOrder(I->getOperand(0), Mask); in evaluateInDifferentElementOrder()
1780 Value *V = evaluateInDifferentElementOrder(I->getOperand(0), Mask); in evaluateInDifferentElementOrder()
1795 ArrayRef<int> Mask) { in isShuffleExtractingFromLHS() argument
1798 unsigned MaskElems = Mask.size(); in isShuffleExtractingFromLHS()
1799 unsigned BegIdx = Mask.front(); in isShuffleExtractingFromLHS()
1800 unsigned EndIdx = Mask.back(); in isShuffleExtractingFromLHS()
1804 if (static_cast<unsigned>(Mask[I]) != BegIdx + I) in isShuffleExtractingFromLHS()
1879 ArrayRef<int> Mask = Shuf.getShuffleMask(); in foldSelectShuffleWith1Binop() local
1880 Constant *NewC = Op0IsBinop ? ConstantExpr::getShuffleVector(C, IdC, Mask) : in foldSelectShuffleWith1Binop()
1881 ConstantExpr::getShuffleVector(IdC, C, Mask); in foldSelectShuffleWith1Binop()
1884 is_contained(Mask, UndefMaskElem) && in foldSelectShuffleWith1Binop()
1898 if (is_contained(Mask, UndefMaskElem) && !MightCreatePoisonOrUB) in foldSelectShuffleWith1Binop()
1910 ArrayRef<int> Mask = Shuf.getShuffleMask(); in canonicalizeInsertSplat() local
1917 !match(Op1, m_Undef()) || match(Mask, m_ZeroMask()) || IndexC == 0) in canonicalizeInsertSplat()
1933 if (Mask[i] == UndefMaskElem) in canonicalizeInsertSplat()
1934 NewMask[i] = Mask[i]; in canonicalizeInsertSplat()
2005 ArrayRef<int> Mask = Shuf.getShuffleMask(); in foldSelectShuffle() local
2006 Constant *NewC = ConstantExpr::getShuffleVector(C0, C1, Mask); in foldSelectShuffle()
2012 is_contained(Mask, UndefMaskElem) && in foldSelectShuffle()
2047 V = Builder.CreateShuffleVector(X, Y, Mask); in foldSelectShuffle()
2062 if (is_contained(Mask, UndefMaskElem) && !MightCreatePoisonOrUB) in foldSelectShuffle()
2095 ArrayRef<int> Mask = Shuf.getShuffleMask(); in foldTruncShuffle() local
2096 for (unsigned i = 0, e = Mask.size(); i != e; ++i) { in foldTruncShuffle()
2097 if (Mask[i] == UndefMaskElem) in foldTruncShuffle()
2101 if (Mask[i] != (int)LSBIndex) in foldTruncShuffle()
2159 ArrayRef<int> Mask; in foldIdentityExtractShuffle() local
2160 if (!match(Op0, m_Shuffle(m_Value(X), m_Value(Y), m_Mask(Mask)))) in foldIdentityExtractShuffle()
2181 assert(NumElts < Mask.size() && in foldIdentityExtractShuffle()
2186 int MaskElt = Mask[i]; in foldIdentityExtractShuffle()
2197 SmallVector<int, 16> Mask; in foldShuffleWithInsert() local
2198 Shuf.getShuffleMask(Mask); in foldShuffleWithInsert()
2203 int NumElts = Mask.size(); in foldShuffleWithInsert()
2216 if (!is_contained(Mask, (int)IdxC)) in foldShuffleWithInsert()
2224 if (!is_contained(Mask, (int)IdxC)) in foldShuffleWithInsert()
2240 if (Mask[i] == -1) in foldShuffleWithInsert()
2244 if (Mask[i] == NumElts + i) in foldShuffleWithInsert()
2248 if (NewInsIndex != -1 || Mask[i] != IndexC->getSExtValue()) in foldShuffleWithInsert()
2274 ShuffleVectorInst::commuteShuffleMask(Mask, NumElts); in foldShuffleWithInsert()
2317 ArrayRef<int> Mask = Shuf.getShuffleMask(); in foldIdentityPaddedShuffles() local
2318 SmallVector<int, 16> NewMask(Mask.size(), -1); in foldIdentityPaddedShuffles()
2319 for (int i = 0, e = Mask.size(); i != e; ++i) { in foldIdentityPaddedShuffles()
2320 if (Mask[i] == -1) in foldIdentityPaddedShuffles()
2325 if (Mask[i] < WideElts) { in foldIdentityPaddedShuffles()
2326 if (Shuffle0->getMaskValue(Mask[i]) == -1) in foldIdentityPaddedShuffles()
2329 if (Shuffle1->getMaskValue(Mask[i] - WideElts) == -1) in foldIdentityPaddedShuffles()
2336 if (Mask[i] < WideElts) { in foldIdentityPaddedShuffles()
2337 assert(Mask[i] < NarrowElts && "Unexpected shuffle mask"); in foldIdentityPaddedShuffles()
2338 NewMask[i] = Mask[i]; in foldIdentityPaddedShuffles()
2340 assert(Mask[i] < (WideElts + NarrowElts) && "Unexpected shuffle mask"); in foldIdentityPaddedShuffles()
2341 NewMask[i] = Mask[i] - (WideElts - NarrowElts); in foldIdentityPaddedShuffles()
2380 ArrayRef<int> Mask = SVI.getShuffleMask(); in visitShuffleVectorInst() local
2397 narrowShuffleMaskElts(XNumElts / VWidth, Mask, ScaledMask); in visitShuffleVectorInst()
2400 if (!widenShuffleMaskElts(VWidth / XNumElts, Mask, ScaledMask)) in visitShuffleVectorInst()
2420 if (Mask[i] < 0) in visitShuffleVectorInst()
2423 Elts.push_back(Mask[i] % LHSWidth); in visitShuffleVectorInst()
2464 if (match(RHS, m_Undef()) && canEvaluateShuffled(LHS, Mask)) { in visitShuffleVectorInst()
2465 Value *V = evaluateInDifferentElementOrder(LHS, Mask); in visitShuffleVectorInst()
2499 if (isShuffleExtractingFromLHS(SVI, Mask)) { in visitShuffleVectorInst()
2501 unsigned MaskElems = Mask.size(); in visitShuffleVectorInst()
2515 unsigned BegIdx = Mask.front(); in visitShuffleVectorInst()
2666 if (Mask[i] < 0) { in visitShuffleVectorInst()
2669 } else if (Mask[i] < (int)LHSWidth) { in visitShuffleVectorInst()
2675 eltMask = LHSMask[Mask[i]]; in visitShuffleVectorInst()
2681 eltMask = Mask[i]; in visitShuffleVectorInst()
2692 eltMask = RHSMask[Mask[i]-LHSWidth]; in visitShuffleVectorInst()
2701 eltMask = Mask[i]-LHSWidth; in visitShuffleVectorInst()
2725 if (isSplat || newMask == LHSMask || newMask == RHSMask || newMask == Mask) { in visitShuffleVectorInst()