Home | History | Annotate | Download | only in CodeGen

Lines Matching defs: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,
124 // Check all potential start indices from 0 to (Factor - 1).
125 for (Index = 0; Index < Factor; Index++) {
128 // Check that elements are in ascending order by Factor. Ignore undef
131 if (Mask[i] >= 0 && static_cast<unsigned>(Mask[i]) != Index + i * Factor)
143 /// E.g. DE-interleave masks (Factor = 2) could be:
146 static bool isDeInterleaveMask(ArrayRef<int> Mask, unsigned &Factor,
152 for (Factor = 2; Factor <= MaxFactor; Factor++)
153 if (isDeInterleaveMaskOfFactor(Mask, Factor, Index))
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) {
171 for (Factor = 2; Factor <= MaxFactor; Factor++) {
172 if (NumElts % Factor)
175 unsigned NumSubElts = NumElts / Factor;
185 (i % Factor) * NumSubElts + i / Factor)
188 // Find a RE-interleaved mask of current factor.
224 unsigned Factor, Index;
227 if (!isDeInterleaveMask(Shuffles[0]->getShuffleMask(), Factor, Index))
237 // and factor as the first shufflevector.
242 if (!isDeInterleaveMaskOfFactor(Shuffles[i]->getShuffleMask(), Factor,
257 if (!TLI->lowerInterleavedLoad(LI, Shuffles, Indices, Factor))
344 unsigned Factor;
345 if (!isReInterleaveMask(SVI->getShuffleMask(), Factor))
351 if (!TLI->lowerInterleavedStore(SI, SVI, Factor))