Lines Matching refs:Mask

229 int llvm::getSplatIndex(ArrayRef<int> Mask) {
231 for (int M : Mask) {
312 bool llvm::getShuffleDemandedElts(int SrcWidth, ArrayRef<int> Mask,
322 if (all_of(Mask, [](int Elt) { return Elt == 0; })) {
327 for (unsigned I = 0, E = Mask.size(); I != E; ++I) {
328 int M = Mask[I];
349 void llvm::narrowShuffleMaskElts(int Scale, ArrayRef<int> Mask,
355 ScaledMask.assign(Mask.begin(), Mask.end());
360 for (int MaskElt : Mask) {
370 bool llvm::widenShuffleMaskElts(int Scale, ArrayRef<int> Mask,
376 ScaledMask.assign(Mask.begin(), Mask.end());
381 int NumElts = Mask.size();
390 ArrayRef<int> MaskSlice = Mask.take_front(Scale);
411 Mask = Mask.drop_front(Scale);
412 } while (!Mask.empty());
421 bool llvm::scaleShuffleMaskElts(unsigned NumDstElts, ArrayRef<int> Mask,
423 unsigned NumSrcElts = Mask.size();
428 ScaledMask.assign(Mask.begin(), Mask.end());
438 return widenShuffleMaskElts(Scale, Mask, ScaledMask);
442 narrowShuffleMaskElts(Scale, Mask, ScaledMask);
446 void llvm::getShuffleMaskWithWidestElts(ArrayRef<int> Mask,
450 ArrayRef<int> InputMask = Mask;
461 ArrayRef<int> Mask, unsigned NumOfSrcRegs, unsigned NumOfDestRegs,
470 int Sz = Mask.size();
482 if (Mask[Idx] >= Sz || Mask[Idx] == PoisonMaskElem)
484 int SrcRegIdx = Mask[Idx] / SzSrc;
489 RegMasks[SrcRegIdx][K] = Mask[Idx] % SzSrc;
496 count_if(Dest, [](ArrayRef<int> Mask) { return !Mask.empty(); });
505 find_if(Dest, [](ArrayRef<int> Mask) { return !Mask.empty(); });
527 auto &&NormalizeMask = [](MutableArrayRef<int> Mask) {
528 for (int Idx = 0, VF = Mask.size(); Idx < VF; ++Idx) {
529 if (Mask[Idx] != PoisonMaskElem)
530 Mask[Idx] = Idx;
900 SmallVector<Constant *, 16> Mask;
904 Mask.push_back(Builder.getInt1(HasMember));
907 return ConstantVector::get(Mask);
922 SmallVector<int, 16> Mask;
925 Mask.push_back(j * VF + i);
927 return Mask;
932 SmallVector<int, 16> Mask;
934 Mask.push_back(Start + i * Stride);
936 return Mask;
942 SmallVector<int, 16> Mask;
944 Mask.push_back(Start + i);
947 Mask.push_back(-1);
949 return Mask;
952 llvm::SmallVector<int, 16> llvm::createUnaryMask(ArrayRef<int> Mask,
961 for (int MaskElt : Mask) {
1022 bool llvm::maskIsAllZeroOrUndef(Value *Mask) {
1023 assert(isa<VectorType>(Mask->getType()) &&
1024 isa<IntegerType>(Mask->getType()->getScalarType()) &&
1025 cast<IntegerType>(Mask->getType()->getScalarType())->getBitWidth() ==
1027 "Mask must be a vector of i1");
1029 auto *ConstMask = dyn_cast<Constant>(Mask);
1048 bool llvm::maskIsAllOneOrUndef(Value *Mask) {
1049 assert(isa<VectorType>(Mask->getType()) &&
1050 isa<IntegerType>(Mask->getType()->getScalarType()) &&
1051 cast<IntegerType>(Mask->getType()->getScalarType())->getBitWidth() ==
1053 "Mask must be a vector of i1");
1055 auto *ConstMask = dyn_cast<Constant>(Mask);
1074 bool llvm::maskContainsAllOneOrUndef(Value *Mask) {
1075 assert(isa<VectorType>(Mask->getType()) &&
1076 isa<IntegerType>(Mask->getType()->getScalarType()) &&
1077 cast<IntegerType>(Mask->getType()->getScalarType())->getBitWidth() ==
1079 "Mask must be a vector of i1");
1081 auto *ConstMask = dyn_cast<Constant>(Mask);
1101 APInt llvm::possiblyDemandedEltsInMask(Value *Mask) {
1102 assert(isa<FixedVectorType>(Mask->getType()) &&
1103 isa<IntegerType>(Mask->getType()->getScalarType()) &&
1104 cast<IntegerType>(Mask->getType()->getScalarType())->getBitWidth() ==
1106 "Mask must be a fixed width vector of i1");
1109 cast<FixedVectorType>(Mask->getType())->getNumElements();
1111 if (auto *CV = dyn_cast<ConstantVector>(Mask))