summaryrefslogtreecommitdiff
path: root/test/smt/concat_prop128.unsat.sail
blob: 4205db10b544750c6b1c1e9d313d0247030194dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
default Order dec

$include <prelude.sail>

register R1 : bits(64)
register R2 : bits(64)

$property
function prop('sz: range(0, 64)) -> bool = {
  let z: bits('sz) = sail_zeros(sz);
  let x: bits('sz + 64) = R1 @ z;
  let y: bits(64 + 'sz) = R2 @ z;
  let padding = sail_zeros(64) @ sail_zeros(sz);

  // A and B must be equal
  let A = x @ y;
  let B = or_vec(sail_shiftleft(padding @ x, length(y)), padding @ y);
  A == B
}