summaryrefslogtreecommitdiff
path: root/test/smt/rv_add_decode.unsat.sail
blob: 01653c6f871ef4163af83110837f5d238cb08d1a (plain)
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
default Order dec

$include <prelude.sail>

type regbits = bits(5)

enum iop = {RISCV_ADDI, RISCV_SLTI, RISCV_SLTIU, RISCV_XORI, RISCV_ORI, RISCV_ANDI}

scattered union ast

union clause ast = ITYPE : (bits(12), regbits, regbits, iop)

val decode : bits(32) -> option(ast) effect pure

function clause decode imm : bits(12) @ rs1 : regbits @ 0b000 @ rd : regbits @ 0b0010011
  = Some(ITYPE(imm, rs1, rd, RISCV_ADDI))

function clause decode _ = None()

$property
function prop(imm:  bits(12), rs1: regbits, rd: regbits) -> bool = {
  match decode(imm @ rs1 @ 0b000 @ rd @ 0b0010011) {
    Some(ITYPE(_)) => true,
    _ => false
  }
}