The power-of-two alignment primitives from rustc_abi::Align.
Alignments created from target data or byte counts are restricted to the
upstream maximum exponent 29. maxAlignedFactor 0 deliberately preserves the
upstream exponent 64 sentinel; asking for its byte count is represented as an
explicit shift error, while restrictForOffset safely reduces it first.
- notPowerOfTwo (bytes : UInt64) : AlignError
- tooLarge (bytes : UInt64) : AlignError
- shiftOverflow (pow2 : Nat) : AlignError
- sizeOverflow (size : Size) (mask : UInt64) : AlignError
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
- Miri.ABI.instReprAlignError = { reprPrec := Miri.ABI.instReprAlignError.repr }
Equations
- One or more equations did not get rendered due to their size.
- Miri.ABI.instDecidableEqAlignError.decEq (Miri.ABI.AlignError.notPowerOfTwo a) (Miri.ABI.AlignError.notPowerOfTwo b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.ABI.instDecidableEqAlignError.decEq (Miri.ABI.AlignError.notPowerOfTwo bytes) (Miri.ABI.AlignError.tooLarge bytes_1) = isFalse ⋯
- Miri.ABI.instDecidableEqAlignError.decEq (Miri.ABI.AlignError.notPowerOfTwo bytes) (Miri.ABI.AlignError.shiftOverflow pow2) = isFalse ⋯
- Miri.ABI.instDecidableEqAlignError.decEq (Miri.ABI.AlignError.notPowerOfTwo bytes) (Miri.ABI.AlignError.sizeOverflow size mask) = isFalse ⋯
- Miri.ABI.instDecidableEqAlignError.decEq (Miri.ABI.AlignError.tooLarge bytes) (Miri.ABI.AlignError.notPowerOfTwo bytes_1) = isFalse ⋯
- Miri.ABI.instDecidableEqAlignError.decEq (Miri.ABI.AlignError.tooLarge a) (Miri.ABI.AlignError.tooLarge b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.ABI.instDecidableEqAlignError.decEq (Miri.ABI.AlignError.tooLarge bytes) (Miri.ABI.AlignError.shiftOverflow pow2) = isFalse ⋯
- Miri.ABI.instDecidableEqAlignError.decEq (Miri.ABI.AlignError.tooLarge bytes) (Miri.ABI.AlignError.sizeOverflow size mask) = isFalse ⋯
- Miri.ABI.instDecidableEqAlignError.decEq (Miri.ABI.AlignError.shiftOverflow pow2) (Miri.ABI.AlignError.notPowerOfTwo bytes) = isFalse ⋯
- Miri.ABI.instDecidableEqAlignError.decEq (Miri.ABI.AlignError.shiftOverflow pow2) (Miri.ABI.AlignError.tooLarge bytes) = isFalse ⋯
- Miri.ABI.instDecidableEqAlignError.decEq (Miri.ABI.AlignError.shiftOverflow a) (Miri.ABI.AlignError.shiftOverflow b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.ABI.instDecidableEqAlignError.decEq (Miri.ABI.AlignError.shiftOverflow pow2) (Miri.ABI.AlignError.sizeOverflow size mask) = isFalse ⋯
- Miri.ABI.instDecidableEqAlignError.decEq (Miri.ABI.AlignError.sizeOverflow size mask) (Miri.ABI.AlignError.notPowerOfTwo bytes) = isFalse ⋯
- Miri.ABI.instDecidableEqAlignError.decEq (Miri.ABI.AlignError.sizeOverflow size mask) (Miri.ABI.AlignError.tooLarge bytes) = isFalse ⋯
- Miri.ABI.instDecidableEqAlignError.decEq (Miri.ABI.AlignError.sizeOverflow size mask) (Miri.ABI.AlignError.shiftOverflow pow2) = isFalse ⋯
Instances For
@[instance_reducible]
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
- Miri.ABI.instReprAlign.repr x✝ prec✝ = Std.Format.bracket "{ " (Std.Format.nil ++ Std.Format.text "pow2" ++ Std.Format.text " := " ++ (Std.Format.nest 8 (repr x✝.pow2)).group) " }"
Instances For
@[instance_reducible]
Equations
- Miri.ABI.instReprAlign = { reprPrec := Miri.ABI.instReprAlign.repr }
@[inline]
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[inline]
Equations
Instances For
@[inline]
Equations
- align.bytes = if align.pow2 ≥ 64 then Except.error (Miri.ABI.AlignError.shiftOverflow align.pow2) else Except.ok (UInt64.shiftLeft 1 (UInt64.ofNat align.pow2))
Instances For
@[inline]
Equations
- Miri.ABI.Align.maxForTarget layout = { pow2 := min (layout.pointerWidth.bits.toNat - 1) Miri.ABI.Align.MAX.pow2 }
Instances For
@[inline]
Equations
- Miri.ABI.Align.maxAlignedFactor size = { pow2 := Miri.ABI.Align.countTrailingZeros✝ size.bytes }
Instances For
@[inline]
Equations
- align.restrictForOffset size = { pow2 := min align.pow2 (Miri.ABI.Align.maxAlignedFactor size).pow2 }
Instances For
ABI-mandated alignment wrapper used by target layout.
@[instance_reducible]
Equations
- Miri.ABI.instReprAbiAlign.repr x✝ prec✝ = Std.Format.bracket "{ " (Std.Format.nil ++ Std.Format.text "abi" ++ Std.Format.text " := " ++ (Std.Format.nest 7 (repr x✝.abi)).group) " }"
Instances For
@[instance_reducible]
Equations
- Miri.ABI.instReprAbiAlign = { reprPrec := Miri.ABI.instReprAbiAlign.repr }
@[inline]
Equations
- One or more equations did not get rendered due to their size.