summaryrefslogtreecommitdiff
path: root/test/ocaml/bitfield/bitfield.sail
diff options
context:
space:
mode:
Diffstat (limited to 'test/ocaml/bitfield/bitfield.sail')
-rw-r--r--test/ocaml/bitfield/bitfield.sail32
1 files changed, 32 insertions, 0 deletions
diff --git a/test/ocaml/bitfield/bitfield.sail b/test/ocaml/bitfield/bitfield.sail
new file mode 100644
index 00000000..5a70d52e
--- /dev/null
+++ b/test/ocaml/bitfield/bitfield.sail
@@ -0,0 +1,32 @@
+
+val _reg_deref = "reg_deref" : forall ('a : Type). register('a) -> 'a
+
+bitfield cr : bits(8) = {
+ CR0 : 7 .. 4,
+ LT : 7,
+ CR1 : 3 .. 2,
+ CR2 : 1,
+ CR3 : 0,
+}
+
+register CR : cr
+
+bitfield dr : vector(4, inc, bit) = {
+ DR0 : 2 .. 3
+}
+
+register DR : dr
+
+val main : unit -> unit effect {rreg, wreg}
+
+function main () = {
+ CR->bits() = 0xFF;
+ print_bits("CR: ", CR.bits());
+ ref CR.CR0() = 0x0;
+ print_bits("CR: ", CR.bits());
+ CR->LT() = 0b1;
+ print_bits("CR.CR0: ", CR.CR0());
+ print_bits("CR: ", CR.bits());
+ CR->CR3() = 0b0;
+ print_bits("CR: ", CR.bits())
+}