Lines Matching full:alignment
1 //===-- DataLayout.cpp - Data size & alignment routines --------------------==//
10 // This file defines layout properties related to datatype size/offset/alignment
58 // Keep track of maximum alignment constraint. in StructLayout()
65 // Empty structures have alignment of 1 byte. in StructLayout()
104 assert(abi_align <= pref_align && "Preferred alignment worse than ABI!"); in get()
131 assert(ABIAlign <= PrefAlign && "Preferred alignment worse than ABI!"); in get()
266 // ABI alignment. in parseSpecifier()
269 "Missing alignment specification for pointer in datalayout string"); in parseSpecifier()
274 "Pointer ABI alignment must be a power of 2"); in parseSpecifier()
276 // Preferred alignment. in parseSpecifier()
283 "Pointer preferred alignment must be a power of 2"); in parseSpecifier()
310 // ABI alignment. in parseSpecifier()
313 "Missing alignment specification in datalayout string"); in parseSpecifier()
318 "ABI alignment specification must be >0 for non-aggregate types"); in parseSpecifier()
320 // Preferred alignment. in parseSpecifier()
343 case 'S': { // Stack natural alignment. in parseSpecifier()
403 report_fatal_error("Invalid ABI alignment, must be a 16bit integer"); in setAlignment()
405 report_fatal_error("Invalid preferred alignment, must be a 16bit integer"); in setAlignment()
407 report_fatal_error("Invalid ABI alignment, must be a power of 2"); in setAlignment()
409 report_fatal_error("Invalid preferred alignment, must be a power of 2"); in setAlignment()
413 "Preferred alignment cannot be less than the ABI alignment"); in setAlignment()
442 "Preferred alignment cannot be less than the ABI alignment"); in setPointerAlignment()
455 /// getAlignmentInfo - Return the alignment (either ABI if ABIInfo = true or
487 // If we didn't find an integer alignment, fall back on most conservative. in getAlignmentInfo()
491 // By default, use natural alignment for vector types. This is consistent in getAlignmentInfo()
495 // If the alignment is not a power of 2, round up to the next power of 2. in getAlignmentInfo()
503 // If we still couldn't find a reasonable default alignment, fall back in getAlignmentInfo()
504 // to a simple heuristic that the alignment is the first power of two in getAlignmentInfo()
618 \param abi_or_pref Flag that determines which alignment is returned. true
619 returns the ABI alignment, false returns the preferred alignment.
620 \param Ty The underlying type for which alignment is determined.
622 Get the ABI (\a abi_or_pref == true) or preferred alignment (\a abi_or_pref
645 // Packed structure types always have an ABI alignment of one. in getAlignment()
661 // same size and alignment, so they look the same here. in getAlignment()
683 /// getABIIntegerTypeAlignment - Return the minimum ABI-required alignment for
695 assert(!(Align & (Align-1)) && "Alignment is not a power of two!"); in getPreferredTypeAlignmentShift()
763 /// getPreferredAlignment - Return the preferred alignment of the specified
764 /// global. This includes an explicitly requested alignment (if the global
768 unsigned Alignment = getPrefTypeAlignment(ElemType); in getPreferredAlignment() local
770 if (GVAlignment >= Alignment) { in getPreferredAlignment()
771 Alignment = GVAlignment; in getPreferredAlignment()
773 Alignment = std::max(GVAlignment, getABITypeAlignment(ElemType)); in getPreferredAlignment()
777 if (Alignment < 16) { in getPreferredAlignment()
779 // larger alignment. in getPreferredAlignment()
781 Alignment = 16; // 16-byte alignment. in getPreferredAlignment()
784 return Alignment; in getPreferredAlignment()
787 /// getPreferredAlignmentLog - Return the preferred alignment of the
789 /// requested alignment (if the global has one).