summaryrefslogtreecommitdiff
path: root/test/smt/lzcnt_3.unsat.sail
diff options
context:
space:
mode:
authorAlasdair2019-04-13 17:47:26 +0100
committerAlasdair2019-04-13 17:47:26 +0100
commit7cfbabc2bfba4f7d2ba0d3f91c7068ac3b1a84d1 (patch)
treefcd9dd98fc2c1ae2a30c0e4379e9d4550126b3c1 /test/smt/lzcnt_3.unsat.sail
parente89581c010b88de474f3f31748cb815a3b21d1af (diff)
SMT: Add count_leading_zeros and more builtins
Diffstat (limited to 'test/smt/lzcnt_3.unsat.sail')
-rw-r--r--test/smt/lzcnt_3.unsat.sail17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/smt/lzcnt_3.unsat.sail b/test/smt/lzcnt_3.unsat.sail
new file mode 100644
index 00000000..b949a545
--- /dev/null
+++ b/test/smt/lzcnt_3.unsat.sail
@@ -0,0 +1,17 @@
+default Order dec
+
+$include <prelude.sail>
+
+val lzcnt = "count_leading_zeros" : forall 'w, 'w >= 1. bits('w) -> range(0, 'w)
+
+$property
+function prop(bv: bits(5)) -> bool = {
+ let x = unsigned(bv);
+ if x > 0 then {
+ let z = sail_zeros(x);
+ let p1 = lzcnt(z) == x;
+ let p2 = lzcnt(z @ 0xF) == x;
+ let p3 = lzcnt(0x0 @ z) == 4 + x;
+ p1 & p2
+ } else true
+}