Lines Matching refs:Align
487 constexpr T alignTo(U Value, V Align) { in alignTo() argument
488 assert(Align != 0u && "Align can't be 0."); in alignTo()
489 T CeilDiv = divideCeil(Value, Align); in alignTo()
490 return CeilDiv * Align; in alignTo()
494 constexpr uint64_t alignTo(uint64_t Value, uint64_t Align) { in alignTo() argument
495 assert(Align != 0u && "Align can't be 0."); in alignTo()
496 uint64_t CeilDiv = divideCeil(Value, Align); in alignTo()
497 return CeilDiv * Align; in alignTo()
500 constexpr uint64_t alignToPowerOf2(uint64_t Value, uint64_t Align) { in alignToPowerOf2() argument
501 assert(Align != 0 && (Align & (Align - 1)) == 0 && in alignToPowerOf2()
505 uint64_t NegAlign = (~Align) + 1; in alignToPowerOf2()
506 return (Value + Align - 1) & NegAlign; in alignToPowerOf2()
525 constexpr T alignTo(U Value, V Align, W Skew) { in alignTo() argument
526 assert(Align != 0u && "Align can't be 0."); in alignTo()
527 Skew %= Align; in alignTo()
528 return alignTo(Value - Skew, Align) + Skew; in alignTo()
535 template <auto Align, typename V, typename T = common_uint<decltype(Align), V>>
537 static_assert(Align != 0u, "Align must be non-zero"); in alignTo()
538 T CeilDiv = divideCeil(Value, Align); in alignTo()
539 return CeilDiv * Align; in alignTo()
547 constexpr T alignDown(U Value, V Align, W Skew = 0) {
548 assert(Align != 0u && "Align can't be 0.");
549 Skew %= Align;
550 return (Value - Skew) / Align * Align + Skew;