@@ -508,7 +508,7 @@ open CacheOp
508508open Barrier
509509open AccessType
510510
511- /-- Type quantifiers: k_ex5891 # : Bool, k_ex5890 # : Bool -/
511+ /-- Type quantifiers: k_ex6347 # : Bool, k_ex6346 # : Bool -/
512512def neq_bool (x : Bool) (y : Bool) : Bool :=
513513 (Bool.not (BEq.beq x y))
514514
@@ -1936,14 +1936,42 @@ def execute (merge_var : ast) : SailM Unit := do
19361936 | .DataMemoryBarrier arg0 => (execute_DataMemoryBarrier arg0)
19371937 | .CompareAndBranch (t, offset) => (execute_CompareAndBranch t offset)
19381938
1939- def decode (merge_var : (BitVec 32 )) : (Option ast) :=
1940- match_bv merge_var with
1941- | [11 ,111 ,0 ,00 ,opc:2 ,1 ,Rm:5 ,option_v:3 ,S,10 ,Rn:5 ,Rt:5 ] =>
1942- (decodeLoadStoreRegister opc Rm option_v S Rn Rt)
1943- | [sf,10 ,01010 ,shift:2 ,N,Rm:5 ,imm6:6 ,Rn:5 ,Rd:5 ] => (decodeExclusiveOr sf shift N Rm imm6 Rn Rd)
1944- | [1101010100 ,0 ,00 ,011 ,0011 ,CRm:4 ,1 ,01 ,11111 ] => (decodeDataMemoryBarrier CRm)
1945- | [1 ,011010 ,0 ,imm19:19 ,Rt:5 ] => (decodeCompareAndBranch imm19 Rt)
1946- | _ => none
1939+ def decode (v__0 : (BitVec 32 )) : (Option ast) :=
1940+ bif (Bool.and (BEq.beq (Sail.BitVec.extractLsb v__0 31 24 ) (0xF8 : (BitVec 8 )))
1941+ (Bool.and (BEq.beq (Sail.BitVec.extractLsb v__0 21 21 ) (0b1 : (BitVec 1 )))
1942+ (BEq.beq (Sail.BitVec.extractLsb v__0 11 10 ) (0b10 : (BitVec 2 )))))
1943+ then
1944+ (let S := (BitVec.access v__0 12 )
1945+ let option_v : (BitVec 3 ) := (Sail.BitVec.extractLsb v__0 15 13 )
1946+ let opc : (BitVec 2 ) := (Sail.BitVec.extractLsb v__0 23 22 )
1947+ let Rt : (BitVec 5 ) := (Sail.BitVec.extractLsb v__0 4 0 )
1948+ let Rn : (BitVec 5 ) := (Sail.BitVec.extractLsb v__0 9 5 )
1949+ let Rm : (BitVec 5 ) := (Sail.BitVec.extractLsb v__0 20 16 )
1950+ (decodeLoadStoreRegister opc Rm option_v S Rn Rt))
1951+ else
1952+ (bif (BEq.beq (Sail.BitVec.extractLsb v__0 30 24 ) (0b1001010 : (BitVec 7 )))
1953+ then
1954+ (let sf := (BitVec.access v__0 31 )
1955+ let N := (BitVec.access v__0 21 )
1956+ let shift : (BitVec 2 ) := (Sail.BitVec.extractLsb v__0 23 22 )
1957+ let imm6 : (BitVec 6 ) := (Sail.BitVec.extractLsb v__0 15 10 )
1958+ let Rn : (BitVec 5 ) := (Sail.BitVec.extractLsb v__0 9 5 )
1959+ let Rm : (BitVec 5 ) := (Sail.BitVec.extractLsb v__0 20 16 )
1960+ let Rd : (BitVec 5 ) := (Sail.BitVec.extractLsb v__0 4 0 )
1961+ (decodeExclusiveOr sf shift N Rm imm6 Rn Rd))
1962+ else
1963+ (bif (Bool.and (BEq.beq (Sail.BitVec.extractLsb v__0 31 12 ) (0xD5033 : (BitVec 20 )))
1964+ (BEq.beq (Sail.BitVec.extractLsb v__0 7 0 ) (0xBF : (BitVec 8 ))))
1965+ then
1966+ (let CRm : (BitVec 4 ) := (Sail.BitVec.extractLsb v__0 11 8 )
1967+ (decodeDataMemoryBarrier CRm))
1968+ else
1969+ (bif (BEq.beq (Sail.BitVec.extractLsb v__0 31 24 ) (0xB4 : (BitVec 8 )))
1970+ then
1971+ (let imm19 : (BitVec 19 ) := (Sail.BitVec.extractLsb v__0 23 5 )
1972+ let Rt : (BitVec 5 ) := (Sail.BitVec.extractLsb v__0 4 0 )
1973+ (decodeCompareAndBranch imm19 Rt))
1974+ else none)))
19471975
19481976def iFetch (addr : (BitVec 64 )) : SailM (BitVec 32 ) := do
19491977 let req : (Mem_read_request 4 64 (BitVec 56 ) (Option TranslationInfo) arm_acc_type) :=
0 commit comments