package wire

  1. Overview
  2. Docs

Module Wire.ExprSource

Arithmetic, bitwise, and comparison operators on expressions.

Open this module locally to build constraint and size expressions: Expr.(Field.ref f + int 1).

Sourceval (+) : int expr -> int expr -> int expr

Addition.

Sourceval (-) : int expr -> int expr -> int expr

Subtraction.

Sourceval (*) : int expr -> int expr -> int expr

Multiplication.

Sourceval (/) : int expr -> int expr -> int expr

Division.

Sourceval (mod) : int expr -> int expr -> int expr

Modulo.

Sourceval (land) : int expr -> int expr -> int expr

Bitwise AND.

Sourceval (lor) : int expr -> int expr -> int expr

Bitwise OR.

Sourceval (lxor) : int expr -> int expr -> int expr

Bitwise XOR.

Sourceval lnot : int expr -> int expr

Bitwise NOT.

Sourceval (lsl) : int expr -> int expr -> int expr

Logical shift left.

Sourceval (lsr) : int expr -> int expr -> int expr

Logical shift right.

Sourceval (=) : 'a expr -> 'a expr -> bool expr

Equality.

Sourceval (<>) : 'a expr -> 'a expr -> bool expr

Inequality.

Sourceval (<) : int expr -> int expr -> bool expr

Less than.

Sourceval (<=) : int expr -> int expr -> bool expr

Less than or equal.

Sourceval (>) : int expr -> int expr -> bool expr

Greater than.

Sourceval (>=) : int expr -> int expr -> bool expr

Greater than or equal.

Sourceval (&&) : bool expr -> bool expr -> bool expr

Boolean conjunction.

Sourceval (||) : bool expr -> bool expr -> bool expr

Boolean disjunction.

Sourceval not : bool expr -> bool expr

Boolean negation.

Sourceval true_ : bool expr

Constant true.

Sourceval false_ : bool expr

Constant false.

Sourceval bool : bool -> bool expr

Constant boolean expression.

Sourceval to_uint8 : int expr -> int expr

Truncate to unsigned 8-bit range (mask 0xFF).

Sourceval to_uint16 : int expr -> int expr

Truncate to unsigned 16-bit range (mask 0xFFFF).

Sourceval to_uint32 : int expr -> int expr

Truncate to unsigned 32-bit range (mask 0xFFFFFFFF).

Sourceval to_uint64 : int expr -> int expr

3D codegen cast. At runtime this is the identity -- OCaml int cannot represent the full unsigned 64-bit range. Use only for 3D output where EverParse needs an explicit (UINT64) cast annotation.