Lines Matching defs:SubMask
666 SmallBitVector SubMask(UseMask.size(), false);
667 Res &= isUndefVector<IsPoisonOnly>(Base, SubMask);
1148 /// Shuffles \p Mask in accordance with the given \p SubMask.
1151 static void addMask(SmallVectorImpl<int> &Mask, ArrayRef<int> SubMask,
1153 if (SubMask.empty())
1156 (!ExtendingManyInputs || SubMask.size() > Mask.size() ||
1158 (SubMask.size() == Mask.size() && Mask.back() == PoisonMaskElem)) &&
1159 "SubMask with many inputs support must be larger than the mask.");
1161 Mask.append(SubMask.begin(), SubMask.end());
1164 SmallVector<int> NewMask(SubMask.size(), PoisonMaskElem);
1165 int TermValue = std::min(Mask.size(), SubMask.size());
1166 for (int I = 0, E = SubMask.size(); I < E; ++I) {
1167 if (SubMask[I] == PoisonMaskElem ||
1169 (SubMask[I] >= TermValue || Mask[SubMask[I]] >= TermValue)))
1171 NewMask[I] = Mask[SubMask[I]];
5669 SmallVector<int> SubMask{ArrayRef(ReusedMask).slice(K, Sz)};
5670 if (SubMask.front() == PoisonMaskElem)
5671 std::iota(SubMask.begin(), SubMask.end(), 0);
5672 reorderOrder(CurrentOrder, SubMask);
10280 SmallVector<int> SubMask(EltsPerVector, PoisonMaskElem);
10281 copy(MaskSlice, SubMask.begin());
10284 CheckPerRegistersShuffle(SubMask, Indices);
10295 !ShuffleVectorInst::isIdentityMask(SubMask, EltsPerVector)) {
10298 getWidenedType(ScalarTy, EltsPerVector), SubMask);
10311 SubMask.assign(NumElts, PoisonMaskElem);
10312 copy(MaskSlice, SubMask.begin());
10314 TTI, *ShuffleKinds[Part], getWidenedType(ScalarTy, NumElts), SubMask);
10340 ArrayRef<int> SubMask = ArrayRef(Mask).slice(Part * SliceSize, Limit);
10341 copy(SubMask, std::next(CommonMask.begin(), SliceSize * Part));
10685 ArrayRef<int> SubMask = Mask.slice(Part * SliceSize, Limit);
10690 (!SubMask.empty() && SubMask[I] == PoisonMaskElem))
13058 SmallVector<int> SubMask;
13060 tryToGatherSingleRegisterExtractElements(SubVL, SubMask);
13062 copy(SubMask, std::next(Mask.begin(), Part * SliceSize));
13444 SmallVector<int> SubMask(std::next(Mask.begin(), Part * VL.size()),
13446 int MinElement = SubMask.front(), MaxElement = SubMask.front();
13447 for (int Idx : SubMask) {
13463 for_each(SubMask, [&](int &Idx) {
13475 auto *MaskVecTy = getWidenedType(VL.front()->getType(), SubMask.size());
13489 InstructionCost ShuffleCost = GetShuffleCost(SubMask, Entries, VecTy);
13491 SmallVector<int> FirstMask(SubMask.begin(), SubMask.end());
13496 APInt DemandedElts = APInt::getAllOnes(SubMask.size());
13514 SmallVector<int> SecondMask(SubMask.begin(), SubMask.end());
13519 APInt DemandedElts = APInt::getAllOnes(SubMask.size());
13538 APInt DemandedElts = APInt::getAllOnes(SubMask.size());
13539 for (auto [I, Idx] : enumerate(SubMask))
14271 MutableArrayRef<int> SubMask = Mask.slice(Part * SliceSize, Limit);
14274 auto VLMask = zip(SubVL, SubMask);
14303 SubVec = createShuffle(Bases.front(), Bases.back(), SubMask);
14304 TransformToIdentity(SubMask);
14312 ArrayRef<int> SubMask =
14316 return all_of(SubMask, [](int Idx) {
14321 copy(SubMask, std::next(VecMask.begin(), Part * SliceSize));
14330 // Adjust SubMask.
14331 for (int &Idx : SubMask)
14334 copy(SubMask, std::next(VecMask.begin(), Part * SliceSize));
15104 auto SubMask = ArrayRef(Mask).slice(I * SliceSize, Limit);
15106 copy(SubMask, std::next(VecMask.begin(), I * SliceSize));