Lines Matching defs:Scale
410 void llvm::narrowShuffleMaskElts(int Scale, ArrayRef<int> Mask,
412 assert(Scale > 0 && "Unexpected scaling factor");
415 if (Scale == 1) {
423 assert(((uint64_t)Scale * MaskElt + (Scale - 1)) <= INT32_MAX &&
426 for (int SliceElt = 0; SliceElt != Scale; ++SliceElt)
427 ScaledMask.push_back(MaskElt < 0 ? MaskElt : Scale * MaskElt + SliceElt);
431 bool llvm::widenShuffleMaskElts(int Scale, ArrayRef<int> Mask,
433 assert(Scale > 0 && "Unexpected scaling factor");
436 if (Scale == 1) {
443 if (NumElts % Scale != 0)
447 ScaledMask.reserve(NumElts / Scale);
449 // Step through the input mask by splitting into Scale-sized slices.
451 ArrayRef<int> MaskSlice = Mask.take_front(Scale);
452 assert((int)MaskSlice.size() == Scale && "Expected Scale-sized slice.");
464 if (SliceFront % Scale != 0)
467 for (int i = 1; i < Scale; ++i)
470 ScaledMask.push_back(SliceFront / Scale);
472 Mask = Mask.drop_front(Scale);
475 assert((int)ScaledMask.size() * Scale == NumElts && "Unexpected scaled mask");
533 int Scale = NumSrcElts / NumDstElts;
534 return widenShuffleMaskElts(Scale, Mask, ScaledMask);
537 int Scale = NumDstElts / NumSrcElts;
538 narrowShuffleMaskElts(Scale, Mask, ScaledMask);
547 for (unsigned Scale = 2; Scale <= InputMask.size(); ++Scale) {
548 while (widenShuffleMaskElts(Scale, InputMask, *Output)) {