File: poly_mapping2.sail

package info (click to toggle)
sail-ocaml 0.19.1%2Bdfsg5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 18,008 kB
  • sloc: ml: 75,941; ansic: 8,848; python: 1,342; exp: 560; sh: 474; makefile: 218; cpp: 36
file content (29 lines) | stat: -rw-r--r-- 875 bytes parent folder | download
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
default Order dec
$include <prelude.sail>

val zero_int_bits : forall 'm, 'm >= 0. int('m) <-> bits('m)
function zero_int_bits_forwards_matches(_) = true
function zero_int_bits_forwards(m) = sail_zeros(m)
function zero_int_bits_backwards_matches(v) = (v == sail_zeros(length(v)))
function zero_int_bits_backwards(v) = length(v)

val test1 : unit -> unit
function test1() =
{
  print_bits("zero_int_bits_forwards ", zero_int_bits(32));
  print_int("zero_int_bits_backwards ", zero_int_bits(0b0000))
}

mapping test1m : bits(3) <-> bits(5) = { v <-> zero_int_bits(2) @ v }

mapping test2m : bits(3) <-> bits(5) = { v <-> zero_int_bits(2) : bits(2) @ v }

val main : unit -> unit

function main() = {
  test1();
  print_bits("test1m ", test1m(0b111));
  print_bits("test1m ", test1m(0b00111));
  print_bits("test2m ", test1m(0b111));
  print_bits("test2m ", test1m(0b00111));
}