Lines Matching defs:Indices
73 /// A vector used to hold the indices of a single GEP instruction
248 /// Checks if Indices, or a prefix of Indices, is in Set.
249 static bool PrefixIn(const ArgPromotion::IndicesVector &Indices,
252 Low = Set.upper_bound(Indices);
255 // Low is now the last element smaller than or equal to Indices. This means
256 // it points to a prefix of Indices (possibly Indices itself), if such
260 return Low != Set.end() && IsPrefix(*Low, Indices);
263 /// Mark the given indices (ToMark) as safe in the given set of indices
265 /// is already a prefix of Indices in Safe, Indices are implicitely marked safe
266 /// already. Furthermore, any indices that Indices is itself a prefix of, are
267 /// removed from Safe (since they are implicitely safe because of Indices now).
275 // Low is now the last element smaller than or equal to Indices. This
276 // means it points to a prefix of Indices (possibly Indices itself), if
280 // If there is already a prefix of these indices (or exactly these
281 // indices) marked a safe, don't bother adding these indices
312 // instructions (with constant indices) that are subsequently loaded.
324 // This set will contain all sets of indices that are loaded in the entry
328 // This set contains all the sets of indices that we are planning to promote.
340 IndicesVector Indices;
348 // This load actually loads (part of) Arg? Check the indices then.
349 Indices.reserve(GEP->getNumIndices());
353 Indices.push_back(CI->getSExtValue());
359 // Indices checked out, mark them as safe
360 MarkIndicesSafe(Indices, SafeToUnconditionallyLoad);
361 Indices.clear();
395 // Ensure that all of the indices are constants.
423 // See if we are already promoting a load with these indices. If not, check
547 // In this table, we will track which indices are loaded from the argument
548 // (where direct loads are tracked as no indices).
554 IndicesVector Indices;
555 Indices.reserve(User->getNumOperands() - 1);
557 // non-index operand, this will record direct loads without any indices,
558 // and gep+loads with the GEP indices.
561 Indices.push_back(cast<ConstantInt>(*II)->getSExtValue());
563 if (Indices.size() == 1 && Indices.front() == 0)
564 Indices.clear();
565 ArgIndices.insert(Indices);
572 OriginalLoads[Indices] = OrigLoad;
673 // Store the Value* version of the indices in here, but declare it now
694 // And create a GEP to extract those indices.