Skip to content

Commit d7e043d

Browse files
committed
Fix elaborated program json format
1 parent 1becab5 commit d7e043d

1 file changed

Lines changed: 32 additions & 12 deletions

File tree

wavelet-core/lean/Wavelet/Frontend/RipTide.lean

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ instance : ToString Value where
4343

4444
/-- Synchronous operators in RipTide, parametrized by a type of location/array symbols. -/
4545
inductive 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

5656
instance : 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

434443
private abbrev Loc := String
435444
private 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)
440460
abbrev 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
444464
abbrev EncapProc := Frontend.EncapProc (RipTide.SyncOp Loc) Nat RipTide.Value
445465

446466
/-- Validates static properties of a `Prog`. -/

0 commit comments

Comments
 (0)