~james/reorder

reorder/src/machine.mli -rw-r--r-- 997 bytes
735c0c8f — james chore(import): snapshot james.dad.town/reorder at c27220bf810c 16 hours ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
type origin = Memory | Buffer
type event = Idle | Drain of int * int * int64
  | Issue of int * int * Syntax.instruction * origin option
type t = {
  pc : int array;
  regs : int64 array array;
  memory : int64 array;
  buffers : (int * int64) list array;
  critical : bool array;
}
val initial : Syntax.t -> t
val step : Syntax.t -> Syntax.model -> Syntax.location list -> t -> int -> (t * event) option
val replay : Syntax.t -> Syntax.model -> Syntax.location list -> int array -> t array * event array
val observations : t -> int64 list
val bad : Syntax.t -> t -> bool
val reachable : Syntax.t -> Syntax.model -> Syntax.location list -> int -> bool * int
val reschedule : Syntax.t -> Syntax.location list -> int array -> int array
type graph = { states : t array; parents : (int * int) array; edges : int; violations : int list }
val explore : ?limit:int -> ?visit:(t -> int -> unit) -> Syntax.t ->
  Syntax.model -> Syntax.location list -> graph
val counterexample : graph -> int array option