summaryrefslogtreecommitdiff
path: root/test/smt/concat_prop.unsat.sail
blob: 857f7f3306e29f49ddb1564834ed295b59b54084 (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(32)
register R2 : bits(32)

$property
function prop('sz: range(0, 32)) -> bool = {
  let z: bits('sz) = sail_zeros(sz);
  let x: bits('sz + 32) = R1 @ z;
  let y: bits(32 + 'sz) = R2 @ z;
  let padding = sail_zeros(32) @ 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
}