summaryrefslogtreecommitdiff
path: root/test/ocaml/types/types.sail
blob: 6790140ec8cfbcc0727e74e0cd667cda2bff0cd5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
enum signal = {Low, High}

enum enum_single = {SingleConstructor}

type byte = bits(8)

type b32 = bits(32)

type b64 = bits(64)

register R64 : b64

register R32 : b32

register R8 : byte

register SIGNALREG : signal

struct TestStruct = {
  field1 : bits(2),
  field2 : byte,
  field3 : bool
}

register SREG : TestStruct

register OREG : option(byte)

val main : unit -> unit effect {rreg, wreg}

function main () = {
  R8 = 0xFF;
  SIGNALREG = Low;
  print(if SIGNALREG == Low then "pass" else "fail");
  SIGNALREG = High;
  print(if SIGNALREG == High then "pass" else "fail");
  SREG.field1 = 0b00;
  print(if SREG.field1 == 0b00 then "pass" else "fail");
  SREG.field1 = 0b11;
  print(if SREG.field1 == 0b11 then "pass" else "fail");
  print("pass")
}