The machine-width size primitives from rustc_abi::Size.
The upstream source stores byte counts in u64, and stores integer values in
u128. Lean 4 has no UInt128, so U128 is represented by BitVec 128;
this preserves the source machine width and wrapping behavior. Operations that
panic in upstream return an explicit Except error here.
A structural equality decider for the standard Except result type.
Equations
- One or more equations did not get rendered due to their size.
Equations
- Miri.ABI.instReprEndian.repr Miri.ABI.Endian.little prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Miri.ABI.Endian.little")).group prec✝
- Miri.ABI.instReprEndian.repr Miri.ABI.Endian.big prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Miri.ABI.Endian.big")).group prec✝
Instances For
Equations
- Miri.ABI.instReprEndian = { reprPrec := Miri.ABI.instReprEndian.repr }
Equations
- Miri.ABI.Endian.little.asString = "little"
- Miri.ABI.Endian.big.asString = "big"
Instances For
Equations
- Miri.ABI.Endian.parse "little" = Except.ok Miri.ABI.Endian.little
- Miri.ABI.Endian.parse "big" = Except.ok Miri.ABI.Endian.big
- Miri.ABI.Endian.parse value = Except.error (toString "unknown endian: \"" ++ toString value ++ toString "\"")
Instances For
- w16 : PointerWidth
- w32 : PointerWidth
- w64 : PointerWidth
Instances For
Equations
Equations
- Miri.ABI.instReprPointerWidth.repr Miri.ABI.PointerWidth.w16 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Miri.ABI.PointerWidth.w16")).group prec✝
- Miri.ABI.instReprPointerWidth.repr Miri.ABI.PointerWidth.w32 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Miri.ABI.PointerWidth.w32")).group prec✝
- Miri.ABI.instReprPointerWidth.repr Miri.ABI.PointerWidth.w64 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Miri.ABI.PointerWidth.w64")).group prec✝
Instances For
Equations
Instances For
Equations
- Miri.ABI.PointerWidth.w16.objSizeBound = 32768
- Miri.ABI.PointerWidth.w32.objSizeBound = 2147483648
- Miri.ABI.PointerWidth.w64.objSizeBound = 2305843009213693952
Instances For
The relevant projection of rustc_abi's target-dependent data layout.
- endian : Endian
- pointerWidth : PointerWidth
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- layout.objSizeBound = layout.pointerWidth.objSizeBound
Instances For
The actual caller interface used by rustc_abi Size::checked_add/mul: the caller supplies a data-layout value, from which the object-size bound is read.
Equations
- Miri.ABI.instHasDataLayoutTargetDataLayout = { dataLayout := id }
Equations
- Miri.ABI.instReprSizeError = { reprPrec := Miri.ABI.instReprSizeError.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.u64Overflow operation left right) (Miri.ABI.SizeError.negativeSubtraction left_1 right_1) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.u64Overflow operation left right) (Miri.ABI.SizeError.bitCountOverflow bytes) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.u64Overflow operation left right) (Miri.ABI.SizeError.integerWidthTooLarge bits) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.u64Overflow operation left right) Miri.ABI.SizeError.zeroWidthUnsignedBound = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.u64Overflow operation left right) Miri.ABI.SizeError.zeroWidthSignedBound = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.negativeSubtraction left right) (Miri.ABI.SizeError.u64Overflow operation left_1 right_1) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.negativeSubtraction left right) (Miri.ABI.SizeError.bitCountOverflow bytes) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.negativeSubtraction left right) (Miri.ABI.SizeError.integerWidthTooLarge bits) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.negativeSubtraction left right) Miri.ABI.SizeError.zeroWidthUnsignedBound = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.negativeSubtraction left right) Miri.ABI.SizeError.zeroWidthSignedBound = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.bitCountOverflow bytes) (Miri.ABI.SizeError.u64Overflow operation left right) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.bitCountOverflow bytes) (Miri.ABI.SizeError.negativeSubtraction left right) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.bitCountOverflow a) (Miri.ABI.SizeError.bitCountOverflow b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.bitCountOverflow bytes) (Miri.ABI.SizeError.integerWidthTooLarge bits) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.bitCountOverflow bytes) Miri.ABI.SizeError.zeroWidthUnsignedBound = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.bitCountOverflow bytes) Miri.ABI.SizeError.zeroWidthSignedBound = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.integerWidthTooLarge bits) (Miri.ABI.SizeError.u64Overflow operation left right) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.integerWidthTooLarge bits) (Miri.ABI.SizeError.negativeSubtraction left right) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.integerWidthTooLarge bits) (Miri.ABI.SizeError.bitCountOverflow bytes) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.integerWidthTooLarge a) (Miri.ABI.SizeError.integerWidthTooLarge b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.integerWidthTooLarge bits) Miri.ABI.SizeError.zeroWidthUnsignedBound = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq (Miri.ABI.SizeError.integerWidthTooLarge bits) Miri.ABI.SizeError.zeroWidthSignedBound = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq Miri.ABI.SizeError.zeroWidthUnsignedBound (Miri.ABI.SizeError.u64Overflow operation left right) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq Miri.ABI.SizeError.zeroWidthUnsignedBound (Miri.ABI.SizeError.negativeSubtraction left right) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq Miri.ABI.SizeError.zeroWidthUnsignedBound (Miri.ABI.SizeError.bitCountOverflow bytes) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq Miri.ABI.SizeError.zeroWidthUnsignedBound (Miri.ABI.SizeError.integerWidthTooLarge bits) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq Miri.ABI.SizeError.zeroWidthUnsignedBound Miri.ABI.SizeError.zeroWidthUnsignedBound = isTrue ⋯
- Miri.ABI.instDecidableEqSizeError.decEq Miri.ABI.SizeError.zeroWidthUnsignedBound Miri.ABI.SizeError.zeroWidthSignedBound = isFalse Miri.ABI.instDecidableEqSizeError.decEq._proof_36
- Miri.ABI.instDecidableEqSizeError.decEq Miri.ABI.SizeError.zeroWidthSignedBound (Miri.ABI.SizeError.u64Overflow operation left right) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq Miri.ABI.SizeError.zeroWidthSignedBound (Miri.ABI.SizeError.negativeSubtraction left right) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq Miri.ABI.SizeError.zeroWidthSignedBound (Miri.ABI.SizeError.bitCountOverflow bytes) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq Miri.ABI.SizeError.zeroWidthSignedBound (Miri.ABI.SizeError.integerWidthTooLarge bits) = isFalse ⋯
- Miri.ABI.instDecidableEqSizeError.decEq Miri.ABI.SizeError.zeroWidthSignedBound Miri.ABI.SizeError.zeroWidthUnsignedBound = isFalse Miri.ABI.instDecidableEqSizeError.decEq._proof_41
- Miri.ABI.instDecidableEqSizeError.decEq Miri.ABI.SizeError.zeroWidthSignedBound Miri.ABI.SizeError.zeroWidthSignedBound = isTrue ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- Miri.ABI.instReprSize = { reprPrec := Miri.ABI.instReprSize.repr }
Equations
- Miri.ABI.instReprSize.repr x✝ prec✝ = Std.Format.bracket "{ " (Std.Format.nil ++ Std.Format.text "bytes" ++ Std.Format.text " := " ++ (Std.Format.nest 9 (repr x✝.bytes)).group) " }"
Instances For
Equations
div_ceil(8) written without the overflowing bits + 7 formulation.
Equations
- size.bits = if size.bytes > UInt64.ofNat (18446744073709551615 / 8) then Except.error (Miri.ABI.SizeError.bitCountOverflow size.bytes) else Except.ok (size.bytes * 8)
Instances For
Checked target-layout addition. This mirrors the upstream exclusive bound:
the resulting byte count must be strictly less than obj_size_bound().
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Truncate a u128 value to the low Size.bits bits. The error case
corresponds to the upstream primitive's overflowing bits() or shift.
Truncate to Size.bits and interpret the resulting bits as a signed
two's-complement i128.