1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
default Order dec
$include <prelude.sail>
/* Simple case split example on a variant datatype */
union ast = {
SomeOp : {'n, 'n in {8,16}. (int('n),bits('n))}
}
val execute : ast -> bits(32)
function execute(SomeOp(n as int('n),v)) = {
a : bits('n) = sail_zero_extend(0x12,n);
b : bits('n) = and_vec(v, a);
sail_zero_extend(b,32)
}
val run : unit -> unit
function run () = {
assert(execute(SomeOp(8,0x11)) == 0x00000010);
assert(execute(SomeOp(16,0x3333)) == 0x00000012);
}
|