Lines Matching refs:Alignment
14 // complex alignment assumptions that apply to vector loads and stores that
19 #define AA_NAME "alignment-from-assumptions"
41 "Number of loads changed by alignment assumptions");
43 "Number of stores changed by alignment assumptions");
45 "Number of memory intrinsics changed by alignment assumptions");
74 static const char aip_name[] = "Alignment from assumptions";
87 // Given an expression for the (constant) alignment, AlignSCEV, and an
89 // DiffSCEV, compute the alignment of the displaced pointer if it can be reduced
90 // to a constant. Using SCEV to compute alignment handles the case where
96 // DiffUnits = Diff % int64_t(Alignment)
108 // If the displacement is an exact multiple of the alignment, then the
109 // displaced pointer has the same alignment as the aligned pointer, so
110 // return the alignment value.
126 // alignment AlignSCEV. Use that information, if possible, to compute a new
127 // alignment for Ptr.
142 DEBUG(dbgs() << "AFI: alignment of " << *Ptr << " relative to " <<
147 DEBUG(dbgs() << "\tnew alignment: " << NewAlignment << "\n");
153 // The relative offset to the alignment assumption did not yield a constant,
156 // 32-byte aligned, but instead alternate between 32 and 16-byte alignment.
157 // As a result, the new alignment will not be a constant, but can still
163 DEBUG(dbgs() << "\ttrying start/inc alignment using start " <<
166 // Now compute the new alignment using the displacement to the value in the
167 // first iteration, and also the alignment using the per-iteration delta.
173 DEBUG(dbgs() << "\tnew start alignment: " << NewAlignment << "\n");
174 DEBUG(dbgs() << "\tnew inc alignment: " << NewIncAlignment << "\n");
180 DEBUG(dbgs() << "\tnew start/inc alignment: " <<
186 DEBUG(dbgs() << "\tnew start/inc alignment: " <<
191 DEBUG(dbgs() << "\tnew start/inc alignment: " <<
204 // An alignment assume must be a statement about the least-significant
244 // trivial and tells us nothing about the alignment of the left operand).
249 // Cap the alignment at the maximum with which LLVM can deal (and make sure
251 uint64_t Alignment;
254 Alignment = std::min(1u << TrailingOnes, +Value::MaximumAlignment);
257 AlignSCEV = SE->getConstant(Int64Ty, Alignment);
337 // For memory transfers, we need a common alignment for both the
338 // source and destination. If we have a new alignment for this
341 // change the alignment at that point.