@@ -43,9 +43,9 @@ instance : ToString Value where
4343
4444/-- Synchronous operators in RipTide, parametrized by a type of location/array symbols. -/
4545inductive SyncOp (Loc : Type u) : Type u where
46- | add | sub | mul | sdiv
46+ | add | sub | mul | sdiv | udiv
4747 | shl | ashr | lshr
48- | eq | neq | slt | sle
48+ | eq | neq | slt | sle | ult | ule
4949 | and
5050 | bitand
5151 | load (_ : Loc) | store (_ : Loc) | sel
@@ -54,16 +54,22 @@ inductive SyncOp (Loc : Type u) : Type u where
5454 deriving Repr, Lean.ToJson, Lean.FromJson
5555
5656instance : Arity (SyncOp Loc) where
57- ι | .add => 2 | .sub => 2 | .mul => 2 | .sdiv => 2
57+ ι | .add => 2 | .sub => 2 | .mul => 2
58+ | .sdiv => 2 | .udiv => 2
5859 | .shl => 2 | .ashr => 2 | .lshr => 2
59- | .eq => 2 | .neq => 2 | .slt => 2 | .sle => 2
60+ | .eq => 2 | .neq => 2
61+ | .slt => 2 | .sle => 2
62+ | .ult => 2 | .ule => 2
6063 | .and => 2
6164 | .bitand => 2
6265 | .load _ => 1 | .store _ => 2 | .sel => 3
6366 | .const _ => 1 | .copy _ => 1
64- ω | .add => 1 | .sub => 1 | .mul => 1 | .sdiv => 1
67+ ω | .add => 1 | .sub => 1 | .mul => 1
68+ | .sdiv => 1 | .udiv => 1
6569 | .shl => 1 | .ashr => 1 | .lshr => 1
66- | .eq => 1 | .neq => 1 | .slt => 1 | .sle => 1
70+ | .eq => 1 | .neq => 1
71+ | .slt => 1 | .sle => 1
72+ | .ult => 1 | .ule => 1
6773 | .and => 1
6874 | .bitand => 1
6975 | .load _ => 1 | .store _ => 1 | .sel => 1
@@ -316,14 +322,17 @@ instance [ToString Loc] : Dataflow.DotName (SyncOp Loc) where
316322 | .add => "\" +\" "
317323 | .sub => "\" -\" "
318324 | .mul => "\" *\" "
319- | .sdiv => "\" /\" "
325+ | .sdiv => "\" s/\" "
326+ | .udiv => "\" u/\" "
320327 | .shl => "\" <<\" "
321328 | .ashr => "\" a>>\" "
322329 | .lshr => "\" l>>\" "
323330 | .eq => "\" =\" "
324- | .slt => "\" <\" "
325- | .sle => "\" <=\" "
326331 | .neq => "\" !=\" "
332+ | .slt => "\" s<\" "
333+ | .sle => "\" s<=\" "
334+ | .ult => "\" u<\" "
335+ | .ule => "\" u<=\" "
327336 | .and => "\" &&\" "
328337 | .bitand => "\" &\" "
329338 | .load loc => s! "<LD<sub>{ loc} </sub>>"
@@ -433,14 +442,25 @@ open Compile Determinacy Seq Dataflow Semantics
433442
434443private abbrev Loc := String
435444private abbrev FnName := String
436- private abbrev VarName := String
445+
446+ inductive PrimType where
447+ | int (_ : Nat)
448+ deriving BEq, DecidableEq, Hashable, Repr, Lean.ToJson, Lean.FromJson
449+
450+ def PrimType.unit : PrimType := .int 0
451+ def PrimType.bool : PrimType := .int 1
452+
453+ structure VarName (α : Type u) where
454+ name : α
455+ ty : PrimType
456+ deriving BEq, DecidableEq, Hashable, Repr, Lean.ToJson, Lean.FromJson
437457
438458-- Raw program and process formats used for encoding/decoding
439- abbrev RawProg := Frontend.RawProg (WithCall (WithSpec (RipTide.SyncOp Loc) RipTide.opSpec) FnName) VarName
459+ abbrev RawProg := Frontend.RawProg (WithCall (WithSpec (RipTide.SyncOp Loc) RipTide.opSpec) FnName) ( VarName String)
440460abbrev RawProc := Frontend.RawProc (RipTide.SyncOp Loc) Nat RipTide.Value
441461
442462-- Actual program and process formats used for compilation
443- abbrev EncapProg := Frontend.EncapProg (WithSpec (RipTide.SyncOp Loc) RipTide.opSpec) VarName RipTide.Value
463+ abbrev EncapProg := Frontend.EncapProg (WithSpec (RipTide.SyncOp Loc) RipTide.opSpec) ( VarName String) RipTide.Value
444464abbrev EncapProc := Frontend.EncapProc (RipTide.SyncOp Loc) Nat RipTide.Value
445465
446466/-- Validates static properties of a `Prog`. -/
0 commit comments