The integer-or-pointer scalar core from mir/interpret/value.rs. Floating
point wrappers are intentionally absent until the pinned apfloat conversion
semantics are available; no host-float approximation is used.
- scalarInt (reason : ScalarIntError) : ScalarError
- pointerSizeMismatch (expected actual : ABI.Size) : ScalarError
- pointerOffsetDoesNotFit (offset targetSize : ABI.Size) : ScalarError
- integerConversionOverflow (bits : ABI.U128) : ScalarError
- provenanceHasNoAllocationId : ScalarError
- readPointerAsInt : ScalarError
- zeroSizedBits : ScalarError
Instances For
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.scalarInt a) (Miri.Memory.ScalarError.scalarInt b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.scalarInt reason) (Miri.Memory.ScalarError.pointerSizeMismatch expected actual) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.scalarInt reason) (Miri.Memory.ScalarError.pointerOffsetDoesNotFit offset targetSize) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.scalarInt reason) (Miri.Memory.ScalarError.integerConversionOverflow bits) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.scalarInt reason) Miri.Memory.ScalarError.provenanceHasNoAllocationId = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.scalarInt reason) Miri.Memory.ScalarError.readPointerAsInt = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.scalarInt reason) Miri.Memory.ScalarError.zeroSizedBits = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.pointerSizeMismatch expected actual) (Miri.Memory.ScalarError.scalarInt reason) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.pointerSizeMismatch expected actual) (Miri.Memory.ScalarError.pointerOffsetDoesNotFit offset targetSize) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.pointerSizeMismatch expected actual) (Miri.Memory.ScalarError.integerConversionOverflow bits) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.pointerSizeMismatch expected actual) Miri.Memory.ScalarError.provenanceHasNoAllocationId = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.pointerSizeMismatch expected actual) Miri.Memory.ScalarError.readPointerAsInt = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.pointerSizeMismatch expected actual) Miri.Memory.ScalarError.zeroSizedBits = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.pointerOffsetDoesNotFit offset targetSize) (Miri.Memory.ScalarError.scalarInt reason) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.pointerOffsetDoesNotFit offset targetSize) (Miri.Memory.ScalarError.pointerSizeMismatch expected actual) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.pointerOffsetDoesNotFit offset targetSize) (Miri.Memory.ScalarError.integerConversionOverflow bits) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.pointerOffsetDoesNotFit offset targetSize) Miri.Memory.ScalarError.provenanceHasNoAllocationId = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.pointerOffsetDoesNotFit offset targetSize) Miri.Memory.ScalarError.readPointerAsInt = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.pointerOffsetDoesNotFit offset targetSize) Miri.Memory.ScalarError.zeroSizedBits = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.integerConversionOverflow bits) (Miri.Memory.ScalarError.scalarInt reason) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.integerConversionOverflow bits) (Miri.Memory.ScalarError.pointerSizeMismatch expected actual) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.integerConversionOverflow bits) (Miri.Memory.ScalarError.pointerOffsetDoesNotFit offset targetSize) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.integerConversionOverflow bits) Miri.Memory.ScalarError.provenanceHasNoAllocationId = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.integerConversionOverflow bits) Miri.Memory.ScalarError.readPointerAsInt = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq (Miri.Memory.ScalarError.integerConversionOverflow bits) Miri.Memory.ScalarError.zeroSizedBits = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq Miri.Memory.ScalarError.provenanceHasNoAllocationId (Miri.Memory.ScalarError.scalarInt reason) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq Miri.Memory.ScalarError.provenanceHasNoAllocationId (Miri.Memory.ScalarError.pointerSizeMismatch expected actual) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq Miri.Memory.ScalarError.provenanceHasNoAllocationId (Miri.Memory.ScalarError.pointerOffsetDoesNotFit offset targetSize) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq Miri.Memory.ScalarError.provenanceHasNoAllocationId (Miri.Memory.ScalarError.integerConversionOverflow bits) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq Miri.Memory.ScalarError.provenanceHasNoAllocationId Miri.Memory.ScalarError.provenanceHasNoAllocationId = isTrue ⋯
- Miri.Memory.instDecidableEqScalarError.decEq Miri.Memory.ScalarError.readPointerAsInt (Miri.Memory.ScalarError.scalarInt reason) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq Miri.Memory.ScalarError.readPointerAsInt (Miri.Memory.ScalarError.pointerSizeMismatch expected actual) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq Miri.Memory.ScalarError.readPointerAsInt (Miri.Memory.ScalarError.pointerOffsetDoesNotFit offset targetSize) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq Miri.Memory.ScalarError.readPointerAsInt (Miri.Memory.ScalarError.integerConversionOverflow bits) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq Miri.Memory.ScalarError.readPointerAsInt Miri.Memory.ScalarError.readPointerAsInt = isTrue ⋯
- Miri.Memory.instDecidableEqScalarError.decEq Miri.Memory.ScalarError.readPointerAsInt Miri.Memory.ScalarError.zeroSizedBits = isFalse Miri.Memory.instDecidableEqScalarError.decEq._proof_46
- Miri.Memory.instDecidableEqScalarError.decEq Miri.Memory.ScalarError.zeroSizedBits (Miri.Memory.ScalarError.scalarInt reason) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq Miri.Memory.ScalarError.zeroSizedBits (Miri.Memory.ScalarError.pointerSizeMismatch expected actual) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq Miri.Memory.ScalarError.zeroSizedBits (Miri.Memory.ScalarError.pointerOffsetDoesNotFit offset targetSize) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq Miri.Memory.ScalarError.zeroSizedBits (Miri.Memory.ScalarError.integerConversionOverflow bits) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarError.decEq Miri.Memory.ScalarError.zeroSizedBits Miri.Memory.ScalarError.readPointerAsInt = isFalse Miri.Memory.instDecidableEqScalarError.decEq._proof_52
- Miri.Memory.instDecidableEqScalarError.decEq Miri.Memory.ScalarError.zeroSizedBits Miri.Memory.ScalarError.zeroSizedBits = isTrue ⋯
Instances For
@[instance_reducible]
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
- integer {Prov : Type} (value : ScalarInt) : ScalarPayload Prov
- pointer {Prov : Type} (value : Pointer Prov) : ScalarPayload Prov
Instances For
def
Miri.Memory.instDecidableEqScalarPayload.decEq
{Prov✝ : Type}
[DecidableEq Prov✝]
(x✝ x✝¹ : ScalarPayload Prov✝)
:
Equations
- Miri.Memory.instDecidableEqScalarPayload.decEq (Miri.Memory.ScalarPayload.integer a) (Miri.Memory.ScalarPayload.integer b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.Memory.instDecidableEqScalarPayload.decEq (Miri.Memory.ScalarPayload.integer value) (Miri.Memory.ScalarPayload.pointer value_1) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarPayload.decEq (Miri.Memory.ScalarPayload.pointer value) (Miri.Memory.ScalarPayload.integer value_1) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarPayload.decEq (Miri.Memory.ScalarPayload.pointer a) (Miri.Memory.ScalarPayload.pointer b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
@[instance_reducible]
instance
Miri.Memory.instDecidableEqScalarPayload
{Prov✝ : Type}
[DecidableEq Prov✝]
:
DecidableEq (ScalarPayload Prov✝)
@[instance_reducible]
Equations
def
Miri.Memory.instReprScalarPayload.repr
{Prov✝ : Type}
[Repr Prov✝]
:
ScalarPayload Prov✝ → Nat → Std.Format
Equations
- One or more equations did not get rendered due to their size.
Instances For
- bits {Prov : Type} (value : ABI.U128) : ScalarBitsOrPointer Prov
- pointer {Prov : Type} (value : Pointer Prov) : ScalarBitsOrPointer Prov
Instances For
def
Miri.Memory.instDecidableEqScalarBitsOrPointer.decEq
{Prov✝ : Type}
[DecidableEq Prov✝]
(x✝ x✝¹ : ScalarBitsOrPointer Prov✝)
:
Equations
- Miri.Memory.instDecidableEqScalarBitsOrPointer.decEq (Miri.Memory.ScalarBitsOrPointer.bits a) (Miri.Memory.ScalarBitsOrPointer.bits b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.Memory.instDecidableEqScalarBitsOrPointer.decEq (Miri.Memory.ScalarBitsOrPointer.bits value) (Miri.Memory.ScalarBitsOrPointer.pointer value_1) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarBitsOrPointer.decEq (Miri.Memory.ScalarBitsOrPointer.pointer value) (Miri.Memory.ScalarBitsOrPointer.bits value_1) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarBitsOrPointer.decEq (Miri.Memory.ScalarBitsOrPointer.pointer a) (Miri.Memory.ScalarBitsOrPointer.pointer b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
@[instance_reducible]
instance
Miri.Memory.instDecidableEqScalarBitsOrPointer
{Prov✝ : Type}
[DecidableEq Prov✝]
:
DecidableEq (ScalarBitsOrPointer Prov✝)
def
Miri.Memory.instReprScalarBitsOrPointer.repr
{Prov✝ : Type}
[Repr Prov✝]
:
ScalarBitsOrPointer Prov✝ → Nat → Std.Format
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
instance
Miri.Memory.instReprScalarBitsOrPointer
{Prov✝ : Type}
[Repr Prov✝]
:
Repr (ScalarBitsOrPointer Prov✝)
Equations
- integer (value : ScalarInt) : ScalarIntCastResult
- erasedPointer (value : Pointer AllocId) (size : ABI.Size) : ScalarIntCastResult
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Miri.Memory.instDecidableEqScalarIntCastResult.decEq (Miri.Memory.ScalarIntCastResult.integer a) (Miri.Memory.ScalarIntCastResult.integer b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.Memory.instDecidableEqScalarIntCastResult.decEq (Miri.Memory.ScalarIntCastResult.integer value) (Miri.Memory.ScalarIntCastResult.erasedPointer value_1 size) = isFalse ⋯
- Miri.Memory.instDecidableEqScalarIntCastResult.decEq (Miri.Memory.ScalarIntCastResult.erasedPointer value size) (Miri.Memory.ScalarIntCastResult.integer value_1) = isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
- payload : Miri.Memory.ScalarPayload Prov
- scalarSize : Miri.ABI.Size
Instances For
@[instance_reducible]
instance
Miri.Memory.instDecidableEqScalar
{Prov✝ : Type}
[DecidableEq Prov✝]
:
DecidableEq (Scalar Prov✝)
def
Miri.Memory.instDecidableEqScalar.decEq
{Prov✝ : Type}
[DecidableEq Prov✝]
(x✝ x✝¹ : Scalar Prov✝)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
- Miri.Memory.instReprScalar = { reprPrec := Miri.Memory.instReprScalar.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- self.size = Miri.Memory.Scalar.scalarSize✝ self
Instances For
Equations
- Miri.Memory.Scalar.fromScalarInt value = { payload := Miri.Memory.ScalarPayload.integer value, scalarSize := value.size }
Instances For
def
Miri.Memory.Scalar.fromPointer
{Prov : Type}
(layout : ABI.TargetDataLayout)
(value : Pointer Prov)
:
Scalar Prov
Equations
- Miri.Memory.Scalar.fromPointer layout value = { payload := Miri.Memory.ScalarPayload.pointer value, scalarSize := Miri.Memory.Scalar.targetPointerSize✝ layout }
Instances For
def
Miri.Memory.Scalar.fromMaybePointer
{Prov : Type}
(layout : ABI.TargetDataLayout)
(value : Pointer (Option Prov))
:
Except ScalarError (Scalar Prov)
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Miri.Memory.Scalar.nullPointer
{Prov : Type}
(layout : ABI.TargetDataLayout)
:
Except ScalarError (Scalar Prov)
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Equations
Instances For
def
Miri.Memory.Scalar.fromUInt
{Prov : Type}
(value : ABI.U128)
(size : ABI.Size)
:
Except ScalarError (Scalar Prov)
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Miri.Memory.Scalar.fromInt
{Prov : Type}
(value : Int)
(size : ABI.Size)
:
Except ScalarError (Scalar Prov)
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- self.isPointer = match Miri.Memory.Scalar.payload✝ self with | Miri.Memory.ScalarPayload.integer value => false | Miri.Memory.ScalarPayload.pointer value => true
Instances For
def
Miri.Memory.Scalar.toBitsOrPtrInternal
{Prov : Type}
(self : Scalar Prov)
(expectedSize : ABI.Size)
:
Except ScalarError (ScalarBitsOrPointer Prov)
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
def
Miri.Memory.Scalar.clearProvenance
{Prov : Type}
[PointerProvenance Prov]
(self : Scalar Prov)
:
Except ScalarError (Scalar Prov)
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
def
Miri.Memory.Scalar.assertScalarInt
{Prov : Type}
[PointerProvenance Prov]
(self : Scalar Prov)
:
Equations
- self.assertScalarInt = self.toScalarInt
Instances For
def
Miri.Memory.Scalar.toBits
{Prov : Type}
[PointerProvenance Prov]
(self : Scalar Prov)
(targetSize : ABI.Size)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Miri.Memory.Scalar.toUInt
{Prov : Type}
[PointerProvenance Prov]
(self : Scalar Prov)
(size : ABI.Size)
:
Instances For
Equations
- self.toUInt8 = do let __do_lift ← self.toUInt (Miri.ABI.Size.ofBytes 1) pure (UInt8.ofNat (BitVec.toNat __do_lift))
Instances For
Equations
- self.toUInt16 = do let __do_lift ← self.toUInt (Miri.ABI.Size.ofBytes 2) pure (UInt16.ofNat (BitVec.toNat __do_lift))
Instances For
Equations
- self.toUInt32 = do let __do_lift ← self.toUInt (Miri.ABI.Size.ofBytes 4) pure (UInt32.ofNat (BitVec.toNat __do_lift))
Instances For
Equations
- self.toUInt64 = do let __do_lift ← self.toUInt (Miri.ABI.Size.ofBytes 8) pure (UInt64.ofNat (BitVec.toNat __do_lift))
Instances For
Equations
- self.toUInt128 = self.toUInt (Miri.ABI.Size.ofBytes 16)
Instances For
def
Miri.Memory.Scalar.toInt
{Prov : Type}
[PointerProvenance Prov]
(self : Scalar Prov)
(size : ABI.Size)
:
Equations
- self.toInt size = do let bits ← self.toBits size Except.mapError (Miri.Memory.ScalarError.scalarInt ∘ Miri.Memory.ScalarIntError.sizeError) (size.signExtend bits)
Instances For
Equations
- self.toInt8 = do let __do_lift ← self.toInt (Miri.ABI.Size.ofBytes 1) pure (Int8.ofInt __do_lift)
Instances For
Equations
- self.toInt16 = do let __do_lift ← self.toInt (Miri.ABI.Size.ofBytes 2) pure (Int16.ofInt __do_lift)
Instances For
Equations
- self.toInt32 = do let __do_lift ← self.toInt (Miri.ABI.Size.ofBytes 4) pure (Int32.ofInt __do_lift)
Instances For
Equations
- self.toInt64 = do let __do_lift ← self.toInt (Miri.ABI.Size.ofBytes 8) pure (Int64.ofInt __do_lift)
Instances For
Equations
- self.toInt128 = self.toInt (Miri.ABI.Size.ofBytes 16)
Instances For
def
Miri.Memory.Scalar.toTargetUsize
{Prov : Type}
[PointerProvenance Prov]
(self : Scalar Prov)
(targetSize : ABI.Size)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Miri.Memory.Scalar.toTargetIsize
{Prov : Type}
[PointerProvenance Prov]
(self : Scalar Prov)
(targetSize : ABI.Size)
:
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
Equations
- self.toChar = do let scalarInt ← self.toScalarInt Except.mapError Miri.Memory.Scalar.wrapIntError✝ scalarInt.toChar
Instances For
def
Miri.Memory.Scalar.toPointer
{Prov : Type}
[PointerProvenance Prov]
(self : Scalar Prov)
(layout : ABI.TargetDataLayout)
:
Except ScalarError (Pointer (Option Prov))
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
Miri.Memory.Scalar.fromPointer_size
{Prov : Type}
(layout : ABI.TargetDataLayout)
(pointer : Pointer Prov)
: