diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/gen_lib/prompt_monad.lem | 6 | ||||
| -rw-r--r-- | src/gen_lib/sail_operators.lem | 14 | ||||
| -rw-r--r-- | src/gen_lib/sail_operators_bitlists.lem | 28 | ||||
| -rw-r--r-- | src/gen_lib/sail_operators_mwords.lem | 28 | ||||
| -rw-r--r-- | src/process_file.ml | 4 | ||||
| -rw-r--r-- | src/sail_lib.ml | 2 |
6 files changed, 44 insertions, 38 deletions
diff --git a/src/gen_lib/prompt_monad.lem b/src/gen_lib/prompt_monad.lem index 3c414d6e..0966f911 100644 --- a/src/gen_lib/prompt_monad.lem +++ b/src/gen_lib/prompt_monad.lem @@ -123,6 +123,9 @@ let read_mem rk addr sz = let k bytes = Done (bits_of_mem_bytes bytes) in Read_mem rk (bits_of addr) (natFromInteger sz) k +val read_tag : forall 'rv 'a 'e. Bitvector 'a => 'a -> monad 'rv bitU 'e +let read_tag addr = Read_tag (bits_of addr) return + val excl_result : forall 'rv 'e. unit -> monad 'rv bool 'e let excl_result () = let k successful = (return successful) in @@ -137,6 +140,9 @@ let write_mem_val v = match mem_bytes_of_bits v with | Nothing -> Fail "write_mem_val" end +val write_tag_val : forall 'rv 'e. bitU -> monad 'rv bool 'e +let write_tag_val b = Write_tagv b return + val read_reg : forall 's 'rv 'a 'e. register_ref 's 'rv 'a -> monad 'rv 'a 'e let read_reg reg = let k v = diff --git a/src/gen_lib/sail_operators.lem b/src/gen_lib/sail_operators.lem index 7d6b156b..9354f9d4 100644 --- a/src/gen_lib/sail_operators.lem +++ b/src/gen_lib/sail_operators.lem @@ -54,10 +54,10 @@ let arith_op_bv op sign size l r = let add_bv = arith_op_bv integerAdd false 1 -let addS_bv = arith_op_bv integerAdd true 1 +let sadd_bv = arith_op_bv integerAdd true 1 let sub_bv = arith_op_bv integerMinus false 1 let mult_bv = arith_op_bv integerMult false 2 -let multS_bv = arith_op_bv integerMult true 2 +let smult_bv = arith_op_bv integerMult true 2 let inline add_mword = Machine_word.plus let inline sub_mword = Machine_word.minus @@ -72,10 +72,10 @@ let arith_op_bv_int op sign size l r = of_int (size * length l) n let add_bv_int = arith_op_bv_int integerAdd false 1 -let addS_bv_int = arith_op_bv_int integerAdd true 1 +let sadd_bv_int = arith_op_bv_int integerAdd true 1 let sub_bv_int = arith_op_bv_int integerMinus false 1 let mult_bv_int = arith_op_bv_int integerMult false 2 -let multS_bv_int = arith_op_bv_int integerMult true 2 +let smult_bv_int = arith_op_bv_int integerMult true 2 val arith_op_int_bv : forall 'a 'b. Bitvector 'a, Bitvector 'b => (integer -> integer -> integer) -> bool -> integer -> integer -> 'a -> 'b @@ -85,10 +85,10 @@ let arith_op_int_bv op sign size l r = of_int (size * length r) n let add_int_bv = arith_op_int_bv integerAdd false 1 -let addS_int_bv = arith_op_int_bv integerAdd true 1 +let sadd_int_bv = arith_op_int_bv integerAdd true 1 let sub_int_bv = arith_op_int_bv integerMinus false 1 let mult_int_bv = arith_op_int_bv integerMult false 2 -let multS_int_bv = arith_op_int_bv integerMult true 2 +let smult_int_bv = arith_op_int_bv integerMult true 2 let arith_op_bv_bit op sign (size : integer) l r = let l' = int_of_bv sign l in @@ -96,7 +96,7 @@ let arith_op_bv_bit op sign (size : integer) l r = of_int (size * length l) n let add_bv_bit = arith_op_bv_bit integerAdd false 1 -let addS_bv_bit = arith_op_bv_bit integerAdd true 1 +let sadd_bv_bit = arith_op_bv_bit integerAdd true 1 let sub_bv_bit = arith_op_bv_bit integerMinus true 1 val arith_op_overflow_bv : forall 'a 'b. Bitvector 'a, Bitvector 'b => diff --git a/src/gen_lib/sail_operators_bitlists.lem b/src/gen_lib/sail_operators_bitlists.lem index 5658dc21..a627f560 100644 --- a/src/gen_lib/sail_operators_bitlists.lem +++ b/src/gen_lib/sail_operators_bitlists.lem @@ -69,43 +69,43 @@ let xor_vec = xor_bv let not_vec = not_bv val add_vec : list bitU -> list bitU -> list bitU -val addS_vec : list bitU -> list bitU -> list bitU +val sadd_vec : list bitU -> list bitU -> list bitU val sub_vec : list bitU -> list bitU -> list bitU val mult_vec : list bitU -> list bitU -> list bitU -val multS_vec : list bitU -> list bitU -> list bitU +val smult_vec : list bitU -> list bitU -> list bitU let add_vec = add_bv -let addS_vec = addS_bv +let sadd_vec = sadd_bv let sub_vec = sub_bv let mult_vec = mult_bv -let multS_vec = multS_bv +let smult_vec = smult_bv val add_vec_int : list bitU -> integer -> list bitU -val addS_vec_int : list bitU -> integer -> list bitU +val sadd_vec_int : list bitU -> integer -> list bitU val sub_vec_int : list bitU -> integer -> list bitU val mult_vec_int : list bitU -> integer -> list bitU -val multS_vec_int : list bitU -> integer -> list bitU +val smult_vec_int : list bitU -> integer -> list bitU let add_vec_int = add_bv_int -let addS_vec_int = addS_bv_int +let sadd_vec_int = sadd_bv_int let sub_vec_int = sub_bv_int let mult_vec_int = mult_bv_int -let multS_vec_int = multS_bv_int +let smult_vec_int = smult_bv_int val add_int_vec : integer -> list bitU -> list bitU -val addS_int_vec : integer -> list bitU -> list bitU +val sadd_int_vec : integer -> list bitU -> list bitU val sub_int_vec : integer -> list bitU -> list bitU val mult_int_vec : integer -> list bitU -> list bitU -val multS_int_vec : integer -> list bitU -> list bitU +val smult_int_vec : integer -> list bitU -> list bitU let add_int_vec = add_int_bv -let addS_int_vec = addS_int_bv +let sadd_int_vec = sadd_int_bv let sub_int_vec = sub_int_bv let mult_int_vec = mult_int_bv -let multS_int_vec = multS_int_bv +let smult_int_vec = smult_int_bv val add_vec_bit : list bitU -> bitU -> list bitU -val addS_vec_bit : list bitU -> bitU -> list bitU +val sadd_vec_bit : list bitU -> bitU -> list bitU val sub_vec_bit : list bitU -> bitU -> list bitU let add_vec_bit = add_bv_bit -let addS_vec_bit = addS_bv_bit +let sadd_vec_bit = sadd_bv_bit let sub_vec_bit = sub_bv_bit val add_overflow_vec : list bitU -> list bitU -> (list bitU * bitU * bitU) diff --git a/src/gen_lib/sail_operators_mwords.lem b/src/gen_lib/sail_operators_mwords.lem index fcc3153b..7411c0a9 100644 --- a/src/gen_lib/sail_operators_mwords.lem +++ b/src/gen_lib/sail_operators_mwords.lem @@ -69,43 +69,43 @@ let xor_vec = xor_bv let not_vec = not_bv val add_vec : forall 'a. Size 'a => mword 'a -> mword 'a -> mword 'a -val addS_vec : forall 'a. Size 'a => mword 'a -> mword 'a -> mword 'a +val sadd_vec : forall 'a. Size 'a => mword 'a -> mword 'a -> mword 'a val sub_vec : forall 'a. Size 'a => mword 'a -> mword 'a -> mword 'a val mult_vec : forall 'a 'b. Size 'a, Size 'b => mword 'a -> mword 'a -> mword 'b -val multS_vec : forall 'a 'b. Size 'a, Size 'b => mword 'a -> mword 'a -> mword 'b +val smult_vec : forall 'a 'b. Size 'a, Size 'b => mword 'a -> mword 'a -> mword 'b let add_vec = add_bv -let addS_vec = addS_bv +let sadd_vec = sadd_bv let sub_vec = sub_bv let mult_vec = mult_bv -let multS_vec = multS_bv +let smult_vec = smult_bv val add_vec_int : forall 'a. Size 'a => mword 'a -> integer -> mword 'a -val addS_vec_int : forall 'a. Size 'a => mword 'a -> integer -> mword 'a +val sadd_vec_int : forall 'a. Size 'a => mword 'a -> integer -> mword 'a val sub_vec_int : forall 'a. Size 'a => mword 'a -> integer -> mword 'a val mult_vec_int : forall 'a 'b. Size 'a, Size 'b => mword 'a -> integer -> mword 'b -val multS_vec_int : forall 'a 'b. Size 'a, Size 'b => mword 'a -> integer -> mword 'b +val smult_vec_int : forall 'a 'b. Size 'a, Size 'b => mword 'a -> integer -> mword 'b let add_vec_int = add_bv_int -let addS_vec_int = addS_bv_int +let sadd_vec_int = sadd_bv_int let sub_vec_int = sub_bv_int let mult_vec_int = mult_bv_int -let multS_vec_int = multS_bv_int +let smult_vec_int = smult_bv_int val add_int_vec : forall 'a. Size 'a => integer -> mword 'a -> mword 'a -val addS_int_vec : forall 'a. Size 'a => integer -> mword 'a -> mword 'a +val sadd_int_vec : forall 'a. Size 'a => integer -> mword 'a -> mword 'a val sub_int_vec : forall 'a. Size 'a => integer -> mword 'a -> mword 'a val mult_int_vec : forall 'a 'b. Size 'a, Size 'b => integer -> mword 'a -> mword 'b -val multS_int_vec : forall 'a 'b. Size 'a, Size 'b => integer -> mword 'a -> mword 'b +val smult_int_vec : forall 'a 'b. Size 'a, Size 'b => integer -> mword 'a -> mword 'b let add_int_vec = add_int_bv -let addS_int_vec = addS_int_bv +let sadd_int_vec = sadd_int_bv let sub_int_vec = sub_int_bv let mult_int_vec = mult_int_bv -let multS_int_vec = multS_int_bv +let smult_int_vec = smult_int_bv val add_vec_bit : forall 'a. Size 'a => mword 'a -> bitU -> mword 'a -val addS_vec_bit : forall 'a. Size 'a => mword 'a -> bitU -> mword 'a +val sadd_vec_bit : forall 'a. Size 'a => mword 'a -> bitU -> mword 'a val sub_vec_bit : forall 'a. Size 'a => mword 'a -> bitU -> mword 'a let add_vec_bit = add_bv_bit -let addS_vec_bit = addS_bv_bit +let sadd_vec_bit = sadd_bv_bit let sub_vec_bit = sub_bv_bit val add_overflow_vec : forall 'a. Size 'a => mword 'a -> mword 'a -> (mword 'a * bitU * bitU) diff --git a/src/process_file.ml b/src/process_file.ml index a447061b..ffd61fae 100644 --- a/src/process_file.ml +++ b/src/process_file.ml @@ -252,8 +252,8 @@ let output_lem filename libs defs = separate hardline [ string ("theory " ^ isa_thy_name); string " imports"; - string " Sail.Sail_values_extras"; - string " Sail.State_extras"; + string " Sail.Sail_values_lemmas"; + string " Sail.State_lemmas"; string (" " ^ String.capitalize filename); string "begin"; string ""; diff --git a/src/sail_lib.ml b/src/sail_lib.ml index 53f4aec6..44dd4ac5 100644 --- a/src/sail_lib.ml +++ b/src/sail_lib.ml @@ -282,7 +282,7 @@ let mult_vec (x, y) = to_bits' (2*len, prod) (* signed multiplication of two n bit lists producing a list of 2n bits. *) -let mult_svec (x, y) = +let smult_vec (x, y) = let xi = sint(x) in let yi = sint(y) in let len = List.length x in |
