Lines Matching defs:Mask

290 int llvm::getSplatIndex(ArrayRef<int> Mask) {
292 for (int M : Mask) {
373 bool llvm::getShuffleDemandedElts(int SrcWidth, ArrayRef<int> Mask,
383 if (all_of(Mask, [](int Elt) { return Elt == 0; })) {
388 for (unsigned I = 0, E = Mask.size(); I != E; ++I) {
389 int M = Mask[I];
410 void llvm::narrowShuffleMaskElts(int Scale, ArrayRef<int> Mask,
416 ScaledMask.assign(Mask.begin(), Mask.end());
421 for (int MaskElt : Mask) {
431 bool llvm::widenShuffleMaskElts(int Scale, ArrayRef<int> Mask,
437 ScaledMask.assign(Mask.begin(), Mask.end());
442 int NumElts = Mask.size();
451 ArrayRef<int> MaskSlice = Mask.take_front(Scale);
472 Mask = Mask.drop_front(Scale);
473 } while (!Mask.empty());
517 bool llvm::scaleShuffleMaskElts(unsigned NumDstElts, ArrayRef<int> Mask,
519 unsigned NumSrcElts = Mask.size();
524 ScaledMask.assign(Mask.begin(), Mask.end());
534 return widenShuffleMaskElts(Scale, Mask, ScaledMask);
538 narrowShuffleMaskElts(Scale, Mask, ScaledMask);
542 void llvm::getShuffleMaskWithWidestElts(ArrayRef<int> Mask,
546 ArrayRef<int> InputMask = Mask;
557 ArrayRef<int> Mask, unsigned NumOfSrcRegs, unsigned NumOfDestRegs,
567 int Sz = Mask.size();
579 if (Mask[Idx] >= 2 * Sz || Mask[Idx] == PoisonMaskElem)
581 int MaskIdx = Mask[Idx] % Sz;
582 int SrcRegIdx = MaskIdx / SzSrc + (Mask[Idx] >= Sz ? NumOfSrcRegs : 0);
594 count_if(Dest, [](ArrayRef<int> Mask) { return !Mask.empty(); });
603 find_if(Dest, [](ArrayRef<int> Mask) { return !Mask.empty(); });
625 auto &&NormalizeMask = [](MutableArrayRef<int> Mask) {
626 for (int Idx = 0, VF = Mask.size(); Idx < VF; ++Idx) {
627 if (Mask[Idx] != PoisonMaskElem)
628 Mask[Idx] = Idx;
1001 SmallVector<Constant *, 16> Mask;
1005 Mask.push_back(Builder.getInt1(HasMember));
1008 return ConstantVector::get(Mask);
1023 SmallVector<int, 16> Mask;
1026 Mask.push_back(j * VF + i);
1028 return Mask;
1033 SmallVector<int, 16> Mask;
1035 Mask.push_back(Start + i * Stride);
1037 return Mask;
1043 SmallVector<int, 16> Mask;
1045 Mask.push_back(Start + i);
1048 Mask.push_back(-1);
1050 return Mask;
1053 llvm::SmallVector<int, 16> llvm::createUnaryMask(ArrayRef<int> Mask,
1062 for (int MaskElt : Mask) {
1123 bool llvm::maskIsAllZeroOrUndef(Value *Mask) {
1124 assert(isa<VectorType>(Mask->getType()) &&
1125 isa<IntegerType>(Mask->getType()->getScalarType()) &&
1126 cast<IntegerType>(Mask->getType()->getScalarType())->getBitWidth() ==
1128 "Mask must be a vector of i1");
1130 auto *ConstMask = dyn_cast<Constant>(Mask);
1149 bool llvm::maskIsAllOneOrUndef(Value *Mask) {
1150 assert(isa<VectorType>(Mask->getType()) &&
1151 isa<IntegerType>(Mask->getType()->getScalarType()) &&
1152 cast<IntegerType>(Mask->getType()->getScalarType())->getBitWidth() ==
1154 "Mask must be a vector of i1");
1156 auto *ConstMask = dyn_cast<Constant>(Mask);
1175 bool llvm::maskContainsAllOneOrUndef(Value *Mask) {
1176 assert(isa<VectorType>(Mask->getType()) &&
1177 isa<IntegerType>(Mask->getType()->getScalarType()) &&
1178 cast<IntegerType>(Mask->getType()->getScalarType())->getBitWidth() ==
1180 "Mask must be a vector of i1");
1182 auto *ConstMask = dyn_cast<Constant>(Mask);
1202 APInt llvm::possiblyDemandedEltsInMask(Value *Mask) {
1203 assert(isa<FixedVectorType>(Mask->getType()) &&
1204 isa<IntegerType>(Mask->getType()->getScalarType()) &&
1205 cast<IntegerType>(Mask->getType()->getScalarType())->getBitWidth() ==
1207 "Mask must be a fixed width vector of i1");
1210 cast<FixedVectorType>(Mask->getType())->getNumElements();
1212 if (auto *CV = dyn_cast<ConstantVector>(Mask))