Lines Matching full: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) in getNewAlignmentDiff()
108 // If the displacement is an exact multiple of the alignment, then the in getNewAlignmentDiff()
109 // displaced pointer has the same alignment as the aligned pointer, so in getNewAlignmentDiff()
110 // return the alignment value. in getNewAlignmentDiff()
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 " << in getNewAlignment()
147 DEBUG(dbgs() << "\tnew alignment: " << NewAlignment << "\n"); in getNewAlignment()
153 // The relative offset to the alignment assumption did not yield a constant, in getNewAlignment()
156 // 32-byte aligned, but instead alternate between 32 and 16-byte alignment. in getNewAlignment()
157 // As a result, the new alignment will not be a constant, but can still in getNewAlignment()
163 DEBUG(dbgs() << "\ttrying start/inc alignment using start " << in getNewAlignment()
166 // Now compute the new alignment using the displacement to the value in the in getNewAlignment()
167 // first iteration, and also the alignment using the per-iteration delta. in getNewAlignment()
173 DEBUG(dbgs() << "\tnew start alignment: " << NewAlignment << "\n"); in getNewAlignment()
174 DEBUG(dbgs() << "\tnew inc alignment: " << NewIncAlignment << "\n"); in getNewAlignment()
180 DEBUG(dbgs() << "\tnew start/inc alignment: " << in getNewAlignment()
186 DEBUG(dbgs() << "\tnew start/inc alignment: " << in getNewAlignment()
191 DEBUG(dbgs() << "\tnew start/inc alignment: " << in getNewAlignment()
204 // An alignment assume must be a statement about the least-significant in extractAlignmentInfo()
244 // trivial and tells us nothing about the alignment of the left operand). in extractAlignmentInfo()
249 // Cap the alignment at the maximum with which LLVM can deal (and make sure in extractAlignmentInfo()
251 uint64_t Alignment; in extractAlignmentInfo() local
254 Alignment = std::min(1u << TrailingOnes, +Value::MaximumAlignment); in extractAlignmentInfo()
257 AlignSCEV = SE->getConstant(Int64Ty, Alignment); in extractAlignmentInfo()
337 // For memory transfers, we need a common alignment for both the in processAssumption()
338 // source and destination. If we have a new alignment for this in processAssumption()
341 // change the alignment at that point. in processAssumption()