Lines Matching full:alignment
14 // complex alignment assumptions that apply to vector loads and stores that
19 #define AA_NAME "alignment-from-assumptions"
40 "Number of loads changed by alignment assumptions");
42 "Number of stores changed by alignment assumptions");
44 "Number of memory intrinsics changed by alignment assumptions");
66 // For memory transfers, we need a common alignment for both the source and
67 // destination. If we have a new alignment for only one operand of a transfer
69 // another assumption later, then we may change the alignment at that point.
82 static const char aip_name[] = "Alignment from assumptions";
95 // Given an expression for the (constant) alignment, AlignSCEV, and an
97 // DiffSCEV, compute the alignment of the displaced pointer if it can be reduced
98 // to a constant. Using SCEV to compute alignment handles the case where
104 // DiffUnits = Diff % int64_t(Alignment) in getNewAlignmentDiff()
116 // If the displacement is an exact multiple of the alignment, then the in getNewAlignmentDiff()
117 // displaced pointer has the same alignment as the aligned pointer, so in getNewAlignmentDiff()
118 // return the alignment value. in getNewAlignmentDiff()
134 // alignment AlignSCEV. Use that information, if possible, to compute a new
135 // alignment for Ptr.
150 DEBUG(dbgs() << "AFI: alignment of " << *Ptr << " relative to " << in getNewAlignment()
155 DEBUG(dbgs() << "\tnew alignment: " << NewAlignment << "\n"); in getNewAlignment()
161 // The relative offset to the alignment assumption did not yield a constant, in getNewAlignment()
164 // 32-byte aligned, but instead alternate between 32 and 16-byte alignment. in getNewAlignment()
165 // As a result, the new alignment will not be a constant, but can still in getNewAlignment()
171 DEBUG(dbgs() << "\ttrying start/inc alignment using start " << in getNewAlignment()
174 // Now compute the new alignment using the displacement to the value in the in getNewAlignment()
175 // first iteration, and also the alignment using the per-iteration delta. in getNewAlignment()
181 DEBUG(dbgs() << "\tnew start alignment: " << NewAlignment << "\n"); in getNewAlignment()
182 DEBUG(dbgs() << "\tnew inc alignment: " << NewIncAlignment << "\n"); in getNewAlignment()
188 DEBUG(dbgs() << "\tnew start/inc alignment: " << in getNewAlignment()
194 DEBUG(dbgs() << "\tnew start/inc alignment: " << in getNewAlignment()
199 DEBUG(dbgs() << "\tnew start/inc alignment: " << in getNewAlignment()
211 // An alignment assume must be a statement about the least-significant in extractAlignmentInfo()
251 // trivial and tells us nothing about the alignment of the left operand). in extractAlignmentInfo()
257 // Cap the alignment at the maximum with which LLVM can deal (and make sure in extractAlignmentInfo()
259 uint64_t Alignment; in extractAlignmentInfo() local
262 Alignment = std::min(1u << TrailingOnes, +Value::MaximumAlignment); in extractAlignmentInfo()
265 AlignSCEV = SE->getConstant(Int64Ty, Alignment); in extractAlignmentInfo()
345 // For memory transfers, we need a common alignment for both the in processAssumption()
346 // source and destination. If we have a new alignment for this in processAssumption()
349 // change the alignment at that point. in processAssumption()