Lines Matching full:factor
15 // DE-interleaving the data on a factor. An interleaved store writes several
16 // vectors to memory with RE-interleaving the data on a factor.
24 // E.g. An interleaved load (Factor = 2):
32 // E.g. An interleaved store (Factor = 3):
60 static unsigned MaxFactor; // The maximum supported interleave factor.
119 /// \brief Check if the mask is a DE-interleave mask of the given factor
120 /// \p Factor like:
121 /// <Index, Index+Factor, ..., Index+(NumElts-1)*Factor>
122 static bool isDeInterleaveMaskOfFactor(ArrayRef<int> Mask, unsigned Factor, in isDeInterleaveMaskOfFactor() argument
124 // Check all potential start indices from 0 to (Factor - 1). in isDeInterleaveMaskOfFactor()
125 for (Index = 0; Index < Factor; Index++) { in isDeInterleaveMaskOfFactor()
128 // Check that elements are in ascending order by Factor. Ignore undef in isDeInterleaveMaskOfFactor()
131 if (Mask[i] >= 0 && static_cast<unsigned>(Mask[i]) != Index + i * Factor) in isDeInterleaveMaskOfFactor()
143 /// E.g. DE-interleave masks (Factor = 2) could be:
146 static bool isDeInterleaveMask(ArrayRef<int> Mask, unsigned &Factor, in isDeInterleaveMask() argument
152 for (Factor = 2; Factor <= MaxFactor; Factor++) in isDeInterleaveMask()
153 if (isDeInterleaveMaskOfFactor(Mask, Factor, Index)) in isDeInterleaveMask()
161 /// I.e. <0, NumSubElts, ... , NumSubElts*(Factor - 1), 1, NumSubElts + 1, ...>
163 /// E.g. The RE-interleave mask (Factor = 2) could be:
165 static bool isReInterleaveMask(ArrayRef<int> Mask, unsigned &Factor) { in isReInterleaveMask() argument
171 for (Factor = 2; Factor <= MaxFactor; Factor++) { in isReInterleaveMask()
172 if (NumElts % Factor) in isReInterleaveMask()
175 unsigned NumSubElts = NumElts / Factor; in isReInterleaveMask()
185 (i % Factor) * NumSubElts + i / Factor) in isReInterleaveMask()
188 // Find a RE-interleaved mask of current factor. in isReInterleaveMask()
224 unsigned Factor, Index; in lowerInterleavedLoad() local
227 if (!isDeInterleaveMask(Shuffles[0]->getShuffleMask(), Factor, Index)) in lowerInterleavedLoad()
237 // and factor as the first shufflevector. in lowerInterleavedLoad()
242 if (!isDeInterleaveMaskOfFactor(Shuffles[i]->getShuffleMask(), Factor, in lowerInterleavedLoad()
257 if (!TLI->lowerInterleavedLoad(LI, Shuffles, Indices, Factor)) in lowerInterleavedLoad()
344 unsigned Factor; in lowerInterleavedStore() local
345 if (!isReInterleaveMask(SVI->getShuffleMask(), Factor)) in lowerInterleavedStore()
351 if (!TLI->lowerInterleavedStore(SI, SVI, Factor)) in lowerInterleavedStore()