SBPF.Value — the CompCert-style memory value #
The value type read from and written to memory (Val.thy's val). A memory
access at a given MemoryChunk width yields one of these tagged values.
Scope note: Val.thy additionally defines a large suite of CompCert-style
arithmetic on val (add32, divmod64s, bswap32, cmpu, …). Those operate
on the x86-64 JIT's value-typed registers and are out of scope here — the sBPF
interpreter operates on raw U64 registers directly. Only the value type, which
the memory model needs, is ported.
Main definitions #
Solanalib.SBPF.Val— a tagged memory value (Vundef/ byte / short / int / long).
@[implicit_reducible]
Equations
- Solanalib.SBPF.instDecidableEqVal.decEq Solanalib.SBPF.Val.vundef Solanalib.SBPF.Val.vundef = isTrue ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq Solanalib.SBPF.Val.vundef (Solanalib.SBPF.Val.vbyte b) = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq Solanalib.SBPF.Val.vundef (Solanalib.SBPF.Val.vshort s) = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq Solanalib.SBPF.Val.vundef (Solanalib.SBPF.Val.vint i) = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq Solanalib.SBPF.Val.vundef (Solanalib.SBPF.Val.vlong l) = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vbyte b) Solanalib.SBPF.Val.vundef = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vbyte a) (Solanalib.SBPF.Val.vbyte b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vbyte b) (Solanalib.SBPF.Val.vshort s) = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vbyte b) (Solanalib.SBPF.Val.vint i) = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vbyte b) (Solanalib.SBPF.Val.vlong l) = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vshort s) Solanalib.SBPF.Val.vundef = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vshort s) (Solanalib.SBPF.Val.vbyte b) = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vshort a) (Solanalib.SBPF.Val.vshort b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vshort s) (Solanalib.SBPF.Val.vint i) = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vshort s) (Solanalib.SBPF.Val.vlong l) = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vint i) Solanalib.SBPF.Val.vundef = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vint i) (Solanalib.SBPF.Val.vbyte b) = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vint i) (Solanalib.SBPF.Val.vshort s) = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vint a) (Solanalib.SBPF.Val.vint b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vint i) (Solanalib.SBPF.Val.vlong l) = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vlong l) Solanalib.SBPF.Val.vundef = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vlong l) (Solanalib.SBPF.Val.vbyte b) = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vlong l) (Solanalib.SBPF.Val.vshort s) = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vlong l) (Solanalib.SBPF.Val.vint i) = isFalse ⋯
- Solanalib.SBPF.instDecidableEqVal.decEq (Solanalib.SBPF.Val.vlong a) (Solanalib.SBPF.Val.vlong b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Solanalib.SBPF.instReprVal.repr Solanalib.SBPF.Val.vundef prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Solanalib.SBPF.Val.vundef")).group prec✝
Instances For
@[implicit_reducible]
Equations
- Solanalib.SBPF.instReprVal = { reprPrec := Solanalib.SBPF.instReprVal.repr }