Lines Matching refs:Mask
591 SmallVectorImpl<int> &Mask) { in collectSingleShuffleElements() argument
597 Mask.assign(NumElts, -1); in collectSingleShuffleElements()
603 Mask.push_back(i); in collectSingleShuffleElements()
609 Mask.push_back(i + NumElts); in collectSingleShuffleElements()
626 if (collectSingleShuffleElements(VecOp, LHS, RHS, Mask)) { in collectSingleShuffleElements()
628 Mask[InsertedIdx] = -1; in collectSingleShuffleElements()
642 if (collectSingleShuffleElements(VecOp, LHS, RHS, Mask)) { in collectSingleShuffleElements()
645 Mask[InsertedIdx % NumElts] = ExtractedIdx; in collectSingleShuffleElements()
648 Mask[InsertedIdx % NumElts] = ExtractedIdx + NumLHSElts; in collectSingleShuffleElements()
745 static ShuffleOps collectShuffleElements(Value *V, SmallVectorImpl<int> &Mask, in collectShuffleElements() argument
752 Mask.assign(NumElts, -1); in collectShuffleElements()
758 Mask.assign(NumElts, 0); in collectShuffleElements()
778 ShuffleOps LR = collectShuffleElements(VecOp, Mask, RHS, IC); in collectShuffleElements()
789 Mask[i] = i; in collectShuffleElements()
795 Mask[InsertedIdx % NumElts] = NumLHSElts + ExtractedIdx; in collectShuffleElements()
806 Mask.push_back(i == InsertedIdx ? ExtractedIdx : NumLHSElts + i); in collectShuffleElements()
814 Mask)) in collectShuffleElements()
822 Mask.push_back(i); in collectShuffleElements()
1234 SmallVector<int, 16> Mask(NumElements, 0); in foldInsSequenceIntoSplat() local
1237 Mask[i] = -1; in foldInsSequenceIntoSplat()
1239 return new ShuffleVectorInst(FirstIE, Mask); in foldInsSequenceIntoSplat()
1395 ArrayRef<int> Mask = Shuf->getShuffleMask(); in foldConstantInsEltIntoShuffle() local
1396 unsigned NumElts = Mask.size(); in foldConstantInsEltIntoShuffle()
1406 NewMaskElts[I] = Mask[I]; in foldConstantInsEltIntoShuffle()
1436 SmallVector<int, 16> Mask(NumElts); in foldConstantInsEltIntoShuffle() local
1444 Mask[I] = NumElts + I; in foldConstantInsEltIntoShuffle()
1452 Mask[I] = I; in foldConstantInsEltIntoShuffle()
1458 ConstantVector::get(Values), Mask); in foldConstantInsEltIntoShuffle()
1582 SmallVector<int, 16> Mask; in visitInsertElementInst() local
1583 ShuffleOps LR = collectShuffleElements(&IE, Mask, nullptr, *this); in visitInsertElementInst()
1591 return new ShuffleVectorInst(LR.first, LR.second, Mask); in visitInsertElementInst()
1630 static bool canEvaluateShuffled(Value *V, ArrayRef<int> Mask, in canEvaluateShuffled() argument
1654 if (llvm::is_contained(Mask, -1)) in canEvaluateShuffled()
1687 Mask.size() > cast<FixedVectorType>(ITy)->getNumElements()) in canEvaluateShuffled()
1690 if (!canEvaluateShuffled(Operand, Mask, Depth - 1)) in canEvaluateShuffled()
1703 for (int i = 0, e = Mask.size(); i != e; ++i) { in canEvaluateShuffled()
1704 if (Mask[i] == ElementNumber) { in canEvaluateShuffled()
1710 return canEvaluateShuffled(I->getOperand(0), Mask, Depth - 1); in canEvaluateShuffled()
1794 static Value *evaluateInDifferentElementOrder(Value *V, ArrayRef<int> Mask) { in evaluateInDifferentElementOrder() argument
1801 return UndefValue::get(FixedVectorType::get(EltTy, Mask.size())); in evaluateInDifferentElementOrder()
1804 return ConstantAggregateZero::get(FixedVectorType::get(EltTy, Mask.size())); in evaluateInDifferentElementOrder()
1808 Mask); in evaluateInDifferentElementOrder()
1845 (Mask.size() != in evaluateInDifferentElementOrder()
1853 V = evaluateInDifferentElementOrder(I->getOperand(i), Mask); in evaluateInDifferentElementOrder()
1872 for (int e = Mask.size(); Index != e; ++Index) { in evaluateInDifferentElementOrder()
1873 if (Mask[Index] == Element) { in evaluateInDifferentElementOrder()
1882 return evaluateInDifferentElementOrder(I->getOperand(0), Mask); in evaluateInDifferentElementOrder()
1884 Value *V = evaluateInDifferentElementOrder(I->getOperand(0), Mask); in evaluateInDifferentElementOrder()
1899 ArrayRef<int> Mask) { in isShuffleExtractingFromLHS() argument
1902 unsigned MaskElems = Mask.size(); in isShuffleExtractingFromLHS()
1903 unsigned BegIdx = Mask.front(); in isShuffleExtractingFromLHS()
1904 unsigned EndIdx = Mask.back(); in isShuffleExtractingFromLHS()
1908 if (static_cast<unsigned>(Mask[I]) != BegIdx + I) in isShuffleExtractingFromLHS()
1988 ArrayRef<int> Mask = Shuf.getShuffleMask(); in foldSelectShuffleWith1Binop() local
1989 Constant *NewC = Op0IsBinop ? ConstantExpr::getShuffleVector(C, IdC, Mask) : in foldSelectShuffleWith1Binop()
1990 ConstantExpr::getShuffleVector(IdC, C, Mask); in foldSelectShuffleWith1Binop()
1993 is_contained(Mask, UndefMaskElem) && in foldSelectShuffleWith1Binop()
2007 if (is_contained(Mask, UndefMaskElem) && !MightCreatePoisonOrUB) in foldSelectShuffleWith1Binop()
2019 ArrayRef<int> Mask = Shuf.getShuffleMask(); in canonicalizeInsertSplat() local
2026 !match(Op1, m_Undef()) || match(Mask, m_ZeroMask()) || IndexC == 0) in canonicalizeInsertSplat()
2042 if (Mask[i] == UndefMaskElem) in canonicalizeInsertSplat()
2043 NewMask[i] = Mask[i]; in canonicalizeInsertSplat()
2117 ArrayRef<int> Mask = Shuf.getShuffleMask(); in foldSelectShuffle() local
2118 Constant *NewC = ConstantExpr::getShuffleVector(C0, C1, Mask); in foldSelectShuffle()
2124 is_contained(Mask, UndefMaskElem) && in foldSelectShuffle()
2159 V = Builder.CreateShuffleVector(X, Y, Mask); in foldSelectShuffle()
2175 if (is_contained(Mask, UndefMaskElem) && !MightCreatePoisonOrUB) in foldSelectShuffle()
2209 ArrayRef<int> Mask = Shuf.getShuffleMask(); in foldTruncShuffle() local
2210 for (unsigned i = 0, e = Mask.size(); i != e; ++i) { in foldTruncShuffle()
2211 if (Mask[i] == UndefMaskElem) in foldTruncShuffle()
2215 if (Mask[i] != (int)LSBIndex) in foldTruncShuffle()
2355 ArrayRef<int> Mask; in foldIdentityExtractShuffle() local
2356 if (!match(Op0, m_Shuffle(m_Value(X), m_Value(Y), m_Mask(Mask)))) in foldIdentityExtractShuffle()
2377 assert(NumElts < Mask.size() && in foldIdentityExtractShuffle()
2382 int MaskElt = Mask[i]; in foldIdentityExtractShuffle()
2393 SmallVector<int, 16> Mask; in foldShuffleWithInsert() local
2394 Shuf.getShuffleMask(Mask); in foldShuffleWithInsert()
2396 int NumElts = Mask.size(); in foldShuffleWithInsert()
2408 if (!is_contained(Mask, (int)IdxC)) in foldShuffleWithInsert()
2416 if (!is_contained(Mask, (int)IdxC)) in foldShuffleWithInsert()
2437 if (Mask[i] == -1) in foldShuffleWithInsert()
2441 if (Mask[i] == NumElts + i) in foldShuffleWithInsert()
2445 if (NewInsIndex != -1 || Mask[i] != IndexC->getSExtValue()) in foldShuffleWithInsert()
2471 ShuffleVectorInst::commuteShuffleMask(Mask, NumElts); in foldShuffleWithInsert()
2514 ArrayRef<int> Mask = Shuf.getShuffleMask(); in foldIdentityPaddedShuffles() local
2515 SmallVector<int, 16> NewMask(Mask.size(), -1); in foldIdentityPaddedShuffles()
2516 for (int i = 0, e = Mask.size(); i != e; ++i) { in foldIdentityPaddedShuffles()
2517 if (Mask[i] == -1) in foldIdentityPaddedShuffles()
2522 if (Mask[i] < WideElts) { in foldIdentityPaddedShuffles()
2523 if (Shuffle0->getMaskValue(Mask[i]) == -1) in foldIdentityPaddedShuffles()
2526 if (Shuffle1->getMaskValue(Mask[i] - WideElts) == -1) in foldIdentityPaddedShuffles()
2533 if (Mask[i] < WideElts) { in foldIdentityPaddedShuffles()
2534 assert(Mask[i] < NarrowElts && "Unexpected shuffle mask"); in foldIdentityPaddedShuffles()
2535 NewMask[i] = Mask[i]; in foldIdentityPaddedShuffles()
2537 assert(Mask[i] < (WideElts + NarrowElts) && "Unexpected shuffle mask"); in foldIdentityPaddedShuffles()
2538 NewMask[i] = Mask[i] - (WideElts - NarrowElts); in foldIdentityPaddedShuffles()
2577 ArrayRef<int> Mask = SVI.getShuffleMask(); in visitShuffleVectorInst() local
2594 narrowShuffleMaskElts(XNumElts / VWidth, Mask, ScaledMask); in visitShuffleVectorInst()
2597 if (!widenShuffleMaskElts(VWidth / XNumElts, Mask, ScaledMask)) in visitShuffleVectorInst()
2613 return new ShuffleVectorInst(LHS, createUnaryMask(Mask, LHSWidth)); in visitShuffleVectorInst()
2658 if (match(RHS, m_Undef()) && canEvaluateShuffled(LHS, Mask)) { in visitShuffleVectorInst()
2659 Value *V = evaluateInDifferentElementOrder(LHS, Mask); in visitShuffleVectorInst()
2693 if (isShuffleExtractingFromLHS(SVI, Mask)) { in visitShuffleVectorInst()
2695 unsigned MaskElems = Mask.size(); in visitShuffleVectorInst()
2709 unsigned BegIdx = Mask.front(); in visitShuffleVectorInst()
2860 if (Mask[i] < 0) { in visitShuffleVectorInst()
2863 } else if (Mask[i] < (int)LHSWidth) { in visitShuffleVectorInst()
2869 eltMask = LHSMask[Mask[i]]; in visitShuffleVectorInst()
2875 eltMask = Mask[i]; in visitShuffleVectorInst()
2886 eltMask = RHSMask[Mask[i]-LHSWidth]; in visitShuffleVectorInst()
2895 eltMask = Mask[i]-LHSWidth; in visitShuffleVectorInst()
2919 if (isSplat || newMask == LHSMask || newMask == RHSMask || newMask == Mask) { in visitShuffleVectorInst()