Home | History | Annotate | Download | only in Scalar

Lines Matching refs:Index

83 // multiple indices to either multiple GEPs with a single index or arithmetic
100 // We can not do CSE for to the common part related to index "i64 %i". Lowering
126 // with multiple indices into multiple GEPs with a single index:
150 // indices if one of the index is variant. If we lower such GEP into invariant
198 /// \brief A helper class for separating a constant offset from a GEP index.
200 /// In real programs, a GEP index may be more complicated than a simple addition
203 /// constant offset, so that we can separate the index to (a << 3) + b and 5.
206 /// index, and tries to find a constant integer that can be hoisted to the
213 /// Extracts a constant offset from the given GEP index. It returns the
214 /// new index representing the remainder (equal to the original index minus
216 /// \p Idx The given GEP index
222 /// Looks for a constant offset from the given GEP index without extracting
239 /// GEP index
241 /// GEP index
243 /// an index of an inbounds GEP is guaranteed to be
250 /// After finding the constant offset C from the GEP index I, we build a new
251 /// index I' s.t. I' + C = I. This function builds and returns the new
252 /// index I' according to UserChain produced by function "find".
266 /// After the first step of rebuilding the GEP index without the constant
278 /// \p ChainIndex The index to UserChain. ChainIndex is initially
282 /// Reassociates the GEP index to the form I' + C and returns I'.
295 /// array index.
299 /// The path from the constant offset to the old GEP index. e.g., if the GEP
300 /// index is "a * b + (c + 5)". After running function find, UserChain[0] will
304 /// This path helps to rebuild the new GEP index.
345 /// Lower a GEP with multiple indices into multiple GEPs with a single index.
348 /// variadic part into a set of GEPs with a single index and applies
363 /// Finds the constant offset within each index and accumulates them. If
404 // Swap the index operand of two GEP.
418 /// multiple GEPs with a single index.
482 // index if the constant offset is non-negative.
671 // However, reusing the "or" in the new index would give us
702 // Separates the constant offset from the GEP index.
710 // If Idx is an index of an inbound GEP, Idx is guaranteed to be non-negative.
743 // Tries to extract a constant offset from this GEP index.
787 // Create an ugly GEP for each sequential index. We don't create GEPs for
788 // structure indices, as they are accumulated in the constant offset index.
799 // Scale the index by element size.
808 // Create an ugly GEP with a single index for each index.
816 // Create a GEP with the constant offset index.
824 // If we created a GEP with constant index, and the base is loop invariant,
849 // in the constant offset index.
860 // Scale the index by element size.
869 // Create an ADD for each index.
874 // Create an ADD for the constant offset index.
922 // Remove the constant offset in each sequential index. The resultant GEP
925 // disabled, a structure index is not accumulated and we still use the old
926 // one. If LowerGEP is enabled, a structure index is accumulated in the
928 // handle the constant offset and won't need a new structure index.
932 // Splits this GEP index into a variadic part and a constant offset, and
933 // uses the variadic part as the new index.
939 // Switches to the index with the constant offset removed.
941 // After switching to the new index, we can garbage-collect UserChain
942 // and the old index if they are not used.
949 // Clear the inbounds attribute because the new index may be off-bound.
960 // If a is -4, although the old index b is in bounds, the new index a is
971 // Lowers a GEP to either GEPs with a single index or arithmetic operations.
1026 int64_t Index = AccumulativeByteOffset / ElementTypeSizeOfGEP;
1028 ConstantInt::get(IntPtrTy, Index, true),
1197 // Give up if the index of the first GEP is loop invariant.