Lines Matching refs:Mask

368                                          SmallVectorImpl<Constant*> &Mask) {  in collectSingleShuffleElements()  argument
374 Mask.assign(NumElts, UndefValue::get(Type::getInt32Ty(V->getContext()))); in collectSingleShuffleElements()
380 Mask.push_back(ConstantInt::get(Type::getInt32Ty(V->getContext()), i)); in collectSingleShuffleElements()
386 Mask.push_back(ConstantInt::get(Type::getInt32Ty(V->getContext()), in collectSingleShuffleElements()
404 if (collectSingleShuffleElements(VecOp, LHS, RHS, Mask)) { in collectSingleShuffleElements()
406 Mask[InsertedIdx] = UndefValue::get(Type::getInt32Ty(V->getContext())); in collectSingleShuffleElements()
419 if (collectSingleShuffleElements(VecOp, LHS, RHS, Mask)) { in collectSingleShuffleElements()
422 Mask[InsertedIdx % NumElts] = in collectSingleShuffleElements()
427 Mask[InsertedIdx % NumElts] = in collectSingleShuffleElements()
529 SmallVectorImpl<Constant *> &Mask, in collectShuffleElements() argument
536 Mask.assign(NumElts, UndefValue::get(Type::getInt32Ty(V->getContext()))); in collectShuffleElements()
542 Mask.assign(NumElts, ConstantInt::get(Type::getInt32Ty(V->getContext()),0)); in collectShuffleElements()
562 ShuffleOps LR = collectShuffleElements(VecOp, Mask, RHS, IC); in collectShuffleElements()
573 Mask[i] = ConstantInt::get(Type::getInt32Ty(V->getContext()), i); in collectShuffleElements()
578 Mask[InsertedIdx % NumElts] = in collectShuffleElements()
590 Mask.push_back(ConstantInt::get( in collectShuffleElements()
600 Mask)) in collectShuffleElements()
608 Mask.push_back(ConstantInt::get(Type::getInt32Ty(V->getContext()), i)); in collectShuffleElements()
793 Constant *Mask = Shuf->getMask(); in foldConstantInsEltIntoShuffle() local
794 unsigned NumElts = Mask->getType()->getVectorNumElements(); in foldConstantInsEltIntoShuffle()
805 NewMaskElts[I] = Mask->getAggregateElement(I); in foldConstantInsEltIntoShuffle()
827 SmallVector<Constant *, 16> Mask(NumElts); in foldConstantInsEltIntoShuffle() local
834 assert(!Mask[I]); in foldConstantInsEltIntoShuffle()
836 Mask[I] = ConstantInt::get(Type::getInt32Ty(InsElt.getContext()), in foldConstantInsEltIntoShuffle()
844 assert(!Mask[I]); in foldConstantInsEltIntoShuffle()
846 Mask[I] = ConstantInt::get(Type::getInt32Ty(InsElt.getContext()), I); in foldConstantInsEltIntoShuffle()
853 ConstantVector::get(Mask)); in foldConstantInsEltIntoShuffle()
916 SmallVector<Constant*, 16> Mask; in visitInsertElementInst() local
917 ShuffleOps LR = collectShuffleElements(&IE, Mask, nullptr, *this); in visitInsertElementInst()
926 ConstantVector::get(Mask)); in visitInsertElementInst()
956 static bool canEvaluateShuffled(Value *V, ArrayRef<int> Mask, in canEvaluateShuffled() argument
1008 if (ITy->isVectorTy() && Mask.size() > ITy->getVectorNumElements()) in canEvaluateShuffled()
1011 if (!canEvaluateShuffled(Operand, Mask, Depth - 1)) in canEvaluateShuffled()
1024 for (int i = 0, e = Mask.size(); i != e; ++i) { in canEvaluateShuffled()
1025 if (Mask[i] == ElementNumber) { in canEvaluateShuffled()
1031 return canEvaluateShuffled(I->getOperand(0), Mask, Depth - 1); in canEvaluateShuffled()
1115 static Value *evaluateInDifferentElementOrder(Value *V, ArrayRef<int> Mask) { in evaluateInDifferentElementOrder() argument
1122 return UndefValue::get(VectorType::get(EltTy, Mask.size())); in evaluateInDifferentElementOrder()
1125 return ConstantAggregateZero::get(VectorType::get(EltTy, Mask.size())); in evaluateInDifferentElementOrder()
1129 for (int i = 0, e = Mask.size(); i != e; ++i) { in evaluateInDifferentElementOrder()
1130 if (Mask[i] == -1) in evaluateInDifferentElementOrder()
1133 MaskValues.push_back(ConstantInt::get(I32Ty, Mask[i])); in evaluateInDifferentElementOrder()
1173 bool NeedsRebuild = (Mask.size() != I->getType()->getVectorNumElements()); in evaluateInDifferentElementOrder()
1175 Value *V = evaluateInDifferentElementOrder(I->getOperand(i), Mask); in evaluateInDifferentElementOrder()
1192 for (int e = Mask.size(); Index != e; ++Index) { in evaluateInDifferentElementOrder()
1193 if (Mask[Index] == Element) { in evaluateInDifferentElementOrder()
1202 return evaluateInDifferentElementOrder(I->getOperand(0), Mask); in evaluateInDifferentElementOrder()
1204 Value *V = evaluateInDifferentElementOrder(I->getOperand(0), Mask); in evaluateInDifferentElementOrder()
1212 static void recognizeIdentityMask(const SmallVectorImpl<int> &Mask, in recognizeIdentityMask() argument
1216 for (unsigned i = 0, e = Mask.size(); i != e; ++i) { in recognizeIdentityMask()
1217 if (Mask[i] < 0) continue; // Ignore undef values. in recognizeIdentityMask()
1219 isLHSID &= (Mask[i] == (int)i); in recognizeIdentityMask()
1222 isRHSID &= (Mask[i]-e == i); in recognizeIdentityMask()
1233 SmallVector<int, 16> &Mask) { in isShuffleExtractingFromLHS() argument
1235 unsigned MaskElems = Mask.size(); in isShuffleExtractingFromLHS()
1236 unsigned BegIdx = Mask.front(); in isShuffleExtractingFromLHS()
1237 unsigned EndIdx = Mask.back(); in isShuffleExtractingFromLHS()
1241 if (static_cast<unsigned>(Mask[I]) != BegIdx + I) in isShuffleExtractingFromLHS()
1316 Constant *Mask = Shuf.getMask(); in foldSelectShuffleWith1Binop() local
1317 Constant *NewC = Op0IsBinop ? ConstantExpr::getShuffleVector(C, IdC, Mask) : in foldSelectShuffleWith1Binop()
1318 ConstantExpr::getShuffleVector(IdC, C, Mask); in foldSelectShuffleWith1Binop()
1321 Mask->containsUndefElement() && in foldSelectShuffleWith1Binop()
1335 if (Mask->containsUndefElement() && !MightCreatePoisonOrUB) in foldSelectShuffleWith1Binop()
1395 Constant *Mask = Shuf.getMask(); in foldSelectShuffle() local
1396 Constant *NewC = ConstantExpr::getShuffleVector(C0, C1, Mask); in foldSelectShuffle()
1402 Mask->containsUndefElement() && in foldSelectShuffle()
1436 V = Builder.CreateShuffleVector(X, Y, Mask); in foldSelectShuffle()
1451 if (Mask->containsUndefElement() && !MightCreatePoisonOrUB) in foldSelectShuffle()
1498 Constant *Mask; in foldIdentityExtractShuffle() local
1499 if (!match(Op0, m_ShuffleVector(m_Value(X), m_Value(Y), m_Constant(Mask)))) in foldIdentityExtractShuffle()
1515 assert(NumElts < Mask->getType()->getVectorNumElements() && in foldIdentityExtractShuffle()
1520 Constant *MaskElt = Mask->getAggregateElement(i); in foldIdentityExtractShuffle()
1529 SmallVector<int, 16> Mask = Shuf.getShuffleMask(); in foldShuffleWithInsert() local
1534 int NumElts = Mask.size(); in foldShuffleWithInsert()
1550 if (Mask[i] == -1) in foldShuffleWithInsert()
1554 if (Mask[i] == NumElts + i) in foldShuffleWithInsert()
1558 if (NewInsIndex != -1 || Mask[i] != IndexC->getSExtValue()) in foldShuffleWithInsert()
1584 ShuffleVectorInst::commuteShuffleMask(Mask, NumElts); in foldShuffleWithInsert()
1621 SmallVector<int, 16> Mask = SVI.getShuffleMask(); in visitShuffleVectorInst() local
1632 if (Mask[i] < 0) { in visitShuffleVectorInst()
1637 if ((Mask[i] >= (int)e && isa<UndefValue>(RHS)) || in visitShuffleVectorInst()
1638 (Mask[i] < (int)e && isa<UndefValue>(LHS))) { in visitShuffleVectorInst()
1639 Mask[i] = -1; // Turn into undef. in visitShuffleVectorInst()
1642 Mask[i] = Mask[i] % e; // Force to LHS. in visitShuffleVectorInst()
1643 Elts.push_back(ConstantInt::get(Int32Ty, Mask[i])); in visitShuffleVectorInst()
1657 recognizeIdentityMask(Mask, isLHSID, isRHSID); in visitShuffleVectorInst()
1664 if (isa<UndefValue>(RHS) && canEvaluateShuffled(LHS, Mask)) { in visitShuffleVectorInst()
1665 Value *V = evaluateInDifferentElementOrder(LHS, Mask); in visitShuffleVectorInst()
1698 if (isShuffleExtractingFromLHS(SVI, Mask)) { in visitShuffleVectorInst()
1700 unsigned MaskElems = Mask.size(); in visitShuffleVectorInst()
1714 unsigned BegIdx = Mask.front(); in visitShuffleVectorInst()
1867 if (Mask[i] < 0) { in visitShuffleVectorInst()
1870 } else if (Mask[i] < (int)LHSWidth) { in visitShuffleVectorInst()
1876 eltMask = LHSMask[Mask[i]]; in visitShuffleVectorInst()
1882 eltMask = Mask[i]; in visitShuffleVectorInst()
1893 eltMask = RHSMask[Mask[i]-LHSWidth]; in visitShuffleVectorInst()
1902 eltMask = Mask[i]-LHSWidth; in visitShuffleVectorInst()
1926 if (isSplat || newMask == LHSMask || newMask == RHSMask || newMask == Mask) { in visitShuffleVectorInst()