Lines Matching defs:Scale
349 void llvm::narrowShuffleMaskElts(int Scale, ArrayRef<int> Mask,
351 assert(Scale > 0 && "Unexpected scaling factor");
354 if (Scale == 1) {
362 assert(((uint64_t)Scale * MaskElt + (Scale - 1)) <= INT32_MAX &&
365 for (int SliceElt = 0; SliceElt != Scale; ++SliceElt)
366 ScaledMask.push_back(MaskElt < 0 ? MaskElt : Scale * MaskElt + SliceElt);
370 bool llvm::widenShuffleMaskElts(int Scale, ArrayRef<int> Mask,
372 assert(Scale > 0 && "Unexpected scaling factor");
375 if (Scale == 1) {
382 if (NumElts % Scale != 0)
386 ScaledMask.reserve(NumElts / Scale);
388 // Step through the input mask by splitting into Scale-sized slices.
390 ArrayRef<int> MaskSlice = Mask.take_front(Scale);
391 assert((int)MaskSlice.size() == Scale && "Expected Scale-sized slice.");
403 if (SliceFront % Scale != 0)
406 for (int i = 1; i < Scale; ++i)
409 ScaledMask.push_back(SliceFront / Scale);
411 Mask = Mask.drop_front(Scale);
414 assert((int)ScaledMask.size() * Scale == NumElts && "Unexpected scaled mask");
437 int Scale = NumSrcElts / NumDstElts;
438 return widenShuffleMaskElts(Scale, Mask, ScaledMask);
441 int Scale = NumDstElts / NumSrcElts;
442 narrowShuffleMaskElts(Scale, Mask, ScaledMask);
451 for (unsigned Scale = 2; Scale <= InputMask.size(); ++Scale) {
452 while (widenShuffleMaskElts(Scale, InputMask, *Output)) {