diff options
Diffstat (limited to 'snapshots/isabelle/cheri/Cheri.thy')
| -rw-r--r-- | snapshots/isabelle/cheri/Cheri.thy | 6536 |
1 files changed, 3285 insertions, 3251 deletions
diff --git a/snapshots/isabelle/cheri/Cheri.thy b/snapshots/isabelle/cheri/Cheri.thy index eed49a23..af6852b6 100644 --- a/snapshots/isabelle/cheri/Cheri.thy +++ b/snapshots/isabelle/cheri/Cheri.thy @@ -5,12 +5,12 @@ theory "Cheri" imports Main "Lem_pervasives_extra" - "Sail_instr_kinds" - "Sail_values" - "Sail_operators_mwords" - "Prompt_monad" - "Prompt" - "State" + "Sail2_instr_kinds" + "Sail2_values" + "Sail2_string" + "Sail2_operators_mwords" + "Sail2_prompt_monad" + "Sail2_prompt" "Cheri_types" "Mips_extras" @@ -18,12 +18,12 @@ begin (*Generated by Sail from cheri.*) (*open import Pervasives_extra*) -(*open import Sail_instr_kinds*) -(*open import Sail_values*) -(*open import Sail_operators_mwords*) -(*open import Prompt_monad*) -(*open import Prompt*) -(*open import State*) +(*open import Sail2_instr_kinds*) +(*open import Sail2_values*) +(*open import Sail2_string*) +(*open import Sail2_operators_mwords*) +(*open import Sail2_prompt_monad*) +(*open import Sail2_prompt*) (*open import Cheri_types*) (*open import Mips_extras*) @@ -31,12 +31,6 @@ definition cap_size :: " int " where " cap_size = ( (( 32 :: int)::ii))" -(*val undefined_option : forall 'a. 'a -> M (maybe 'a)*) - -definition undefined_option :: " 'a \<Rightarrow>((register_value),('a option),(exception))monad " where - " undefined_option typ_a = ( undefined_unit () \<then> internal_pick [None,Some typ_a])" - - @@ -49,15 +43,39 @@ definition neq_bool :: " bool \<Rightarrow> bool \<Rightarrow> bool " where " neq_bool x y = ( \<not> (((x = y))))" +(*val undefined_option : forall 'a. 'a -> M (maybe 'a)*) + +definition undefined_option :: " 'a \<Rightarrow>((register_value),('a option),(exception))monad " where + " undefined_option typ_a = ( + undefined_unit () \<bind> (\<lambda> (u_0 :: unit) . + (let (u_1 :: 'a) = typ_a in + internal_pick [Some u_1,None])))" + + +(*val is_none : forall 'a. maybe 'a -> bool*) + +fun is_none :: " 'a option \<Rightarrow> bool " where + " is_none (Some (_)) = ( False )" +|" is_none None = ( True )" + +(*val is_some : forall 'a. maybe 'a -> bool*) +fun is_some :: " 'a option \<Rightarrow> bool " where + " is_some (Some (_)) = ( True )" +|" is_some None = ( False )" -(*val builtin_and_vec : forall 'n. bits 'n -> bits 'n -> bits 'n*) +(*val sail_mask : forall 'len 'v . Size 'len, Size 'v => itself 'len -> mword 'v -> mword 'len*) + +definition sail_mask :: "('len::len)itself \<Rightarrow>('v::len)Word.word \<Rightarrow>('len::len)Word.word " where + " sail_mask len v = ( + (let len = (size_itself_int len) in + if ((len \<le> ((int (size v))))) then (vector_truncate v len :: ( 'len::len)Word.word) + else (zero_extend v len :: ( 'len::len)Word.word)))" -(*val builtin_or_vec : forall 'n. bits 'n -> bits 'n -> bits 'n*) @@ -65,29 +83,25 @@ definition neq_bool :: " bool \<Rightarrow> bool \<Rightarrow> bool " where fun cast_unit_vec0 :: " bitU \<Rightarrow>(1)Word.word " where " cast_unit_vec0 B0 = ( (vec_of_bits [B0] :: 1 Word.word))" -|" cast_unit_vec0 B1 = ( (vec_of_bits [B1] :: 1 Word.word))" - +|" cast_unit_vec0 _ = ( (vec_of_bits [B1] :: 1 Word.word))" -(*val DecStr : ii -> string*) - -(*val HexStr : ii -> string*) (*val __MIPS_write : forall 'p8_times_n_ . Size 'p8_times_n_ => mword ty64 -> integer -> mword 'p8_times_n_ -> M unit*) definition MIPS_write :: "(64)Word.word \<Rightarrow> int \<Rightarrow>('p8_times_n_::len)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " MIPS_write addr width data = ( - write_ram instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) width + write_ram instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) width (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] :: 64 Word.word) addr data )" -(*val __MIPS_read : forall 'p8_times_n_ . Size 'p8_times_n_ => mword ty64 -> integer -> M (mword 'p8_times_n_)*) +(*val __MIPS_read : forall 'p8_times_n_ . Size 'p8_times_n_ => mword ty64 -> integer -> M (mword 'p8_times_n_)*) definition MIPS_read :: "(64)Word.word \<Rightarrow> int \<Rightarrow>((register_value),(('p8_times_n_::len)Word.word),(exception))monad " where " MIPS_read addr width = ( - (read_ram instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) width + (read_ram instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) width (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] @@ -101,27 +115,22 @@ definition MIPS_read :: "(64)Word.word \<Rightarrow> int \<Rightarrow>((registe definition undefined_exception :: " unit \<Rightarrow>((register_value),(exception),(exception))monad " where " undefined_exception _ = ( - (undefined_unit () \<then> - undefined_string () ) \<bind> (\<lambda> (w__0 :: string) . - ((undefined_unit () \<then> - undefined_unit () ) \<then> - undefined_unit () ) \<then> + undefined_string () \<bind> (\<lambda> (u_0 :: string) . + undefined_unit () \<bind> (\<lambda> (u_1 :: unit) . internal_pick - [ISAException () ,Error_not_implemented w__0,Error_misaligned_access () ,Error_EBREAK () ,Error_internal_error () ]))" + [ISAException u_1,Error_not_implemented u_0,Error_misaligned_access u_1,Error_EBREAK u_1,Error_internal_error u_1])))" -(*val sign_extend : forall 'n 'm . Size 'm, Size 'n => integer -> mword 'n -> mword 'm*) +(*val mips_sign_extend : forall 'n 'm . Size 'm, Size 'n => integer -> mword 'n -> mword 'm*) -(*val zero_extend : forall 'n 'm . Size 'm, Size 'n => integer -> mword 'n -> mword 'm*) +(*val mips_zero_extend : forall 'n 'm . Size 'm, Size 'n => integer -> mword 'n -> mword 'm*) -definition sign_extend1 :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow>('m::len)Word.word " where - " sign_extend1 (m__tv :: int) v = ( (sign_extend0 - instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict v m__tv :: ( 'm::len)Word.word))" +definition mips_sign_extend :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow>('m::len)Word.word " where + " mips_sign_extend (m__tv :: int) v = ( (sign_extend v m__tv :: ( 'm::len)Word.word))" -definition zero_extend1 :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow>('m::len)Word.word " where - " zero_extend1 (m__tv :: int) v = ( (zero_extend0 - instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict v m__tv :: ( 'm::len)Word.word))" +definition mips_zero_extend :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow>('m::len)Word.word " where + " mips_zero_extend (m__tv :: int) v = ( (zero_extend v m__tv :: ( 'm::len)Word.word))" (*val zeros : forall 'n . Size 'n => integer -> unit -> mword 'n*) @@ -136,13 +145,13 @@ definition ones :: " int \<Rightarrow> unit \<Rightarrow>('n::len)Word.word " " ones (n__tv :: int) _ = ( (replicate_bits (vec_of_bits [B1] :: 1 Word.word) n__tv :: ( 'n::len)Word.word))" -(*val zopz0zI_s : forall 'n. Size 'n => mword 'n -> mword 'n -> bool*) +(*val zopz0zI_s : forall 'n . Size 'n => mword 'n -> mword 'n -> bool*) -(*val zopz0zKzJ_s : forall 'n. Size 'n => mword 'n -> mword 'n -> bool*) +(*val zopz0zKzJ_s : forall 'n . Size 'n => mword 'n -> mword 'n -> bool*) -(*val zopz0zI_u : forall 'n. Size 'n => mword 'n -> mword 'n -> bool*) +(*val zopz0zI_u : forall 'n . Size 'n => mword 'n -> mword 'n -> bool*) -(*val zopz0zKzJ_u : forall 'n. Size 'n => mword 'n -> mword 'n -> bool*) +(*val zopz0zKzJ_u : forall 'n . Size 'n => mword 'n -> mword 'n -> bool*) definition zopz0zI_s :: "('n::len)Word.word \<Rightarrow>('n::len)Word.word \<Rightarrow> bool " where " zopz0zI_s x y = ( ((Word.sint x)) < ((Word.sint y)))" @@ -170,7 +179,7 @@ definition bool_to_bits :: " bool \<Rightarrow>(1)Word.word " where fun bit_to_bool :: " bitU \<Rightarrow> bool " where " bit_to_bool B1 = ( True )" -|" bit_to_bool B0 = ( False )" +|" bit_to_bool _ = ( False )" (*val bits_to_bool : mword ty1 -> bool*) @@ -182,12 +191,12 @@ definition bits_to_bool :: "(1)Word.word \<Rightarrow> bool " where (* function{to_bits} converts an integer to a bit vector of given length. If the integer is negative a twos-complement representation is used. If the integer is too large (or too negative) to fit in the requested length then it is truncated to the least significant bits. *) -(*val to_bits : forall 'l. Size 'l => itself 'l -> ii -> mword 'l*) +(*val to_bits : forall 'l . Size 'l => itself 'l -> ii -> mword 'l*) definition to_bits :: "('l::len)itself \<Rightarrow> int \<Rightarrow>('l::len)Word.word " where " to_bits l n = ( (let l = (size_itself_int l) in - (get_slice_int0 instance_Sail_values_Bitvector_Machine_word_mword_dict l n (( 0 :: int)::ii) :: ( 'l::len)Word.word)))" + (get_slice_int0 instance_Sail2_values_Bitvector_Machine_word_mword_dict l n (( 0 :: int)::ii) :: ( 'l::len)Word.word)))" (*val mask : forall 'm 'n . Size 'm, Size 'n => integer -> mword 'm -> mword 'n*) @@ -197,333 +206,245 @@ definition mask0 :: " int \<Rightarrow>('m::len)Word.word \<Rightarrow>('n::len (subrange_vec_dec bs ((n__tv - (( 1 :: int)::ii))) (( 0 :: int)::ii) :: ( 'n::len)Word.word))" -(*val extzv : forall 'n 'm. Size 'm, Size 'n => integer -> mword 'n -> mword 'm*) - -definition extzv :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow>('m::len)Word.word " where - " extzv (m__tv :: int) v = ( (extz_vec m__tv v :: ( 'm::len)Word.word))" - - -(*val extsv : forall 'n 'm. Size 'm, Size 'n => integer -> mword 'n -> mword 'm*) - -definition extsv :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow>('m::len)Word.word " where - " extsv (m__tv :: int) v = ( (exts_vec m__tv v :: ( 'm::len)Word.word))" - - -(*val slice_mask : forall 'n . Size 'n => integer -> ii -> ii -> mword 'n*) - -definition slice_mask :: " int \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('n::len)Word.word " where - " slice_mask (n__tv :: int) i l = ( - (let (one :: 'n bits) = ((extzv n__tv (vec_of_bits [B1] :: 1 Word.word) :: ( 'n::len)Word.word)) in - (shiftl ((sub_vec ((shiftl one l :: ( 'n::len)Word.word)) one :: ( 'n::len)Word.word)) i :: ( 'n::len)Word.word)))" - - -(*val is_zero_subrange : forall 'n . Size 'n => mword 'n -> ii -> ii -> bool*) - -definition is_zero_subrange :: "('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow> bool " where - " is_zero_subrange xs i j = ( - (((and_vec xs ((slice_mask ((int (size xs))) j ((i - j)) :: ( 'n::len)Word.word)) :: ( 'n::len)Word.word)) = ((extzv ((int (size xs))) (vec_of_bits [B0] :: 1 Word.word) :: ( 'n::len)Word.word))))" - - -(*val is_ones_subrange : forall 'n . Size 'n => mword 'n -> ii -> ii -> bool*) - -definition is_ones_subrange :: "('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow> bool " where - " is_ones_subrange xs i j = ( - (let (m :: 'n bits) = ((slice_mask ((int (size xs))) j ((j - i)) :: ( 'n::len)Word.word)) in - (((and_vec xs m :: ( 'n::len)Word.word)) = m)))" - - -(*val slice_slice_concat : forall 'n 'm 'r . Size 'm, Size 'n, Size 'r => integer -> mword 'n -> ii -> ii -> mword 'm -> ii -> ii -> mword 'r*) - -definition slice_slice_concat :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('m::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('r::len)Word.word " where - " slice_slice_concat (r__tv :: int) xs i l ys i' l' = ( - (let xs = - ((shiftr ((and_vec xs ((slice_mask ((int (size xs))) i l :: ( 'n::len)Word.word)) :: ( 'n::len)Word.word)) i :: ( 'n::len)Word.word)) in - (let ys = - ((shiftr ((and_vec ys ((slice_mask ((int (size ys))) i' l' :: ( 'm::len)Word.word)) :: ( 'm::len)Word.word)) i' - :: ( 'm::len)Word.word)) in - (or_vec ((shiftl ((extzv r__tv xs :: ( 'r::len)Word.word)) l' :: ( 'r::len)Word.word)) ((extzv r__tv ys :: ( 'r::len)Word.word)) - :: ( 'r::len)Word.word))))" - - -(*val slice_zeros_concat : forall 'n 'r . Size 'n, Size 'r => integer -> mword 'n -> ii -> integer -> integer -> mword 'r*) - -definition slice_zeros_concat :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('r::len)Word.word " where - " slice_zeros_concat (r__tv :: int) xs i l l' = ( - (let xs = - ((shiftr ((and_vec xs ((slice_mask ((int (size xs))) i l :: ( 'n::len)Word.word)) :: ( 'n::len)Word.word)) i :: ( 'n::len)Word.word)) in - (shiftl ((extzv r__tv xs :: ( 'r::len)Word.word)) l' :: ( 'r::len)Word.word)))" - - -(*val subrange_subrange_eq : forall 'n . Size 'n => mword 'n -> ii -> ii -> mword 'n -> ii -> ii -> bool*) - -definition subrange_subrange_eq :: "('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow> bool " where - " subrange_subrange_eq xs i j ys i' j' = ( - (let xs = - ((shiftr - ((and_vec xs ((slice_mask ((int (size xs))) j ((i - j)) :: ( 'n::len)Word.word)) :: ( 'n::len)Word.word)) j - :: ( 'n::len)Word.word)) in - (let ys = - ((shiftr - ((and_vec ys ((slice_mask ((int (size xs))) j' ((i' - j')) :: ( 'n::len)Word.word)) :: ( 'n::len)Word.word)) - j' - :: ( 'n::len)Word.word)) in - (xs = ys))))" - - -(*val subrange_subrange_concat : forall 'n 'm 's . Size 'm, Size 'n, Size 's => integer -> mword 'n -> integer -> integer -> mword 'm -> integer -> integer -> mword 's*) - -definition subrange_subrange_concat :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('m::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('s::len)Word.word " where - " subrange_subrange_concat (s__tv :: int) xs i j ys i' j' = ( - (let xs = - ((shiftr - ((and_vec xs ((slice_mask ((int (size xs))) j ((i - j)) :: ( 'n::len)Word.word)) :: ( 'n::len)Word.word)) j - :: ( 'n::len)Word.word)) in - (let ys = - ((shiftr - ((and_vec ys ((slice_mask ((int (size ys))) j' ((i' - j')) :: ( 'm::len)Word.word)) :: ( 'm::len)Word.word)) - j' - :: ( 'm::len)Word.word)) in - (or_vec - ((sub_vec_int ((shiftl ((extzv s__tv xs :: ( 's::len)Word.word)) i' :: ( 's::len)Word.word)) - ((j' - (( 1 :: int)::ii))) - :: ( 's::len)Word.word)) ((extzv s__tv ys :: ( 's::len)Word.word)) - :: ( 's::len)Word.word))))" - - -(*val place_subrange : forall 'n 'm . Size 'm, Size 'n => integer -> mword 'n -> ii -> ii -> ii -> mword 'm*) - -definition place_subrange :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('m::len)Word.word " where - " place_subrange (m__tv :: int) xs i j shift = ( - (let xs = - ((shiftr - ((and_vec xs ((slice_mask ((int (size xs))) j ((i - j)) :: ( 'n::len)Word.word)) :: ( 'n::len)Word.word)) j - :: ( 'n::len)Word.word)) in - (shiftl ((extzv m__tv xs :: ( 'm::len)Word.word)) shift :: ( 'm::len)Word.word)))" - - -(*val place_slice : forall 'n 'm . Size 'm, Size 'n => integer -> mword 'n -> ii -> ii -> ii -> mword 'm*) - -definition place_slice :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('m::len)Word.word " where - " place_slice (m__tv :: int) xs i l shift = ( - (let xs = - ((shiftr ((and_vec xs ((slice_mask ((int (size xs))) i l :: ( 'n::len)Word.word)) :: ( 'n::len)Word.word)) i :: ( 'n::len)Word.word)) in - (shiftl ((extzv m__tv xs :: ( 'm::len)Word.word)) shift :: ( 'm::len)Word.word)))" - - -(*val zext_slice : forall 'n 'm . Size 'm, Size 'n => integer -> mword 'n -> ii -> ii -> mword 'm*) - -definition zext_slice :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('m::len)Word.word " where - " zext_slice (m__tv :: int) xs i l = ( - (let xs = - ((shiftr ((and_vec xs ((slice_mask ((int (size xs))) i l :: ( 'n::len)Word.word)) :: ( 'n::len)Word.word)) i :: ( 'n::len)Word.word)) in - (extzv m__tv xs :: ( 'm::len)Word.word)))" - - -(*val sext_slice : forall 'n 'm . Size 'm, Size 'n => integer -> mword 'n -> ii -> ii -> mword 'm*) +(*val undefined_CauseReg : unit -> M CauseReg*) -definition sext_slice :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('m::len)Word.word " where - " sext_slice (m__tv :: int) xs i l = ( - (let xs = - ((arith_shiftr - ((shiftl ((and_vec xs ((slice_mask ((int (size xs))) i l :: ( 'n::len)Word.word)) :: ( 'n::len)Word.word)) - ((((((int (size xs))) - i)) - l)) - :: ( 'n::len)Word.word)) ((((int (size xs))) - l)) - :: ( 'n::len)Word.word)) in - (extsv m__tv xs :: ( 'm::len)Word.word)))" +definition undefined_CauseReg :: " unit \<Rightarrow>((register_value),(CauseReg),(exception))monad " where + " undefined_CauseReg _ = ( + (undefined_bitvector + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 32 :: int)::ii) :: ( 32 Word.word) M) \<bind> (\<lambda> (w__0 :: 32 Word.word) . + return ((| CauseReg_CauseReg_chunk_0 = w__0 |))))" -(*val unsigned_slice : forall 'n . Size 'n => mword 'n -> ii -> ii -> ii*) +(*val Mk_CauseReg : mword ty32 -> CauseReg*) -definition unsigned_slice :: "('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow> int " where - " unsigned_slice xs i l = ( - (let xs = - ((shiftr ((and_vec xs ((slice_mask ((int (size xs))) i l :: ( 'n::len)Word.word)) :: ( 'n::len)Word.word)) i :: ( 'n::len)Word.word)) in - Word.uint xs))" +definition Mk_CauseReg :: "(32)Word.word \<Rightarrow> CauseReg " where + " Mk_CauseReg v = ( + (| CauseReg_CauseReg_chunk_0 = ((subrange_vec_dec v (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) |) )" -(*val unsigned_subrange : forall 'n . Size 'n => mword 'n -> ii -> ii -> ii*) +(*val _get_CauseReg_bits : CauseReg -> mword ty32*) -definition unsigned_subrange :: "('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow> int " where - " unsigned_subrange xs i j = ( - (let xs = - ((shiftr - ((and_vec xs ((slice_mask ((int (size xs))) j ((i - j)) :: ( 'n::len)Word.word)) :: ( 'n::len)Word.word)) i - :: ( 'n::len)Word.word)) in - Word.uint xs))" - - -(*val zext_ones : forall 'n . Size 'n => integer -> ii -> mword 'n*) +definition get_CauseReg_bits :: " CauseReg \<Rightarrow>(32)Word.word " where + " get_CauseReg_bits v = ( + (subrange_vec_dec(CauseReg_CauseReg_chunk_0 v) (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word))" -definition zext_ones :: " int \<Rightarrow> int \<Rightarrow>('n::len)Word.word " where - " zext_ones (n__tv :: int) m = ( - (let (v :: 'n bits) = ((extsv n__tv (vec_of_bits [B1] :: 1 Word.word) :: ( 'n::len)Word.word)) in - (shiftr v ((((int (size v))) - m)) :: ( 'n::len)Word.word)))" - - -(*val undefined_CauseReg : unit -> M CauseReg*) - -definition undefined_CauseReg :: " unit \<Rightarrow>((register_value),(CauseReg),(exception))monad " where - " undefined_CauseReg _ = ( - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 32 :: int)::ii) :: ( 32 Word.word) M) \<bind> (\<lambda> (w__0 :: 32 Word.word) . - internal_pick [Mk_CauseReg w__0]))" +(*val _set_CauseReg_bits : register_ref regstate register_value CauseReg -> mword ty32 -> M unit*) -(*val _get_CauseReg : CauseReg -> mword ty32*) +definition set_CauseReg_bits :: "((regstate),(register_value),(CauseReg))register_ref \<Rightarrow>(32)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where + " set_CauseReg_bits r_ref v = ( + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + CauseReg_CauseReg_chunk_0 := + ((update_subrange_vec_dec(CauseReg_CauseReg_chunk_0 r) (( 31 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec v (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + :: 32 Word.word))|))) in + write_reg r_ref r)))" -fun get_CauseReg :: " CauseReg \<Rightarrow>(32)Word.word " where - " get_CauseReg (Mk_CauseReg (v)) = ( v )" +(*val _update_CauseReg_bits : CauseReg -> mword ty32 -> CauseReg*) -(*val _set_CauseReg : register_ref regstate register_value CauseReg -> mword ty32 -> M unit*) +definition update_CauseReg_bits :: " CauseReg \<Rightarrow>(32)Word.word \<Rightarrow> CauseReg " where + " update_CauseReg_bits v x = ( + (v (| + CauseReg_CauseReg_chunk_0 := + ((update_subrange_vec_dec(CauseReg_CauseReg_chunk_0 v) (( 31 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec x (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + :: 32 Word.word))|)))" -definition set_CauseReg :: "((regstate),(register_value),(CauseReg))register_ref \<Rightarrow>(32)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where - " set_CauseReg r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> r . - (let r = (Mk_CauseReg v) in - write_reg r_ref r)))" +(*val _update_CapCauseReg_bits : CapCauseReg -> mword ty16 -> CapCauseReg*) -(*val _get_CapCauseReg : CapCauseReg -> mword ty16*) +(*val _get_CapCauseReg_bits : CapCauseReg -> mword ty16*) -(*val _set_CapCauseReg : register_ref regstate register_value CapCauseReg -> mword ty16 -> M unit*) +(*val _set_CapCauseReg_bits : register_ref regstate register_value CapCauseReg -> mword ty16 -> M unit*) (*val _get_CauseReg_BD : CauseReg -> mword ty1*) -fun get_CauseReg_BD :: " CauseReg \<Rightarrow>(1)Word.word " where - " get_CauseReg_BD (Mk_CauseReg (v)) = ( (subrange_vec_dec v (( 31 :: int)::ii) (( 31 :: int)::ii) :: 1 Word.word))" +definition get_CauseReg_BD :: " CauseReg \<Rightarrow>(1)Word.word " where + " get_CauseReg_BD v = ( (subrange_vec_dec(CauseReg_CauseReg_chunk_0 v) (( 31 :: int)::ii) (( 31 :: int)::ii) :: 1 Word.word))" (*val _set_CauseReg_BD : register_ref regstate register_value CauseReg -> mword ty1 -> M unit*) definition set_CauseReg_BD :: "((regstate),(register_value),(CauseReg))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_CauseReg_BD r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: CauseReg) . - (let r = ((get_CauseReg w__0 :: 32 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 31 :: int)::ii) (( 31 :: int)::ii) v :: 32 Word.word)) in - write_reg r_ref (Mk_CauseReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + CauseReg_CauseReg_chunk_0 := + ((update_subrange_vec_dec(CauseReg_CauseReg_chunk_0 r) (( 31 :: int)::ii) (( 31 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|))) in + write_reg r_ref r)))" (*val _update_CauseReg_BD : CauseReg -> mword ty1 -> CauseReg*) -fun update_CauseReg_BD :: " CauseReg \<Rightarrow>(1)Word.word \<Rightarrow> CauseReg " where - " update_CauseReg_BD (Mk_CauseReg (v)) x = ( - Mk_CauseReg ((update_subrange_vec_dec v (( 31 :: int)::ii) (( 31 :: int)::ii) x :: 32 Word.word)))" +definition update_CauseReg_BD :: " CauseReg \<Rightarrow>(1)Word.word \<Rightarrow> CauseReg " where + " update_CauseReg_BD v x = ( + (v (| + CauseReg_CauseReg_chunk_0 := + ((update_subrange_vec_dec(CauseReg_CauseReg_chunk_0 v) (( 31 :: int)::ii) (( 31 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|)))" (*val _get_CauseReg_CE : CauseReg -> mword ty2*) -fun get_CauseReg_CE :: " CauseReg \<Rightarrow>(2)Word.word " where - " get_CauseReg_CE (Mk_CauseReg (v)) = ( (subrange_vec_dec v (( 29 :: int)::ii) (( 28 :: int)::ii) :: 2 Word.word))" +definition get_CauseReg_CE :: " CauseReg \<Rightarrow>(2)Word.word " where + " get_CauseReg_CE v = ( (subrange_vec_dec(CauseReg_CauseReg_chunk_0 v) (( 29 :: int)::ii) (( 28 :: int)::ii) :: 2 Word.word))" (*val _set_CauseReg_CE : register_ref regstate register_value CauseReg -> mword ty2 -> M unit*) definition set_CauseReg_CE :: "((regstate),(register_value),(CauseReg))register_ref \<Rightarrow>(2)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_CauseReg_CE r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: CauseReg) . - (let r = ((get_CauseReg w__0 :: 32 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 29 :: int)::ii) (( 28 :: int)::ii) v :: 32 Word.word)) in - write_reg r_ref (Mk_CauseReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + CauseReg_CauseReg_chunk_0 := + ((update_subrange_vec_dec(CauseReg_CauseReg_chunk_0 r) (( 29 :: int)::ii) (( 28 :: int)::ii) + ((subrange_vec_dec v (( 1 :: int)::ii) (( 0 :: int)::ii) :: 2 Word.word)) + :: 32 Word.word))|))) in + write_reg r_ref r)))" (*val _update_CauseReg_CE : CauseReg -> mword ty2 -> CauseReg*) -fun update_CauseReg_CE :: " CauseReg \<Rightarrow>(2)Word.word \<Rightarrow> CauseReg " where - " update_CauseReg_CE (Mk_CauseReg (v)) x = ( - Mk_CauseReg ((update_subrange_vec_dec v (( 29 :: int)::ii) (( 28 :: int)::ii) x :: 32 Word.word)))" +definition update_CauseReg_CE :: " CauseReg \<Rightarrow>(2)Word.word \<Rightarrow> CauseReg " where + " update_CauseReg_CE v x = ( + (v (| + CauseReg_CauseReg_chunk_0 := + ((update_subrange_vec_dec(CauseReg_CauseReg_chunk_0 v) (( 29 :: int)::ii) (( 28 :: int)::ii) + ((subrange_vec_dec x (( 1 :: int)::ii) (( 0 :: int)::ii) :: 2 Word.word)) + :: 32 Word.word))|)))" (*val _get_CauseReg_IV : CauseReg -> mword ty1*) -fun get_CauseReg_IV :: " CauseReg \<Rightarrow>(1)Word.word " where - " get_CauseReg_IV (Mk_CauseReg (v)) = ( (subrange_vec_dec v (( 23 :: int)::ii) (( 23 :: int)::ii) :: 1 Word.word))" +definition get_CauseReg_IV :: " CauseReg \<Rightarrow>(1)Word.word " where + " get_CauseReg_IV v = ( (subrange_vec_dec(CauseReg_CauseReg_chunk_0 v) (( 23 :: int)::ii) (( 23 :: int)::ii) :: 1 Word.word))" (*val _set_CauseReg_IV : register_ref regstate register_value CauseReg -> mword ty1 -> M unit*) definition set_CauseReg_IV :: "((regstate),(register_value),(CauseReg))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_CauseReg_IV r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: CauseReg) . - (let r = ((get_CauseReg w__0 :: 32 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 23 :: int)::ii) (( 23 :: int)::ii) v :: 32 Word.word)) in - write_reg r_ref (Mk_CauseReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + CauseReg_CauseReg_chunk_0 := + ((update_subrange_vec_dec(CauseReg_CauseReg_chunk_0 r) (( 23 :: int)::ii) (( 23 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|))) in + write_reg r_ref r)))" (*val _update_CauseReg_IV : CauseReg -> mword ty1 -> CauseReg*) -fun update_CauseReg_IV :: " CauseReg \<Rightarrow>(1)Word.word \<Rightarrow> CauseReg " where - " update_CauseReg_IV (Mk_CauseReg (v)) x = ( - Mk_CauseReg ((update_subrange_vec_dec v (( 23 :: int)::ii) (( 23 :: int)::ii) x :: 32 Word.word)))" +definition update_CauseReg_IV :: " CauseReg \<Rightarrow>(1)Word.word \<Rightarrow> CauseReg " where + " update_CauseReg_IV v x = ( + (v (| + CauseReg_CauseReg_chunk_0 := + ((update_subrange_vec_dec(CauseReg_CauseReg_chunk_0 v) (( 23 :: int)::ii) (( 23 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|)))" (*val _get_CauseReg_WP : CauseReg -> mword ty1*) -fun get_CauseReg_WP :: " CauseReg \<Rightarrow>(1)Word.word " where - " get_CauseReg_WP (Mk_CauseReg (v)) = ( (subrange_vec_dec v (( 22 :: int)::ii) (( 22 :: int)::ii) :: 1 Word.word))" +definition get_CauseReg_WP :: " CauseReg \<Rightarrow>(1)Word.word " where + " get_CauseReg_WP v = ( (subrange_vec_dec(CauseReg_CauseReg_chunk_0 v) (( 22 :: int)::ii) (( 22 :: int)::ii) :: 1 Word.word))" (*val _set_CauseReg_WP : register_ref regstate register_value CauseReg -> mword ty1 -> M unit*) definition set_CauseReg_WP :: "((regstate),(register_value),(CauseReg))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_CauseReg_WP r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: CauseReg) . - (let r = ((get_CauseReg w__0 :: 32 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 22 :: int)::ii) (( 22 :: int)::ii) v :: 32 Word.word)) in - write_reg r_ref (Mk_CauseReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + CauseReg_CauseReg_chunk_0 := + ((update_subrange_vec_dec(CauseReg_CauseReg_chunk_0 r) (( 22 :: int)::ii) (( 22 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|))) in + write_reg r_ref r)))" (*val _update_CauseReg_WP : CauseReg -> mword ty1 -> CauseReg*) -fun update_CauseReg_WP :: " CauseReg \<Rightarrow>(1)Word.word \<Rightarrow> CauseReg " where - " update_CauseReg_WP (Mk_CauseReg (v)) x = ( - Mk_CauseReg ((update_subrange_vec_dec v (( 22 :: int)::ii) (( 22 :: int)::ii) x :: 32 Word.word)))" +definition update_CauseReg_WP :: " CauseReg \<Rightarrow>(1)Word.word \<Rightarrow> CauseReg " where + " update_CauseReg_WP v x = ( + (v (| + CauseReg_CauseReg_chunk_0 := + ((update_subrange_vec_dec(CauseReg_CauseReg_chunk_0 v) (( 22 :: int)::ii) (( 22 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|)))" (*val _get_CauseReg_IP : CauseReg -> mword ty8*) -fun get_CauseReg_IP :: " CauseReg \<Rightarrow>(8)Word.word " where - " get_CauseReg_IP (Mk_CauseReg (v)) = ( (subrange_vec_dec v (( 15 :: int)::ii) (( 8 :: int)::ii) :: 8 Word.word))" +definition get_CauseReg_IP :: " CauseReg \<Rightarrow>(8)Word.word " where + " get_CauseReg_IP v = ( (subrange_vec_dec(CauseReg_CauseReg_chunk_0 v) (( 15 :: int)::ii) (( 8 :: int)::ii) :: 8 Word.word))" (*val _set_CauseReg_IP : register_ref regstate register_value CauseReg -> mword ty8 -> M unit*) definition set_CauseReg_IP :: "((regstate),(register_value),(CauseReg))register_ref \<Rightarrow>(8)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_CauseReg_IP r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: CauseReg) . - (let r = ((get_CauseReg w__0 :: 32 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 15 :: int)::ii) (( 8 :: int)::ii) v :: 32 Word.word)) in - write_reg r_ref (Mk_CauseReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + CauseReg_CauseReg_chunk_0 := + ((update_subrange_vec_dec(CauseReg_CauseReg_chunk_0 r) (( 15 :: int)::ii) (( 8 :: int)::ii) + ((subrange_vec_dec v (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word)) + :: 32 Word.word))|))) in + write_reg r_ref r)))" (*val _update_CauseReg_IP : CauseReg -> mword ty8 -> CauseReg*) -fun update_CauseReg_IP :: " CauseReg \<Rightarrow>(8)Word.word \<Rightarrow> CauseReg " where - " update_CauseReg_IP (Mk_CauseReg (v)) x = ( - Mk_CauseReg ((update_subrange_vec_dec v (( 15 :: int)::ii) (( 8 :: int)::ii) x :: 32 Word.word)))" +definition update_CauseReg_IP :: " CauseReg \<Rightarrow>(8)Word.word \<Rightarrow> CauseReg " where + " update_CauseReg_IP v x = ( + (v (| + CauseReg_CauseReg_chunk_0 := + ((update_subrange_vec_dec(CauseReg_CauseReg_chunk_0 v) (( 15 :: int)::ii) (( 8 :: int)::ii) + ((subrange_vec_dec x (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word)) + :: 32 Word.word))|)))" (*val _get_CauseReg_ExcCode : CauseReg -> mword ty5*) -fun get_CauseReg_ExcCode :: " CauseReg \<Rightarrow>(5)Word.word " where - " get_CauseReg_ExcCode (Mk_CauseReg (v)) = ( (subrange_vec_dec v (( 6 :: int)::ii) (( 2 :: int)::ii) :: 5 Word.word))" +definition get_CauseReg_ExcCode :: " CauseReg \<Rightarrow>(5)Word.word " where + " get_CauseReg_ExcCode v = ( + (subrange_vec_dec(CauseReg_CauseReg_chunk_0 v) (( 6 :: int)::ii) (( 2 :: int)::ii) :: 5 Word.word))" (*val _set_CauseReg_ExcCode : register_ref regstate register_value CauseReg -> mword ty5 -> M unit*) definition set_CauseReg_ExcCode :: "((regstate),(register_value),(CauseReg))register_ref \<Rightarrow>(5)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_CauseReg_ExcCode r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: CauseReg) . - (let r = ((get_CauseReg w__0 :: 32 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 6 :: int)::ii) (( 2 :: int)::ii) v :: 32 Word.word)) in - write_reg r_ref (Mk_CauseReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + CauseReg_CauseReg_chunk_0 := + ((update_subrange_vec_dec(CauseReg_CauseReg_chunk_0 r) (( 6 :: int)::ii) (( 2 :: int)::ii) + ((subrange_vec_dec v (( 4 :: int)::ii) (( 0 :: int)::ii) :: 5 Word.word)) + :: 32 Word.word))|))) in + write_reg r_ref r)))" (*val _update_CauseReg_ExcCode : CauseReg -> mword ty5 -> CauseReg*) -fun update_CauseReg_ExcCode :: " CauseReg \<Rightarrow>(5)Word.word \<Rightarrow> CauseReg " where - " update_CauseReg_ExcCode (Mk_CauseReg (v)) x = ( - Mk_CauseReg ((update_subrange_vec_dec v (( 6 :: int)::ii) (( 2 :: int)::ii) x :: 32 Word.word)))" +definition update_CauseReg_ExcCode :: " CauseReg \<Rightarrow>(5)Word.word \<Rightarrow> CauseReg " where + " update_CauseReg_ExcCode v x = ( + (v (| + CauseReg_CauseReg_chunk_0 := + ((update_subrange_vec_dec(CauseReg_CauseReg_chunk_0 v) (( 6 :: int)::ii) (( 2 :: int)::ii) + ((subrange_vec_dec x (( 4 :: int)::ii) (( 0 :: int)::ii) :: 5 Word.word)) + :: 32 Word.word))|)))" (*val _update_CapCauseReg_ExcCode : CapCauseReg -> mword ty8 -> CapCauseReg*) @@ -537,187 +458,271 @@ fun update_CauseReg_ExcCode :: " CauseReg \<Rightarrow>(5)Word.word \<Rightarro definition undefined_TLBEntryLoReg :: " unit \<Rightarrow>((register_value),(TLBEntryLoReg),(exception))monad " where " undefined_TLBEntryLoReg _ = ( (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - internal_pick [Mk_TLBEntryLoReg w__0]))" + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . + return ((| TLBEntryLoReg_TLBEntryLoReg_chunk_0 = w__0 |))))" + + +(*val Mk_TLBEntryLoReg : mword ty64 -> TLBEntryLoReg*) + +definition Mk_TLBEntryLoReg :: "(64)Word.word \<Rightarrow> TLBEntryLoReg " where + " Mk_TLBEntryLoReg v = ( + (| TLBEntryLoReg_TLBEntryLoReg_chunk_0 = ((subrange_vec_dec v (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word)) |) )" -(*val _get_TLBEntryLoReg : TLBEntryLoReg -> mword ty64*) +(*val _get_TLBEntryLoReg_bits : TLBEntryLoReg -> mword ty64*) -fun get_TLBEntryLoReg :: " TLBEntryLoReg \<Rightarrow>(64)Word.word " where - " get_TLBEntryLoReg (Mk_TLBEntryLoReg (v)) = ( v )" +definition get_TLBEntryLoReg_bits :: " TLBEntryLoReg \<Rightarrow>(64)Word.word " where + " get_TLBEntryLoReg_bits v = ( + (subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 v) (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word))" -(*val _set_TLBEntryLoReg : register_ref regstate register_value TLBEntryLoReg -> mword ty64 -> M unit*) +(*val _set_TLBEntryLoReg_bits : register_ref regstate register_value TLBEntryLoReg -> mword ty64 -> M unit*) -definition set_TLBEntryLoReg :: "((regstate),(register_value),(TLBEntryLoReg))register_ref \<Rightarrow>(64)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where - " set_TLBEntryLoReg r_ref v = ( +definition set_TLBEntryLoReg_bits :: "((regstate),(register_value),(TLBEntryLoReg))register_ref \<Rightarrow>(64)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where + " set_TLBEntryLoReg_bits r_ref v = ( reg_deref r_ref \<bind> (\<lambda> r . - (let r = (Mk_TLBEntryLoReg v) in + (let r = + ((r (| + TLBEntryLoReg_TLBEntryLoReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 r) (( 63 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec v (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word)) + :: 64 Word.word))|))) in write_reg r_ref r)))" +(*val _update_TLBEntryLoReg_bits : TLBEntryLoReg -> mword ty64 -> TLBEntryLoReg*) + +definition update_TLBEntryLoReg_bits :: " TLBEntryLoReg \<Rightarrow>(64)Word.word \<Rightarrow> TLBEntryLoReg " where + " update_TLBEntryLoReg_bits v x = ( + (v (| + TLBEntryLoReg_TLBEntryLoReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 v) (( 63 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec x (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word)) + :: 64 Word.word))|)))" + + (*val _get_TLBEntryLoReg_CapS : TLBEntryLoReg -> mword ty1*) -fun get_TLBEntryLoReg_CapS :: " TLBEntryLoReg \<Rightarrow>(1)Word.word " where - " get_TLBEntryLoReg_CapS (Mk_TLBEntryLoReg (v)) = ( - (subrange_vec_dec v (( 63 :: int)::ii) (( 63 :: int)::ii) :: 1 Word.word))" +definition get_TLBEntryLoReg_CapS :: " TLBEntryLoReg \<Rightarrow>(1)Word.word " where + " get_TLBEntryLoReg_CapS v = ( + (subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 v) (( 63 :: int)::ii) (( 63 :: int)::ii) :: 1 Word.word))" (*val _set_TLBEntryLoReg_CapS : register_ref regstate register_value TLBEntryLoReg -> mword ty1 -> M unit*) definition set_TLBEntryLoReg_CapS :: "((regstate),(register_value),(TLBEntryLoReg))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntryLoReg_CapS r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntryLoReg) . - (let r = ((get_TLBEntryLoReg w__0 :: 64 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 63 :: int)::ii) (( 63 :: int)::ii) v :: 64 Word.word)) in - write_reg r_ref (Mk_TLBEntryLoReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntryLoReg_TLBEntryLoReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 r) (( 63 :: int)::ii) (( 63 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntryLoReg_CapS : TLBEntryLoReg -> mword ty1 -> TLBEntryLoReg*) -fun update_TLBEntryLoReg_CapS :: " TLBEntryLoReg \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntryLoReg " where - " update_TLBEntryLoReg_CapS (Mk_TLBEntryLoReg (v)) x = ( - Mk_TLBEntryLoReg ((update_subrange_vec_dec v (( 63 :: int)::ii) (( 63 :: int)::ii) x :: 64 Word.word)))" +definition update_TLBEntryLoReg_CapS :: " TLBEntryLoReg \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntryLoReg " where + " update_TLBEntryLoReg_CapS v x = ( + (v (| + TLBEntryLoReg_TLBEntryLoReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 v) (( 63 :: int)::ii) (( 63 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntryLoReg_CapL : TLBEntryLoReg -> mword ty1*) -fun get_TLBEntryLoReg_CapL :: " TLBEntryLoReg \<Rightarrow>(1)Word.word " where - " get_TLBEntryLoReg_CapL (Mk_TLBEntryLoReg (v)) = ( - (subrange_vec_dec v (( 62 :: int)::ii) (( 62 :: int)::ii) :: 1 Word.word))" +definition get_TLBEntryLoReg_CapL :: " TLBEntryLoReg \<Rightarrow>(1)Word.word " where + " get_TLBEntryLoReg_CapL v = ( + (subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 v) (( 62 :: int)::ii) (( 62 :: int)::ii) :: 1 Word.word))" (*val _set_TLBEntryLoReg_CapL : register_ref regstate register_value TLBEntryLoReg -> mword ty1 -> M unit*) definition set_TLBEntryLoReg_CapL :: "((regstate),(register_value),(TLBEntryLoReg))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntryLoReg_CapL r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntryLoReg) . - (let r = ((get_TLBEntryLoReg w__0 :: 64 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 62 :: int)::ii) (( 62 :: int)::ii) v :: 64 Word.word)) in - write_reg r_ref (Mk_TLBEntryLoReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntryLoReg_TLBEntryLoReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 r) (( 62 :: int)::ii) (( 62 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntryLoReg_CapL : TLBEntryLoReg -> mword ty1 -> TLBEntryLoReg*) -fun update_TLBEntryLoReg_CapL :: " TLBEntryLoReg \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntryLoReg " where - " update_TLBEntryLoReg_CapL (Mk_TLBEntryLoReg (v)) x = ( - Mk_TLBEntryLoReg ((update_subrange_vec_dec v (( 62 :: int)::ii) (( 62 :: int)::ii) x :: 64 Word.word)))" +definition update_TLBEntryLoReg_CapL :: " TLBEntryLoReg \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntryLoReg " where + " update_TLBEntryLoReg_CapL v x = ( + (v (| + TLBEntryLoReg_TLBEntryLoReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 v) (( 62 :: int)::ii) (( 62 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntryLoReg_PFN : TLBEntryLoReg -> mword ty24*) -fun get_TLBEntryLoReg_PFN :: " TLBEntryLoReg \<Rightarrow>(24)Word.word " where - " get_TLBEntryLoReg_PFN (Mk_TLBEntryLoReg (v)) = ( - (subrange_vec_dec v (( 29 :: int)::ii) (( 6 :: int)::ii) :: 24 Word.word))" +definition get_TLBEntryLoReg_PFN :: " TLBEntryLoReg \<Rightarrow>(24)Word.word " where + " get_TLBEntryLoReg_PFN v = ( + (subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 v) (( 29 :: int)::ii) (( 6 :: int)::ii) :: 24 Word.word))" (*val _set_TLBEntryLoReg_PFN : register_ref regstate register_value TLBEntryLoReg -> mword ty24 -> M unit*) definition set_TLBEntryLoReg_PFN :: "((regstate),(register_value),(TLBEntryLoReg))register_ref \<Rightarrow>(24)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntryLoReg_PFN r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntryLoReg) . - (let r = ((get_TLBEntryLoReg w__0 :: 64 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 29 :: int)::ii) (( 6 :: int)::ii) v :: 64 Word.word)) in - write_reg r_ref (Mk_TLBEntryLoReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntryLoReg_TLBEntryLoReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 r) (( 29 :: int)::ii) (( 6 :: int)::ii) + ((subrange_vec_dec v (( 23 :: int)::ii) (( 0 :: int)::ii) :: 24 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntryLoReg_PFN : TLBEntryLoReg -> mword ty24 -> TLBEntryLoReg*) -fun update_TLBEntryLoReg_PFN :: " TLBEntryLoReg \<Rightarrow>(24)Word.word \<Rightarrow> TLBEntryLoReg " where - " update_TLBEntryLoReg_PFN (Mk_TLBEntryLoReg (v)) x = ( - Mk_TLBEntryLoReg ((update_subrange_vec_dec v (( 29 :: int)::ii) (( 6 :: int)::ii) x :: 64 Word.word)))" +definition update_TLBEntryLoReg_PFN :: " TLBEntryLoReg \<Rightarrow>(24)Word.word \<Rightarrow> TLBEntryLoReg " where + " update_TLBEntryLoReg_PFN v x = ( + (v (| + TLBEntryLoReg_TLBEntryLoReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 v) (( 29 :: int)::ii) (( 6 :: int)::ii) + ((subrange_vec_dec x (( 23 :: int)::ii) (( 0 :: int)::ii) :: 24 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntryLoReg_C : TLBEntryLoReg -> mword ty3*) -fun get_TLBEntryLoReg_C :: " TLBEntryLoReg \<Rightarrow>(3)Word.word " where - " get_TLBEntryLoReg_C (Mk_TLBEntryLoReg (v)) = ( (subrange_vec_dec v (( 5 :: int)::ii) (( 3 :: int)::ii) :: 3 Word.word))" +definition get_TLBEntryLoReg_C :: " TLBEntryLoReg \<Rightarrow>(3)Word.word " where + " get_TLBEntryLoReg_C v = ( + (subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 v) (( 5 :: int)::ii) (( 3 :: int)::ii) :: 3 Word.word))" (*val _set_TLBEntryLoReg_C : register_ref regstate register_value TLBEntryLoReg -> mword ty3 -> M unit*) definition set_TLBEntryLoReg_C :: "((regstate),(register_value),(TLBEntryLoReg))register_ref \<Rightarrow>(3)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntryLoReg_C r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntryLoReg) . - (let r = ((get_TLBEntryLoReg w__0 :: 64 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 5 :: int)::ii) (( 3 :: int)::ii) v :: 64 Word.word)) in - write_reg r_ref (Mk_TLBEntryLoReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntryLoReg_TLBEntryLoReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 r) (( 5 :: int)::ii) (( 3 :: int)::ii) + ((subrange_vec_dec v (( 2 :: int)::ii) (( 0 :: int)::ii) :: 3 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntryLoReg_C : TLBEntryLoReg -> mword ty3 -> TLBEntryLoReg*) -fun update_TLBEntryLoReg_C :: " TLBEntryLoReg \<Rightarrow>(3)Word.word \<Rightarrow> TLBEntryLoReg " where - " update_TLBEntryLoReg_C (Mk_TLBEntryLoReg (v)) x = ( - Mk_TLBEntryLoReg ((update_subrange_vec_dec v (( 5 :: int)::ii) (( 3 :: int)::ii) x :: 64 Word.word)))" +definition update_TLBEntryLoReg_C :: " TLBEntryLoReg \<Rightarrow>(3)Word.word \<Rightarrow> TLBEntryLoReg " where + " update_TLBEntryLoReg_C v x = ( + (v (| + TLBEntryLoReg_TLBEntryLoReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 v) (( 5 :: int)::ii) (( 3 :: int)::ii) + ((subrange_vec_dec x (( 2 :: int)::ii) (( 0 :: int)::ii) :: 3 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntryLoReg_D : TLBEntryLoReg -> mword ty1*) -fun get_TLBEntryLoReg_D :: " TLBEntryLoReg \<Rightarrow>(1)Word.word " where - " get_TLBEntryLoReg_D (Mk_TLBEntryLoReg (v)) = ( (subrange_vec_dec v (( 2 :: int)::ii) (( 2 :: int)::ii) :: 1 Word.word))" +definition get_TLBEntryLoReg_D :: " TLBEntryLoReg \<Rightarrow>(1)Word.word " where + " get_TLBEntryLoReg_D v = ( + (subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 v) (( 2 :: int)::ii) (( 2 :: int)::ii) :: 1 Word.word))" (*val _set_TLBEntryLoReg_D : register_ref regstate register_value TLBEntryLoReg -> mword ty1 -> M unit*) definition set_TLBEntryLoReg_D :: "((regstate),(register_value),(TLBEntryLoReg))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntryLoReg_D r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntryLoReg) . - (let r = ((get_TLBEntryLoReg w__0 :: 64 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 2 :: int)::ii) (( 2 :: int)::ii) v :: 64 Word.word)) in - write_reg r_ref (Mk_TLBEntryLoReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntryLoReg_TLBEntryLoReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 r) (( 2 :: int)::ii) (( 2 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntryLoReg_D : TLBEntryLoReg -> mword ty1 -> TLBEntryLoReg*) -fun update_TLBEntryLoReg_D :: " TLBEntryLoReg \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntryLoReg " where - " update_TLBEntryLoReg_D (Mk_TLBEntryLoReg (v)) x = ( - Mk_TLBEntryLoReg ((update_subrange_vec_dec v (( 2 :: int)::ii) (( 2 :: int)::ii) x :: 64 Word.word)))" +definition update_TLBEntryLoReg_D :: " TLBEntryLoReg \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntryLoReg " where + " update_TLBEntryLoReg_D v x = ( + (v (| + TLBEntryLoReg_TLBEntryLoReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 v) (( 2 :: int)::ii) (( 2 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntryLoReg_V : TLBEntryLoReg -> mword ty1*) -fun get_TLBEntryLoReg_V :: " TLBEntryLoReg \<Rightarrow>(1)Word.word " where - " get_TLBEntryLoReg_V (Mk_TLBEntryLoReg (v)) = ( (subrange_vec_dec v (( 1 :: int)::ii) (( 1 :: int)::ii) :: 1 Word.word))" +definition get_TLBEntryLoReg_V :: " TLBEntryLoReg \<Rightarrow>(1)Word.word " where + " get_TLBEntryLoReg_V v = ( + (subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 v) (( 1 :: int)::ii) (( 1 :: int)::ii) :: 1 Word.word))" (*val _set_TLBEntryLoReg_V : register_ref regstate register_value TLBEntryLoReg -> mword ty1 -> M unit*) definition set_TLBEntryLoReg_V :: "((regstate),(register_value),(TLBEntryLoReg))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntryLoReg_V r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntryLoReg) . - (let r = ((get_TLBEntryLoReg w__0 :: 64 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 1 :: int)::ii) (( 1 :: int)::ii) v :: 64 Word.word)) in - write_reg r_ref (Mk_TLBEntryLoReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntryLoReg_TLBEntryLoReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 r) (( 1 :: int)::ii) (( 1 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntryLoReg_V : TLBEntryLoReg -> mword ty1 -> TLBEntryLoReg*) -fun update_TLBEntryLoReg_V :: " TLBEntryLoReg \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntryLoReg " where - " update_TLBEntryLoReg_V (Mk_TLBEntryLoReg (v)) x = ( - Mk_TLBEntryLoReg ((update_subrange_vec_dec v (( 1 :: int)::ii) (( 1 :: int)::ii) x :: 64 Word.word)))" +definition update_TLBEntryLoReg_V :: " TLBEntryLoReg \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntryLoReg " where + " update_TLBEntryLoReg_V v x = ( + (v (| + TLBEntryLoReg_TLBEntryLoReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 v) (( 1 :: int)::ii) (( 1 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntryLoReg_G : TLBEntryLoReg -> mword ty1*) -fun get_TLBEntryLoReg_G :: " TLBEntryLoReg \<Rightarrow>(1)Word.word " where - " get_TLBEntryLoReg_G (Mk_TLBEntryLoReg (v)) = ( (subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word))" +definition get_TLBEntryLoReg_G :: " TLBEntryLoReg \<Rightarrow>(1)Word.word " where + " get_TLBEntryLoReg_G v = ( + (subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 v) (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word))" (*val _set_TLBEntryLoReg_G : register_ref regstate register_value TLBEntryLoReg -> mword ty1 -> M unit*) definition set_TLBEntryLoReg_G :: "((regstate),(register_value),(TLBEntryLoReg))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntryLoReg_G r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntryLoReg) . - (let r = ((get_TLBEntryLoReg w__0 :: 64 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 0 :: int)::ii) (( 0 :: int)::ii) v :: 64 Word.word)) in - write_reg r_ref (Mk_TLBEntryLoReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntryLoReg_TLBEntryLoReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 r) (( 0 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntryLoReg_G : TLBEntryLoReg -> mword ty1 -> TLBEntryLoReg*) -fun update_TLBEntryLoReg_G :: " TLBEntryLoReg \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntryLoReg " where - " update_TLBEntryLoReg_G (Mk_TLBEntryLoReg (v)) x = ( - Mk_TLBEntryLoReg ((update_subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) x :: 64 Word.word)))" +definition update_TLBEntryLoReg_G :: " TLBEntryLoReg \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntryLoReg " where + " update_TLBEntryLoReg_G v x = ( + (v (| + TLBEntryLoReg_TLBEntryLoReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryLoReg_TLBEntryLoReg_chunk_0 v) (( 0 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|)))" (*val undefined_TLBEntryHiReg : unit -> M TLBEntryHiReg*) @@ -725,93 +730,143 @@ fun update_TLBEntryLoReg_G :: " TLBEntryLoReg \<Rightarrow>(1)Word.word \<Right definition undefined_TLBEntryHiReg :: " unit \<Rightarrow>((register_value),(TLBEntryHiReg),(exception))monad " where " undefined_TLBEntryHiReg _ = ( (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - internal_pick [Mk_TLBEntryHiReg w__0]))" + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . + return ((| TLBEntryHiReg_TLBEntryHiReg_chunk_0 = w__0 |))))" + + +(*val Mk_TLBEntryHiReg : mword ty64 -> TLBEntryHiReg*) +definition Mk_TLBEntryHiReg :: "(64)Word.word \<Rightarrow> TLBEntryHiReg " where + " Mk_TLBEntryHiReg v = ( + (| TLBEntryHiReg_TLBEntryHiReg_chunk_0 = ((subrange_vec_dec v (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word)) |) )" -(*val _get_TLBEntryHiReg : TLBEntryHiReg -> mword ty64*) -fun get_TLBEntryHiReg :: " TLBEntryHiReg \<Rightarrow>(64)Word.word " where - " get_TLBEntryHiReg (Mk_TLBEntryHiReg (v)) = ( v )" +(*val _get_TLBEntryHiReg_bits : TLBEntryHiReg -> mword ty64*) +definition get_TLBEntryHiReg_bits :: " TLBEntryHiReg \<Rightarrow>(64)Word.word " where + " get_TLBEntryHiReg_bits v = ( + (subrange_vec_dec(TLBEntryHiReg_TLBEntryHiReg_chunk_0 v) (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word))" -(*val _set_TLBEntryHiReg : register_ref regstate register_value TLBEntryHiReg -> mword ty64 -> M unit*) -definition set_TLBEntryHiReg :: "((regstate),(register_value),(TLBEntryHiReg))register_ref \<Rightarrow>(64)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where - " set_TLBEntryHiReg r_ref v = ( +(*val _set_TLBEntryHiReg_bits : register_ref regstate register_value TLBEntryHiReg -> mword ty64 -> M unit*) + +definition set_TLBEntryHiReg_bits :: "((regstate),(register_value),(TLBEntryHiReg))register_ref \<Rightarrow>(64)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where + " set_TLBEntryHiReg_bits r_ref v = ( reg_deref r_ref \<bind> (\<lambda> r . - (let r = (Mk_TLBEntryHiReg v) in + (let r = + ((r (| + TLBEntryHiReg_TLBEntryHiReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryHiReg_TLBEntryHiReg_chunk_0 r) (( 63 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec v (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word)) + :: 64 Word.word))|))) in write_reg r_ref r)))" +(*val _update_TLBEntryHiReg_bits : TLBEntryHiReg -> mword ty64 -> TLBEntryHiReg*) + +definition update_TLBEntryHiReg_bits :: " TLBEntryHiReg \<Rightarrow>(64)Word.word \<Rightarrow> TLBEntryHiReg " where + " update_TLBEntryHiReg_bits v x = ( + (v (| + TLBEntryHiReg_TLBEntryHiReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryHiReg_TLBEntryHiReg_chunk_0 v) (( 63 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec x (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word)) + :: 64 Word.word))|)))" + + (*val _get_TLBEntryHiReg_R : TLBEntryHiReg -> mword ty2*) -fun get_TLBEntryHiReg_R :: " TLBEntryHiReg \<Rightarrow>(2)Word.word " where - " get_TLBEntryHiReg_R (Mk_TLBEntryHiReg (v)) = ( (subrange_vec_dec v (( 63 :: int)::ii) (( 62 :: int)::ii) :: 2 Word.word))" +definition get_TLBEntryHiReg_R :: " TLBEntryHiReg \<Rightarrow>(2)Word.word " where + " get_TLBEntryHiReg_R v = ( + (subrange_vec_dec(TLBEntryHiReg_TLBEntryHiReg_chunk_0 v) (( 63 :: int)::ii) (( 62 :: int)::ii) :: 2 Word.word))" (*val _set_TLBEntryHiReg_R : register_ref regstate register_value TLBEntryHiReg -> mword ty2 -> M unit*) definition set_TLBEntryHiReg_R :: "((regstate),(register_value),(TLBEntryHiReg))register_ref \<Rightarrow>(2)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntryHiReg_R r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntryHiReg) . - (let r = ((get_TLBEntryHiReg w__0 :: 64 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 63 :: int)::ii) (( 62 :: int)::ii) v :: 64 Word.word)) in - write_reg r_ref (Mk_TLBEntryHiReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntryHiReg_TLBEntryHiReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryHiReg_TLBEntryHiReg_chunk_0 r) (( 63 :: int)::ii) (( 62 :: int)::ii) + ((subrange_vec_dec v (( 1 :: int)::ii) (( 0 :: int)::ii) :: 2 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntryHiReg_R : TLBEntryHiReg -> mword ty2 -> TLBEntryHiReg*) -fun update_TLBEntryHiReg_R :: " TLBEntryHiReg \<Rightarrow>(2)Word.word \<Rightarrow> TLBEntryHiReg " where - " update_TLBEntryHiReg_R (Mk_TLBEntryHiReg (v)) x = ( - Mk_TLBEntryHiReg ((update_subrange_vec_dec v (( 63 :: int)::ii) (( 62 :: int)::ii) x :: 64 Word.word)))" +definition update_TLBEntryHiReg_R :: " TLBEntryHiReg \<Rightarrow>(2)Word.word \<Rightarrow> TLBEntryHiReg " where + " update_TLBEntryHiReg_R v x = ( + (v (| + TLBEntryHiReg_TLBEntryHiReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryHiReg_TLBEntryHiReg_chunk_0 v) (( 63 :: int)::ii) (( 62 :: int)::ii) + ((subrange_vec_dec x (( 1 :: int)::ii) (( 0 :: int)::ii) :: 2 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntryHiReg_VPN2 : TLBEntryHiReg -> mword ty27*) -fun get_TLBEntryHiReg_VPN2 :: " TLBEntryHiReg \<Rightarrow>(27)Word.word " where - " get_TLBEntryHiReg_VPN2 (Mk_TLBEntryHiReg (v)) = ( - (subrange_vec_dec v (( 39 :: int)::ii) (( 13 :: int)::ii) :: 27 Word.word))" +definition get_TLBEntryHiReg_VPN2 :: " TLBEntryHiReg \<Rightarrow>(27)Word.word " where + " get_TLBEntryHiReg_VPN2 v = ( + (subrange_vec_dec(TLBEntryHiReg_TLBEntryHiReg_chunk_0 v) (( 39 :: int)::ii) (( 13 :: int)::ii) :: 27 Word.word))" (*val _set_TLBEntryHiReg_VPN2 : register_ref regstate register_value TLBEntryHiReg -> mword ty27 -> M unit*) definition set_TLBEntryHiReg_VPN2 :: "((regstate),(register_value),(TLBEntryHiReg))register_ref \<Rightarrow>(27)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntryHiReg_VPN2 r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntryHiReg) . - (let r = ((get_TLBEntryHiReg w__0 :: 64 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 39 :: int)::ii) (( 13 :: int)::ii) v :: 64 Word.word)) in - write_reg r_ref (Mk_TLBEntryHiReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntryHiReg_TLBEntryHiReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryHiReg_TLBEntryHiReg_chunk_0 r) (( 39 :: int)::ii) (( 13 :: int)::ii) + ((subrange_vec_dec v (( 26 :: int)::ii) (( 0 :: int)::ii) :: 27 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntryHiReg_VPN2 : TLBEntryHiReg -> mword ty27 -> TLBEntryHiReg*) -fun update_TLBEntryHiReg_VPN2 :: " TLBEntryHiReg \<Rightarrow>(27)Word.word \<Rightarrow> TLBEntryHiReg " where - " update_TLBEntryHiReg_VPN2 (Mk_TLBEntryHiReg (v)) x = ( - Mk_TLBEntryHiReg ((update_subrange_vec_dec v (( 39 :: int)::ii) (( 13 :: int)::ii) x :: 64 Word.word)))" +definition update_TLBEntryHiReg_VPN2 :: " TLBEntryHiReg \<Rightarrow>(27)Word.word \<Rightarrow> TLBEntryHiReg " where + " update_TLBEntryHiReg_VPN2 v x = ( + (v (| + TLBEntryHiReg_TLBEntryHiReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryHiReg_TLBEntryHiReg_chunk_0 v) (( 39 :: int)::ii) (( 13 :: int)::ii) + ((subrange_vec_dec x (( 26 :: int)::ii) (( 0 :: int)::ii) :: 27 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntryHiReg_ASID : TLBEntryHiReg -> mword ty8*) -fun get_TLBEntryHiReg_ASID :: " TLBEntryHiReg \<Rightarrow>(8)Word.word " where - " get_TLBEntryHiReg_ASID (Mk_TLBEntryHiReg (v)) = ( (subrange_vec_dec v (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word))" +definition get_TLBEntryHiReg_ASID :: " TLBEntryHiReg \<Rightarrow>(8)Word.word " where + " get_TLBEntryHiReg_ASID v = ( + (subrange_vec_dec(TLBEntryHiReg_TLBEntryHiReg_chunk_0 v) (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word))" (*val _set_TLBEntryHiReg_ASID : register_ref regstate register_value TLBEntryHiReg -> mword ty8 -> M unit*) definition set_TLBEntryHiReg_ASID :: "((regstate),(register_value),(TLBEntryHiReg))register_ref \<Rightarrow>(8)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntryHiReg_ASID r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntryHiReg) . - (let r = ((get_TLBEntryHiReg w__0 :: 64 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 7 :: int)::ii) (( 0 :: int)::ii) v :: 64 Word.word)) in - write_reg r_ref (Mk_TLBEntryHiReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntryHiReg_TLBEntryHiReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryHiReg_TLBEntryHiReg_chunk_0 r) (( 7 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec v (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntryHiReg_ASID : TLBEntryHiReg -> mword ty8 -> TLBEntryHiReg*) -fun update_TLBEntryHiReg_ASID :: " TLBEntryHiReg \<Rightarrow>(8)Word.word \<Rightarrow> TLBEntryHiReg " where - " update_TLBEntryHiReg_ASID (Mk_TLBEntryHiReg (v)) x = ( - Mk_TLBEntryHiReg ((update_subrange_vec_dec v (( 7 :: int)::ii) (( 0 :: int)::ii) x :: 64 Word.word)))" +definition update_TLBEntryHiReg_ASID :: " TLBEntryHiReg \<Rightarrow>(8)Word.word \<Rightarrow> TLBEntryHiReg " where + " update_TLBEntryHiReg_ASID v x = ( + (v (| + TLBEntryHiReg_TLBEntryHiReg_chunk_0 := + ((update_subrange_vec_dec(TLBEntryHiReg_TLBEntryHiReg_chunk_0 v) (( 7 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec x (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word)) + :: 64 Word.word))|)))" (*val undefined_ContextReg : unit -> M ContextReg*) @@ -819,69 +874,111 @@ fun update_TLBEntryHiReg_ASID :: " TLBEntryHiReg \<Rightarrow>(8)Word.word \<Ri definition undefined_ContextReg :: " unit \<Rightarrow>((register_value),(ContextReg),(exception))monad " where " undefined_ContextReg _ = ( (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - internal_pick [Mk_ContextReg w__0]))" + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . + return ((| ContextReg_ContextReg_chunk_0 = w__0 |))))" + +(*val Mk_ContextReg : mword ty64 -> ContextReg*) -(*val _get_ContextReg : ContextReg -> mword ty64*) +definition Mk_ContextReg :: "(64)Word.word \<Rightarrow> ContextReg " where + " Mk_ContextReg v = ( + (| ContextReg_ContextReg_chunk_0 = ((subrange_vec_dec v (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word)) |) )" -fun get_ContextReg :: " ContextReg \<Rightarrow>(64)Word.word " where - " get_ContextReg (Mk_ContextReg (v)) = ( v )" +(*val _get_ContextReg_bits : ContextReg -> mword ty64*) -(*val _set_ContextReg : register_ref regstate register_value ContextReg -> mword ty64 -> M unit*) +definition get_ContextReg_bits :: " ContextReg \<Rightarrow>(64)Word.word " where + " get_ContextReg_bits v = ( + (subrange_vec_dec(ContextReg_ContextReg_chunk_0 v) (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word))" -definition set_ContextReg :: "((regstate),(register_value),(ContextReg))register_ref \<Rightarrow>(64)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where - " set_ContextReg r_ref v = ( + +(*val _set_ContextReg_bits : register_ref regstate register_value ContextReg -> mword ty64 -> M unit*) + +definition set_ContextReg_bits :: "((regstate),(register_value),(ContextReg))register_ref \<Rightarrow>(64)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where + " set_ContextReg_bits r_ref v = ( reg_deref r_ref \<bind> (\<lambda> r . - (let r = (Mk_ContextReg v) in + (let r = + ((r (| + ContextReg_ContextReg_chunk_0 := + ((update_subrange_vec_dec(ContextReg_ContextReg_chunk_0 r) (( 63 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec v (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word)) + :: 64 Word.word))|))) in write_reg r_ref r)))" +(*val _update_ContextReg_bits : ContextReg -> mword ty64 -> ContextReg*) + +definition update_ContextReg_bits :: " ContextReg \<Rightarrow>(64)Word.word \<Rightarrow> ContextReg " where + " update_ContextReg_bits v x = ( + (v (| + ContextReg_ContextReg_chunk_0 := + ((update_subrange_vec_dec(ContextReg_ContextReg_chunk_0 v) (( 63 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec x (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word)) + :: 64 Word.word))|)))" + + (*val _get_ContextReg_PTEBase : ContextReg -> mword ty41*) -fun get_ContextReg_PTEBase :: " ContextReg \<Rightarrow>(41)Word.word " where - " get_ContextReg_PTEBase (Mk_ContextReg (v)) = ( (subrange_vec_dec v (( 63 :: int)::ii) (( 23 :: int)::ii) :: 41 Word.word))" +definition get_ContextReg_PTEBase :: " ContextReg \<Rightarrow>(41)Word.word " where + " get_ContextReg_PTEBase v = ( + (subrange_vec_dec(ContextReg_ContextReg_chunk_0 v) (( 63 :: int)::ii) (( 23 :: int)::ii) :: 41 Word.word))" (*val _set_ContextReg_PTEBase : register_ref regstate register_value ContextReg -> mword ty41 -> M unit*) definition set_ContextReg_PTEBase :: "((regstate),(register_value),(ContextReg))register_ref \<Rightarrow>(41)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_ContextReg_PTEBase r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: ContextReg) . - (let r = ((get_ContextReg w__0 :: 64 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 63 :: int)::ii) (( 23 :: int)::ii) v :: 64 Word.word)) in - write_reg r_ref (Mk_ContextReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + ContextReg_ContextReg_chunk_0 := + ((update_subrange_vec_dec(ContextReg_ContextReg_chunk_0 r) (( 63 :: int)::ii) (( 23 :: int)::ii) + ((subrange_vec_dec v (( 40 :: int)::ii) (( 0 :: int)::ii) :: 41 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_ContextReg_PTEBase : ContextReg -> mword ty41 -> ContextReg*) -fun update_ContextReg_PTEBase :: " ContextReg \<Rightarrow>(41)Word.word \<Rightarrow> ContextReg " where - " update_ContextReg_PTEBase (Mk_ContextReg (v)) x = ( - Mk_ContextReg ((update_subrange_vec_dec v (( 63 :: int)::ii) (( 23 :: int)::ii) x :: 64 Word.word)))" +definition update_ContextReg_PTEBase :: " ContextReg \<Rightarrow>(41)Word.word \<Rightarrow> ContextReg " where + " update_ContextReg_PTEBase v x = ( + (v (| + ContextReg_ContextReg_chunk_0 := + ((update_subrange_vec_dec(ContextReg_ContextReg_chunk_0 v) (( 63 :: int)::ii) (( 23 :: int)::ii) + ((subrange_vec_dec x (( 40 :: int)::ii) (( 0 :: int)::ii) :: 41 Word.word)) + :: 64 Word.word))|)))" (*val _get_ContextReg_BadVPN2 : ContextReg -> mword ty19*) -fun get_ContextReg_BadVPN2 :: " ContextReg \<Rightarrow>(19)Word.word " where - " get_ContextReg_BadVPN2 (Mk_ContextReg (v)) = ( (subrange_vec_dec v (( 22 :: int)::ii) (( 4 :: int)::ii) :: 19 Word.word))" +definition get_ContextReg_BadVPN2 :: " ContextReg \<Rightarrow>(19)Word.word " where + " get_ContextReg_BadVPN2 v = ( + (subrange_vec_dec(ContextReg_ContextReg_chunk_0 v) (( 22 :: int)::ii) (( 4 :: int)::ii) :: 19 Word.word))" (*val _set_ContextReg_BadVPN2 : register_ref regstate register_value ContextReg -> mword ty19 -> M unit*) definition set_ContextReg_BadVPN2 :: "((regstate),(register_value),(ContextReg))register_ref \<Rightarrow>(19)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_ContextReg_BadVPN2 r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: ContextReg) . - (let r = ((get_ContextReg w__0 :: 64 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 22 :: int)::ii) (( 4 :: int)::ii) v :: 64 Word.word)) in - write_reg r_ref (Mk_ContextReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + ContextReg_ContextReg_chunk_0 := + ((update_subrange_vec_dec(ContextReg_ContextReg_chunk_0 r) (( 22 :: int)::ii) (( 4 :: int)::ii) + ((subrange_vec_dec v (( 18 :: int)::ii) (( 0 :: int)::ii) :: 19 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_ContextReg_BadVPN2 : ContextReg -> mword ty19 -> ContextReg*) -fun update_ContextReg_BadVPN2 :: " ContextReg \<Rightarrow>(19)Word.word \<Rightarrow> ContextReg " where - " update_ContextReg_BadVPN2 (Mk_ContextReg (v)) x = ( - Mk_ContextReg ((update_subrange_vec_dec v (( 22 :: int)::ii) (( 4 :: int)::ii) x :: 64 Word.word)))" +definition update_ContextReg_BadVPN2 :: " ContextReg \<Rightarrow>(19)Word.word \<Rightarrow> ContextReg " where + " update_ContextReg_BadVPN2 v x = ( + (v (| + ContextReg_ContextReg_chunk_0 := + ((update_subrange_vec_dec(ContextReg_ContextReg_chunk_0 v) (( 22 :: int)::ii) (( 4 :: int)::ii) + ((subrange_vec_dec x (( 18 :: int)::ii) (( 0 :: int)::ii) :: 19 Word.word)) + :: 64 Word.word))|)))" (*val undefined_XContextReg : unit -> M XContextReg*) @@ -889,94 +986,143 @@ fun update_ContextReg_BadVPN2 :: " ContextReg \<Rightarrow>(19)Word.word \<Righ definition undefined_XContextReg :: " unit \<Rightarrow>((register_value),(XContextReg),(exception))monad " where " undefined_XContextReg _ = ( (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - internal_pick [Mk_XContextReg w__0]))" + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . + return ((| XContextReg_XContextReg_chunk_0 = w__0 |))))" + + +(*val Mk_XContextReg : mword ty64 -> XContextReg*) +definition Mk_XContextReg :: "(64)Word.word \<Rightarrow> XContextReg " where + " Mk_XContextReg v = ( + (| XContextReg_XContextReg_chunk_0 = ((subrange_vec_dec v (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word)) |) )" -(*val _get_XContextReg : XContextReg -> mword ty64*) -fun get_XContextReg :: " XContextReg \<Rightarrow>(64)Word.word " where - " get_XContextReg (Mk_XContextReg (v)) = ( v )" +(*val _get_XContextReg_bits : XContextReg -> mword ty64*) +definition get_XContextReg_bits :: " XContextReg \<Rightarrow>(64)Word.word " where + " get_XContextReg_bits v = ( + (subrange_vec_dec(XContextReg_XContextReg_chunk_0 v) (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word))" -(*val _set_XContextReg : register_ref regstate register_value XContextReg -> mword ty64 -> M unit*) -definition set_XContextReg :: "((regstate),(register_value),(XContextReg))register_ref \<Rightarrow>(64)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where - " set_XContextReg r_ref v = ( +(*val _set_XContextReg_bits : register_ref regstate register_value XContextReg -> mword ty64 -> M unit*) + +definition set_XContextReg_bits :: "((regstate),(register_value),(XContextReg))register_ref \<Rightarrow>(64)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where + " set_XContextReg_bits r_ref v = ( reg_deref r_ref \<bind> (\<lambda> r . - (let r = (Mk_XContextReg v) in + (let r = + ((r (| + XContextReg_XContextReg_chunk_0 := + ((update_subrange_vec_dec(XContextReg_XContextReg_chunk_0 r) (( 63 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec v (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word)) + :: 64 Word.word))|))) in write_reg r_ref r)))" +(*val _update_XContextReg_bits : XContextReg -> mword ty64 -> XContextReg*) + +definition update_XContextReg_bits :: " XContextReg \<Rightarrow>(64)Word.word \<Rightarrow> XContextReg " where + " update_XContextReg_bits v x = ( + (v (| + XContextReg_XContextReg_chunk_0 := + ((update_subrange_vec_dec(XContextReg_XContextReg_chunk_0 v) (( 63 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec x (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word)) + :: 64 Word.word))|)))" + + (*val _get_XContextReg_XPTEBase : XContextReg -> mword ty31*) -fun get_XContextReg_XPTEBase :: " XContextReg \<Rightarrow>(31)Word.word " where - " get_XContextReg_XPTEBase (Mk_XContextReg (v)) = ( - (subrange_vec_dec v (( 63 :: int)::ii) (( 33 :: int)::ii) :: 31 Word.word))" +definition get_XContextReg_XPTEBase :: " XContextReg \<Rightarrow>(31)Word.word " where + " get_XContextReg_XPTEBase v = ( + (subrange_vec_dec(XContextReg_XContextReg_chunk_0 v) (( 63 :: int)::ii) (( 33 :: int)::ii) :: 31 Word.word))" (*val _set_XContextReg_XPTEBase : register_ref regstate register_value XContextReg -> mword ty31 -> M unit*) definition set_XContextReg_XPTEBase :: "((regstate),(register_value),(XContextReg))register_ref \<Rightarrow>(31)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_XContextReg_XPTEBase r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: XContextReg) . - (let r = ((get_XContextReg w__0 :: 64 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 63 :: int)::ii) (( 33 :: int)::ii) v :: 64 Word.word)) in - write_reg r_ref (Mk_XContextReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + XContextReg_XContextReg_chunk_0 := + ((update_subrange_vec_dec(XContextReg_XContextReg_chunk_0 r) (( 63 :: int)::ii) (( 33 :: int)::ii) + ((subrange_vec_dec v (( 30 :: int)::ii) (( 0 :: int)::ii) :: 31 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_XContextReg_XPTEBase : XContextReg -> mword ty31 -> XContextReg*) -fun update_XContextReg_XPTEBase :: " XContextReg \<Rightarrow>(31)Word.word \<Rightarrow> XContextReg " where - " update_XContextReg_XPTEBase (Mk_XContextReg (v)) x = ( - Mk_XContextReg ((update_subrange_vec_dec v (( 63 :: int)::ii) (( 33 :: int)::ii) x :: 64 Word.word)))" +definition update_XContextReg_XPTEBase :: " XContextReg \<Rightarrow>(31)Word.word \<Rightarrow> XContextReg " where + " update_XContextReg_XPTEBase v x = ( + (v (| + XContextReg_XContextReg_chunk_0 := + ((update_subrange_vec_dec(XContextReg_XContextReg_chunk_0 v) (( 63 :: int)::ii) (( 33 :: int)::ii) + ((subrange_vec_dec x (( 30 :: int)::ii) (( 0 :: int)::ii) :: 31 Word.word)) + :: 64 Word.word))|)))" (*val _get_XContextReg_XR : XContextReg -> mword ty2*) -fun get_XContextReg_XR :: " XContextReg \<Rightarrow>(2)Word.word " where - " get_XContextReg_XR (Mk_XContextReg (v)) = ( (subrange_vec_dec v (( 32 :: int)::ii) (( 31 :: int)::ii) :: 2 Word.word))" +definition get_XContextReg_XR :: " XContextReg \<Rightarrow>(2)Word.word " where + " get_XContextReg_XR v = ( + (subrange_vec_dec(XContextReg_XContextReg_chunk_0 v) (( 32 :: int)::ii) (( 31 :: int)::ii) :: 2 Word.word))" (*val _set_XContextReg_XR : register_ref regstate register_value XContextReg -> mword ty2 -> M unit*) definition set_XContextReg_XR :: "((regstate),(register_value),(XContextReg))register_ref \<Rightarrow>(2)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_XContextReg_XR r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: XContextReg) . - (let r = ((get_XContextReg w__0 :: 64 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 32 :: int)::ii) (( 31 :: int)::ii) v :: 64 Word.word)) in - write_reg r_ref (Mk_XContextReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + XContextReg_XContextReg_chunk_0 := + ((update_subrange_vec_dec(XContextReg_XContextReg_chunk_0 r) (( 32 :: int)::ii) (( 31 :: int)::ii) + ((subrange_vec_dec v (( 1 :: int)::ii) (( 0 :: int)::ii) :: 2 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_XContextReg_XR : XContextReg -> mword ty2 -> XContextReg*) -fun update_XContextReg_XR :: " XContextReg \<Rightarrow>(2)Word.word \<Rightarrow> XContextReg " where - " update_XContextReg_XR (Mk_XContextReg (v)) x = ( - Mk_XContextReg ((update_subrange_vec_dec v (( 32 :: int)::ii) (( 31 :: int)::ii) x :: 64 Word.word)))" +definition update_XContextReg_XR :: " XContextReg \<Rightarrow>(2)Word.word \<Rightarrow> XContextReg " where + " update_XContextReg_XR v x = ( + (v (| + XContextReg_XContextReg_chunk_0 := + ((update_subrange_vec_dec(XContextReg_XContextReg_chunk_0 v) (( 32 :: int)::ii) (( 31 :: int)::ii) + ((subrange_vec_dec x (( 1 :: int)::ii) (( 0 :: int)::ii) :: 2 Word.word)) + :: 64 Word.word))|)))" (*val _get_XContextReg_XBadVPN2 : XContextReg -> mword ty27*) -fun get_XContextReg_XBadVPN2 :: " XContextReg \<Rightarrow>(27)Word.word " where - " get_XContextReg_XBadVPN2 (Mk_XContextReg (v)) = ( - (subrange_vec_dec v (( 30 :: int)::ii) (( 4 :: int)::ii) :: 27 Word.word))" +definition get_XContextReg_XBadVPN2 :: " XContextReg \<Rightarrow>(27)Word.word " where + " get_XContextReg_XBadVPN2 v = ( + (subrange_vec_dec(XContextReg_XContextReg_chunk_0 v) (( 30 :: int)::ii) (( 4 :: int)::ii) :: 27 Word.word))" (*val _set_XContextReg_XBadVPN2 : register_ref regstate register_value XContextReg -> mword ty27 -> M unit*) definition set_XContextReg_XBadVPN2 :: "((regstate),(register_value),(XContextReg))register_ref \<Rightarrow>(27)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_XContextReg_XBadVPN2 r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: XContextReg) . - (let r = ((get_XContextReg w__0 :: 64 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 30 :: int)::ii) (( 4 :: int)::ii) v :: 64 Word.word)) in - write_reg r_ref (Mk_XContextReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + XContextReg_XContextReg_chunk_0 := + ((update_subrange_vec_dec(XContextReg_XContextReg_chunk_0 r) (( 30 :: int)::ii) (( 4 :: int)::ii) + ((subrange_vec_dec v (( 26 :: int)::ii) (( 0 :: int)::ii) :: 27 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_XContextReg_XBadVPN2 : XContextReg -> mword ty27 -> XContextReg*) -fun update_XContextReg_XBadVPN2 :: " XContextReg \<Rightarrow>(27)Word.word \<Rightarrow> XContextReg " where - " update_XContextReg_XBadVPN2 (Mk_XContextReg (v)) x = ( - Mk_XContextReg ((update_subrange_vec_dec v (( 30 :: int)::ii) (( 4 :: int)::ii) x :: 64 Word.word)))" +definition update_XContextReg_XBadVPN2 :: " XContextReg \<Rightarrow>(27)Word.word \<Rightarrow> XContextReg " where + " update_XContextReg_XBadVPN2 v x = ( + (v (| + XContextReg_XContextReg_chunk_0 := + ((update_subrange_vec_dec(XContextReg_XContextReg_chunk_0 v) (( 30 :: int)::ii) (( 4 :: int)::ii) + ((subrange_vec_dec x (( 26 :: int)::ii) (( 0 :: int)::ii) :: 27 Word.word)) + :: 64 Word.word))|)))" definition TLBNumEntries :: " int " where @@ -1010,437 +1156,632 @@ definition MAX_PA :: " int " where definition undefined_TLBEntry :: " unit \<Rightarrow>((register_value),(TLBEntry),(exception))monad " where " undefined_TLBEntry _ = ( (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 117 :: int)::ii) :: ( 117 Word.word) M) \<bind> (\<lambda> (w__0 :: 117 Word.word) . - internal_pick [Mk_TLBEntry w__0]))" + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 53 :: int)::ii) :: ( 53 Word.word) M) \<bind> (\<lambda> (w__0 :: 53 Word.word) . + (undefined_bitvector + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . + return ((| TLBEntry_TLBEntry_chunk_1 = w__0, + TLBEntry_TLBEntry_chunk_0 = w__1 |)))))" + +(*val Mk_TLBEntry : mword ty117 -> TLBEntry*) -(*val _get_TLBEntry : TLBEntry -> mword ty117*) +definition Mk_TLBEntry :: "(117)Word.word \<Rightarrow> TLBEntry " where + " Mk_TLBEntry v = ( + (| TLBEntry_TLBEntry_chunk_1 = ((subrange_vec_dec v (( 116 :: int)::ii) (( 64 :: int)::ii) :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = ((subrange_vec_dec v (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word)) |) )" -fun get_TLBEntry :: " TLBEntry \<Rightarrow>(117)Word.word " where - " get_TLBEntry (Mk_TLBEntry (v)) = ( v )" +(*val _get_TLBEntry_bits : TLBEntry -> mword ty117*) -(*val _set_TLBEntry : register_ref regstate register_value TLBEntry -> mword ty117 -> M unit*) +definition get_TLBEntry_bits :: " TLBEntry \<Rightarrow>(117)Word.word " where + " get_TLBEntry_bits v = ( + (concat_vec ((subrange_vec_dec(TLBEntry_TLBEntry_chunk_1 v) (( 52 :: int)::ii) (( 0 :: int)::ii) :: 53 Word.word)) + ((subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word)) + :: 117 Word.word))" -definition set_TLBEntry :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(117)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where - " set_TLBEntry r_ref v = ( + +(*val _set_TLBEntry_bits : register_ref regstate register_value TLBEntry -> mword ty117 -> M unit*) + +definition set_TLBEntry_bits :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(117)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where + " set_TLBEntry_bits r_ref v = ( reg_deref r_ref \<bind> (\<lambda> r . - (let r = (Mk_TLBEntry v) in - write_reg r_ref r)))" + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_1 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_1 r) (( 52 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec v (( 116 :: int)::ii) (( 64 :: int)::ii) :: 53 Word.word)) + :: 53 Word.word))|))) in + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 r) (( 63 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec v (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r))))" + + +(*val _update_TLBEntry_bits : TLBEntry -> mword ty117 -> TLBEntry*) + +definition update_TLBEntry_bits :: " TLBEntry \<Rightarrow>(117)Word.word \<Rightarrow> TLBEntry " where + " update_TLBEntry_bits v x = ( + (let v = + ((v (| + TLBEntry_TLBEntry_chunk_1 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_1 v) (( 52 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec x (( 116 :: int)::ii) (( 64 :: int)::ii) :: 53 Word.word)) + :: 53 Word.word))|))) in + (v (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 63 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec x (( 63 :: int)::ii) (( 0 :: int)::ii) :: 64 Word.word)) + :: 64 Word.word))|))))" (*val _get_TLBEntry_pagemask : TLBEntry -> mword ty16*) -fun get_TLBEntry_pagemask :: " TLBEntry \<Rightarrow>(16)Word.word " where - " get_TLBEntry_pagemask (Mk_TLBEntry (v)) = ( (subrange_vec_dec v (( 116 :: int)::ii) (( 101 :: int)::ii) :: 16 Word.word))" +definition get_TLBEntry_pagemask :: " TLBEntry \<Rightarrow>(16)Word.word " where + " get_TLBEntry_pagemask v = ( + (subrange_vec_dec(TLBEntry_TLBEntry_chunk_1 v) (( 52 :: int)::ii) (( 37 :: int)::ii) :: 16 Word.word))" (*val _set_TLBEntry_pagemask : register_ref regstate register_value TLBEntry -> mword ty16 -> M unit*) definition set_TLBEntry_pagemask :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(16)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntry_pagemask r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntry) . - (let r = ((get_TLBEntry w__0 :: 117 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 116 :: int)::ii) (( 101 :: int)::ii) v :: 117 Word.word)) in - write_reg r_ref (Mk_TLBEntry r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_1 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_1 r) (( 52 :: int)::ii) (( 37 :: int)::ii) + ((subrange_vec_dec v (( 15 :: int)::ii) (( 0 :: int)::ii) :: 16 Word.word)) + :: 53 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntry_pagemask : TLBEntry -> mword ty16 -> TLBEntry*) -fun update_TLBEntry_pagemask :: " TLBEntry \<Rightarrow>(16)Word.word \<Rightarrow> TLBEntry " where - " update_TLBEntry_pagemask (Mk_TLBEntry (v)) x = ( - Mk_TLBEntry ((update_subrange_vec_dec v (( 116 :: int)::ii) (( 101 :: int)::ii) x :: 117 Word.word)))" +definition update_TLBEntry_pagemask :: " TLBEntry \<Rightarrow>(16)Word.word \<Rightarrow> TLBEntry " where + " update_TLBEntry_pagemask v x = ( + (v (| + TLBEntry_TLBEntry_chunk_1 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_1 v) (( 52 :: int)::ii) (( 37 :: int)::ii) + ((subrange_vec_dec x (( 15 :: int)::ii) (( 0 :: int)::ii) :: 16 Word.word)) + :: 53 Word.word))|)))" (*val _get_TLBEntry_r : TLBEntry -> mword ty2*) -fun get_TLBEntry_r :: " TLBEntry \<Rightarrow>(2)Word.word " where - " get_TLBEntry_r (Mk_TLBEntry (v)) = ( (subrange_vec_dec v (( 100 :: int)::ii) (( 99 :: int)::ii) :: 2 Word.word))" +definition get_TLBEntry_r :: " TLBEntry \<Rightarrow>(2)Word.word " where + " get_TLBEntry_r v = ( (subrange_vec_dec(TLBEntry_TLBEntry_chunk_1 v) (( 36 :: int)::ii) (( 35 :: int)::ii) :: 2 Word.word))" (*val _set_TLBEntry_r : register_ref regstate register_value TLBEntry -> mword ty2 -> M unit*) definition set_TLBEntry_r :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(2)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntry_r r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntry) . - (let r = ((get_TLBEntry w__0 :: 117 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 100 :: int)::ii) (( 99 :: int)::ii) v :: 117 Word.word)) in - write_reg r_ref (Mk_TLBEntry r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_1 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_1 r) (( 36 :: int)::ii) (( 35 :: int)::ii) + ((subrange_vec_dec v (( 1 :: int)::ii) (( 0 :: int)::ii) :: 2 Word.word)) + :: 53 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntry_r : TLBEntry -> mword ty2 -> TLBEntry*) -fun update_TLBEntry_r :: " TLBEntry \<Rightarrow>(2)Word.word \<Rightarrow> TLBEntry " where - " update_TLBEntry_r (Mk_TLBEntry (v)) x = ( - Mk_TLBEntry ((update_subrange_vec_dec v (( 100 :: int)::ii) (( 99 :: int)::ii) x :: 117 Word.word)))" +definition update_TLBEntry_r :: " TLBEntry \<Rightarrow>(2)Word.word \<Rightarrow> TLBEntry " where + " update_TLBEntry_r v x = ( + (v (| + TLBEntry_TLBEntry_chunk_1 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_1 v) (( 36 :: int)::ii) (( 35 :: int)::ii) + ((subrange_vec_dec x (( 1 :: int)::ii) (( 0 :: int)::ii) :: 2 Word.word)) + :: 53 Word.word))|)))" (*val _get_TLBEntry_vpn2 : TLBEntry -> mword ty27*) -fun get_TLBEntry_vpn2 :: " TLBEntry \<Rightarrow>(27)Word.word " where - " get_TLBEntry_vpn2 (Mk_TLBEntry (v)) = ( (subrange_vec_dec v (( 98 :: int)::ii) (( 72 :: int)::ii) :: 27 Word.word))" +definition get_TLBEntry_vpn2 :: " TLBEntry \<Rightarrow>(27)Word.word " where + " get_TLBEntry_vpn2 v = ( + (subrange_vec_dec(TLBEntry_TLBEntry_chunk_1 v) (( 34 :: int)::ii) (( 8 :: int)::ii) :: 27 Word.word))" (*val _set_TLBEntry_vpn2 : register_ref regstate register_value TLBEntry -> mword ty27 -> M unit*) definition set_TLBEntry_vpn2 :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(27)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntry_vpn2 r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntry) . - (let r = ((get_TLBEntry w__0 :: 117 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 98 :: int)::ii) (( 72 :: int)::ii) v :: 117 Word.word)) in - write_reg r_ref (Mk_TLBEntry r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_1 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_1 r) (( 34 :: int)::ii) (( 8 :: int)::ii) + ((subrange_vec_dec v (( 26 :: int)::ii) (( 0 :: int)::ii) :: 27 Word.word)) + :: 53 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntry_vpn2 : TLBEntry -> mword ty27 -> TLBEntry*) -fun update_TLBEntry_vpn2 :: " TLBEntry \<Rightarrow>(27)Word.word \<Rightarrow> TLBEntry " where - " update_TLBEntry_vpn2 (Mk_TLBEntry (v)) x = ( - Mk_TLBEntry ((update_subrange_vec_dec v (( 98 :: int)::ii) (( 72 :: int)::ii) x :: 117 Word.word)))" +definition update_TLBEntry_vpn2 :: " TLBEntry \<Rightarrow>(27)Word.word \<Rightarrow> TLBEntry " where + " update_TLBEntry_vpn2 v x = ( + (v (| + TLBEntry_TLBEntry_chunk_1 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_1 v) (( 34 :: int)::ii) (( 8 :: int)::ii) + ((subrange_vec_dec x (( 26 :: int)::ii) (( 0 :: int)::ii) :: 27 Word.word)) + :: 53 Word.word))|)))" (*val _get_TLBEntry_asid : TLBEntry -> mword ty8*) -fun get_TLBEntry_asid :: " TLBEntry \<Rightarrow>(8)Word.word " where - " get_TLBEntry_asid (Mk_TLBEntry (v)) = ( (subrange_vec_dec v (( 71 :: int)::ii) (( 64 :: int)::ii) :: 8 Word.word))" +definition get_TLBEntry_asid :: " TLBEntry \<Rightarrow>(8)Word.word " where + " get_TLBEntry_asid v = ( (subrange_vec_dec(TLBEntry_TLBEntry_chunk_1 v) (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word))" (*val _set_TLBEntry_asid : register_ref regstate register_value TLBEntry -> mword ty8 -> M unit*) definition set_TLBEntry_asid :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(8)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntry_asid r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntry) . - (let r = ((get_TLBEntry w__0 :: 117 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 71 :: int)::ii) (( 64 :: int)::ii) v :: 117 Word.word)) in - write_reg r_ref (Mk_TLBEntry r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_1 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_1 r) (( 7 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec v (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word)) + :: 53 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntry_asid : TLBEntry -> mword ty8 -> TLBEntry*) -fun update_TLBEntry_asid :: " TLBEntry \<Rightarrow>(8)Word.word \<Rightarrow> TLBEntry " where - " update_TLBEntry_asid (Mk_TLBEntry (v)) x = ( - Mk_TLBEntry ((update_subrange_vec_dec v (( 71 :: int)::ii) (( 64 :: int)::ii) x :: 117 Word.word)))" +definition update_TLBEntry_asid :: " TLBEntry \<Rightarrow>(8)Word.word \<Rightarrow> TLBEntry " where + " update_TLBEntry_asid v x = ( + (v (| + TLBEntry_TLBEntry_chunk_1 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_1 v) (( 7 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec x (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word)) + :: 53 Word.word))|)))" (*val _get_TLBEntry_g : TLBEntry -> mword ty1*) -fun get_TLBEntry_g :: " TLBEntry \<Rightarrow>(1)Word.word " where - " get_TLBEntry_g (Mk_TLBEntry (v)) = ( (subrange_vec_dec v (( 63 :: int)::ii) (( 63 :: int)::ii) :: 1 Word.word))" +definition get_TLBEntry_g :: " TLBEntry \<Rightarrow>(1)Word.word " where + " get_TLBEntry_g v = ( (subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 63 :: int)::ii) (( 63 :: int)::ii) :: 1 Word.word))" (*val _set_TLBEntry_g : register_ref regstate register_value TLBEntry -> mword ty1 -> M unit*) definition set_TLBEntry_g :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntry_g r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntry) . - (let r = ((get_TLBEntry w__0 :: 117 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 63 :: int)::ii) (( 63 :: int)::ii) v :: 117 Word.word)) in - write_reg r_ref (Mk_TLBEntry r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 r) (( 63 :: int)::ii) (( 63 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntry_g : TLBEntry -> mword ty1 -> TLBEntry*) -fun update_TLBEntry_g :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where - " update_TLBEntry_g (Mk_TLBEntry (v)) x = ( - Mk_TLBEntry ((update_subrange_vec_dec v (( 63 :: int)::ii) (( 63 :: int)::ii) x :: 117 Word.word)))" +definition update_TLBEntry_g :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where + " update_TLBEntry_g v x = ( + (v (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 63 :: int)::ii) (( 63 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntry_valid : TLBEntry -> mword ty1*) -fun get_TLBEntry_valid :: " TLBEntry \<Rightarrow>(1)Word.word " where - " get_TLBEntry_valid (Mk_TLBEntry (v)) = ( (subrange_vec_dec v (( 62 :: int)::ii) (( 62 :: int)::ii) :: 1 Word.word))" +definition get_TLBEntry_valid :: " TLBEntry \<Rightarrow>(1)Word.word " where + " get_TLBEntry_valid v = ( + (subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 62 :: int)::ii) (( 62 :: int)::ii) :: 1 Word.word))" (*val _set_TLBEntry_valid : register_ref regstate register_value TLBEntry -> mword ty1 -> M unit*) definition set_TLBEntry_valid :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntry_valid r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntry) . - (let r = ((get_TLBEntry w__0 :: 117 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 62 :: int)::ii) (( 62 :: int)::ii) v :: 117 Word.word)) in - write_reg r_ref (Mk_TLBEntry r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 r) (( 62 :: int)::ii) (( 62 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntry_valid : TLBEntry -> mword ty1 -> TLBEntry*) -fun update_TLBEntry_valid :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where - " update_TLBEntry_valid (Mk_TLBEntry (v)) x = ( - Mk_TLBEntry ((update_subrange_vec_dec v (( 62 :: int)::ii) (( 62 :: int)::ii) x :: 117 Word.word)))" +definition update_TLBEntry_valid :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where + " update_TLBEntry_valid v x = ( + (v (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 62 :: int)::ii) (( 62 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntry_caps1 : TLBEntry -> mword ty1*) -fun get_TLBEntry_caps1 :: " TLBEntry \<Rightarrow>(1)Word.word " where - " get_TLBEntry_caps1 (Mk_TLBEntry (v)) = ( (subrange_vec_dec v (( 61 :: int)::ii) (( 61 :: int)::ii) :: 1 Word.word))" +definition get_TLBEntry_caps1 :: " TLBEntry \<Rightarrow>(1)Word.word " where + " get_TLBEntry_caps1 v = ( + (subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 61 :: int)::ii) (( 61 :: int)::ii) :: 1 Word.word))" (*val _set_TLBEntry_caps1 : register_ref regstate register_value TLBEntry -> mword ty1 -> M unit*) definition set_TLBEntry_caps1 :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntry_caps1 r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntry) . - (let r = ((get_TLBEntry w__0 :: 117 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 61 :: int)::ii) (( 61 :: int)::ii) v :: 117 Word.word)) in - write_reg r_ref (Mk_TLBEntry r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 r) (( 61 :: int)::ii) (( 61 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntry_caps1 : TLBEntry -> mword ty1 -> TLBEntry*) -fun update_TLBEntry_caps1 :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where - " update_TLBEntry_caps1 (Mk_TLBEntry (v)) x = ( - Mk_TLBEntry ((update_subrange_vec_dec v (( 61 :: int)::ii) (( 61 :: int)::ii) x :: 117 Word.word)))" +definition update_TLBEntry_caps1 :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where + " update_TLBEntry_caps1 v x = ( + (v (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 61 :: int)::ii) (( 61 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntry_capl1 : TLBEntry -> mword ty1*) -fun get_TLBEntry_capl1 :: " TLBEntry \<Rightarrow>(1)Word.word " where - " get_TLBEntry_capl1 (Mk_TLBEntry (v)) = ( (subrange_vec_dec v (( 60 :: int)::ii) (( 60 :: int)::ii) :: 1 Word.word))" +definition get_TLBEntry_capl1 :: " TLBEntry \<Rightarrow>(1)Word.word " where + " get_TLBEntry_capl1 v = ( + (subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 60 :: int)::ii) (( 60 :: int)::ii) :: 1 Word.word))" (*val _set_TLBEntry_capl1 : register_ref regstate register_value TLBEntry -> mword ty1 -> M unit*) definition set_TLBEntry_capl1 :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntry_capl1 r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntry) . - (let r = ((get_TLBEntry w__0 :: 117 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 60 :: int)::ii) (( 60 :: int)::ii) v :: 117 Word.word)) in - write_reg r_ref (Mk_TLBEntry r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 r) (( 60 :: int)::ii) (( 60 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntry_capl1 : TLBEntry -> mword ty1 -> TLBEntry*) -fun update_TLBEntry_capl1 :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where - " update_TLBEntry_capl1 (Mk_TLBEntry (v)) x = ( - Mk_TLBEntry ((update_subrange_vec_dec v (( 60 :: int)::ii) (( 60 :: int)::ii) x :: 117 Word.word)))" +definition update_TLBEntry_capl1 :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where + " update_TLBEntry_capl1 v x = ( + (v (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 60 :: int)::ii) (( 60 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntry_pfn1 : TLBEntry -> mword ty24*) -fun get_TLBEntry_pfn1 :: " TLBEntry \<Rightarrow>(24)Word.word " where - " get_TLBEntry_pfn1 (Mk_TLBEntry (v)) = ( (subrange_vec_dec v (( 59 :: int)::ii) (( 36 :: int)::ii) :: 24 Word.word))" +definition get_TLBEntry_pfn1 :: " TLBEntry \<Rightarrow>(24)Word.word " where + " get_TLBEntry_pfn1 v = ( + (subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 59 :: int)::ii) (( 36 :: int)::ii) :: 24 Word.word))" (*val _set_TLBEntry_pfn1 : register_ref regstate register_value TLBEntry -> mword ty24 -> M unit*) definition set_TLBEntry_pfn1 :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(24)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntry_pfn1 r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntry) . - (let r = ((get_TLBEntry w__0 :: 117 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 59 :: int)::ii) (( 36 :: int)::ii) v :: 117 Word.word)) in - write_reg r_ref (Mk_TLBEntry r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 r) (( 59 :: int)::ii) (( 36 :: int)::ii) + ((subrange_vec_dec v (( 23 :: int)::ii) (( 0 :: int)::ii) :: 24 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntry_pfn1 : TLBEntry -> mword ty24 -> TLBEntry*) -fun update_TLBEntry_pfn1 :: " TLBEntry \<Rightarrow>(24)Word.word \<Rightarrow> TLBEntry " where - " update_TLBEntry_pfn1 (Mk_TLBEntry (v)) x = ( - Mk_TLBEntry ((update_subrange_vec_dec v (( 59 :: int)::ii) (( 36 :: int)::ii) x :: 117 Word.word)))" +definition update_TLBEntry_pfn1 :: " TLBEntry \<Rightarrow>(24)Word.word \<Rightarrow> TLBEntry " where + " update_TLBEntry_pfn1 v x = ( + (v (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 59 :: int)::ii) (( 36 :: int)::ii) + ((subrange_vec_dec x (( 23 :: int)::ii) (( 0 :: int)::ii) :: 24 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntry_c1 : TLBEntry -> mword ty3*) -fun get_TLBEntry_c1 :: " TLBEntry \<Rightarrow>(3)Word.word " where - " get_TLBEntry_c1 (Mk_TLBEntry (v)) = ( (subrange_vec_dec v (( 35 :: int)::ii) (( 33 :: int)::ii) :: 3 Word.word))" +definition get_TLBEntry_c1 :: " TLBEntry \<Rightarrow>(3)Word.word " where + " get_TLBEntry_c1 v = ( (subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 35 :: int)::ii) (( 33 :: int)::ii) :: 3 Word.word))" (*val _set_TLBEntry_c1 : register_ref regstate register_value TLBEntry -> mword ty3 -> M unit*) definition set_TLBEntry_c1 :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(3)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntry_c1 r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntry) . - (let r = ((get_TLBEntry w__0 :: 117 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 35 :: int)::ii) (( 33 :: int)::ii) v :: 117 Word.word)) in - write_reg r_ref (Mk_TLBEntry r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 r) (( 35 :: int)::ii) (( 33 :: int)::ii) + ((subrange_vec_dec v (( 2 :: int)::ii) (( 0 :: int)::ii) :: 3 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntry_c1 : TLBEntry -> mword ty3 -> TLBEntry*) -fun update_TLBEntry_c1 :: " TLBEntry \<Rightarrow>(3)Word.word \<Rightarrow> TLBEntry " where - " update_TLBEntry_c1 (Mk_TLBEntry (v)) x = ( - Mk_TLBEntry ((update_subrange_vec_dec v (( 35 :: int)::ii) (( 33 :: int)::ii) x :: 117 Word.word)))" +definition update_TLBEntry_c1 :: " TLBEntry \<Rightarrow>(3)Word.word \<Rightarrow> TLBEntry " where + " update_TLBEntry_c1 v x = ( + (v (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 35 :: int)::ii) (( 33 :: int)::ii) + ((subrange_vec_dec x (( 2 :: int)::ii) (( 0 :: int)::ii) :: 3 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntry_d1 : TLBEntry -> mword ty1*) -fun get_TLBEntry_d1 :: " TLBEntry \<Rightarrow>(1)Word.word " where - " get_TLBEntry_d1 (Mk_TLBEntry (v)) = ( (subrange_vec_dec v (( 32 :: int)::ii) (( 32 :: int)::ii) :: 1 Word.word))" +definition get_TLBEntry_d1 :: " TLBEntry \<Rightarrow>(1)Word.word " where + " get_TLBEntry_d1 v = ( (subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 32 :: int)::ii) (( 32 :: int)::ii) :: 1 Word.word))" (*val _set_TLBEntry_d1 : register_ref regstate register_value TLBEntry -> mword ty1 -> M unit*) definition set_TLBEntry_d1 :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntry_d1 r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntry) . - (let r = ((get_TLBEntry w__0 :: 117 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 32 :: int)::ii) (( 32 :: int)::ii) v :: 117 Word.word)) in - write_reg r_ref (Mk_TLBEntry r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 r) (( 32 :: int)::ii) (( 32 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntry_d1 : TLBEntry -> mword ty1 -> TLBEntry*) -fun update_TLBEntry_d1 :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where - " update_TLBEntry_d1 (Mk_TLBEntry (v)) x = ( - Mk_TLBEntry ((update_subrange_vec_dec v (( 32 :: int)::ii) (( 32 :: int)::ii) x :: 117 Word.word)))" +definition update_TLBEntry_d1 :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where + " update_TLBEntry_d1 v x = ( + (v (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 32 :: int)::ii) (( 32 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntry_v1 : TLBEntry -> mword ty1*) -fun get_TLBEntry_v1 :: " TLBEntry \<Rightarrow>(1)Word.word " where - " get_TLBEntry_v1 (Mk_TLBEntry (v)) = ( (subrange_vec_dec v (( 31 :: int)::ii) (( 31 :: int)::ii) :: 1 Word.word))" +definition get_TLBEntry_v1 :: " TLBEntry \<Rightarrow>(1)Word.word " where + " get_TLBEntry_v1 v = ( (subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 31 :: int)::ii) (( 31 :: int)::ii) :: 1 Word.word))" (*val _set_TLBEntry_v1 : register_ref regstate register_value TLBEntry -> mword ty1 -> M unit*) definition set_TLBEntry_v1 :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntry_v1 r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntry) . - (let r = ((get_TLBEntry w__0 :: 117 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 31 :: int)::ii) (( 31 :: int)::ii) v :: 117 Word.word)) in - write_reg r_ref (Mk_TLBEntry r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 r) (( 31 :: int)::ii) (( 31 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntry_v1 : TLBEntry -> mword ty1 -> TLBEntry*) -fun update_TLBEntry_v1 :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where - " update_TLBEntry_v1 (Mk_TLBEntry (v)) x = ( - Mk_TLBEntry ((update_subrange_vec_dec v (( 31 :: int)::ii) (( 31 :: int)::ii) x :: 117 Word.word)))" +definition update_TLBEntry_v1 :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where + " update_TLBEntry_v1 v x = ( + (v (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 31 :: int)::ii) (( 31 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntry_caps0 : TLBEntry -> mword ty1*) -fun get_TLBEntry_caps0 :: " TLBEntry \<Rightarrow>(1)Word.word " where - " get_TLBEntry_caps0 (Mk_TLBEntry (v)) = ( (subrange_vec_dec v (( 30 :: int)::ii) (( 30 :: int)::ii) :: 1 Word.word))" +definition get_TLBEntry_caps0 :: " TLBEntry \<Rightarrow>(1)Word.word " where + " get_TLBEntry_caps0 v = ( + (subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 30 :: int)::ii) (( 30 :: int)::ii) :: 1 Word.word))" (*val _set_TLBEntry_caps0 : register_ref regstate register_value TLBEntry -> mword ty1 -> M unit*) definition set_TLBEntry_caps0 :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntry_caps0 r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntry) . - (let r = ((get_TLBEntry w__0 :: 117 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 30 :: int)::ii) (( 30 :: int)::ii) v :: 117 Word.word)) in - write_reg r_ref (Mk_TLBEntry r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 r) (( 30 :: int)::ii) (( 30 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntry_caps0 : TLBEntry -> mword ty1 -> TLBEntry*) -fun update_TLBEntry_caps0 :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where - " update_TLBEntry_caps0 (Mk_TLBEntry (v)) x = ( - Mk_TLBEntry ((update_subrange_vec_dec v (( 30 :: int)::ii) (( 30 :: int)::ii) x :: 117 Word.word)))" +definition update_TLBEntry_caps0 :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where + " update_TLBEntry_caps0 v x = ( + (v (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 30 :: int)::ii) (( 30 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntry_capl0 : TLBEntry -> mword ty1*) -fun get_TLBEntry_capl0 :: " TLBEntry \<Rightarrow>(1)Word.word " where - " get_TLBEntry_capl0 (Mk_TLBEntry (v)) = ( (subrange_vec_dec v (( 29 :: int)::ii) (( 29 :: int)::ii) :: 1 Word.word))" +definition get_TLBEntry_capl0 :: " TLBEntry \<Rightarrow>(1)Word.word " where + " get_TLBEntry_capl0 v = ( + (subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 29 :: int)::ii) (( 29 :: int)::ii) :: 1 Word.word))" (*val _set_TLBEntry_capl0 : register_ref regstate register_value TLBEntry -> mword ty1 -> M unit*) definition set_TLBEntry_capl0 :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntry_capl0 r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntry) . - (let r = ((get_TLBEntry w__0 :: 117 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 29 :: int)::ii) (( 29 :: int)::ii) v :: 117 Word.word)) in - write_reg r_ref (Mk_TLBEntry r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 r) (( 29 :: int)::ii) (( 29 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntry_capl0 : TLBEntry -> mword ty1 -> TLBEntry*) -fun update_TLBEntry_capl0 :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where - " update_TLBEntry_capl0 (Mk_TLBEntry (v)) x = ( - Mk_TLBEntry ((update_subrange_vec_dec v (( 29 :: int)::ii) (( 29 :: int)::ii) x :: 117 Word.word)))" +definition update_TLBEntry_capl0 :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where + " update_TLBEntry_capl0 v x = ( + (v (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 29 :: int)::ii) (( 29 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntry_pfn0 : TLBEntry -> mword ty24*) -fun get_TLBEntry_pfn0 :: " TLBEntry \<Rightarrow>(24)Word.word " where - " get_TLBEntry_pfn0 (Mk_TLBEntry (v)) = ( (subrange_vec_dec v (( 28 :: int)::ii) (( 5 :: int)::ii) :: 24 Word.word))" +definition get_TLBEntry_pfn0 :: " TLBEntry \<Rightarrow>(24)Word.word " where + " get_TLBEntry_pfn0 v = ( + (subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 28 :: int)::ii) (( 5 :: int)::ii) :: 24 Word.word))" (*val _set_TLBEntry_pfn0 : register_ref regstate register_value TLBEntry -> mword ty24 -> M unit*) definition set_TLBEntry_pfn0 :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(24)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntry_pfn0 r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntry) . - (let r = ((get_TLBEntry w__0 :: 117 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 28 :: int)::ii) (( 5 :: int)::ii) v :: 117 Word.word)) in - write_reg r_ref (Mk_TLBEntry r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 r) (( 28 :: int)::ii) (( 5 :: int)::ii) + ((subrange_vec_dec v (( 23 :: int)::ii) (( 0 :: int)::ii) :: 24 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntry_pfn0 : TLBEntry -> mword ty24 -> TLBEntry*) -fun update_TLBEntry_pfn0 :: " TLBEntry \<Rightarrow>(24)Word.word \<Rightarrow> TLBEntry " where - " update_TLBEntry_pfn0 (Mk_TLBEntry (v)) x = ( - Mk_TLBEntry ((update_subrange_vec_dec v (( 28 :: int)::ii) (( 5 :: int)::ii) x :: 117 Word.word)))" +definition update_TLBEntry_pfn0 :: " TLBEntry \<Rightarrow>(24)Word.word \<Rightarrow> TLBEntry " where + " update_TLBEntry_pfn0 v x = ( + (v (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 28 :: int)::ii) (( 5 :: int)::ii) + ((subrange_vec_dec x (( 23 :: int)::ii) (( 0 :: int)::ii) :: 24 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntry_c0 : TLBEntry -> mword ty3*) -fun get_TLBEntry_c0 :: " TLBEntry \<Rightarrow>(3)Word.word " where - " get_TLBEntry_c0 (Mk_TLBEntry (v)) = ( (subrange_vec_dec v (( 4 :: int)::ii) (( 2 :: int)::ii) :: 3 Word.word))" +definition get_TLBEntry_c0 :: " TLBEntry \<Rightarrow>(3)Word.word " where + " get_TLBEntry_c0 v = ( (subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 4 :: int)::ii) (( 2 :: int)::ii) :: 3 Word.word))" (*val _set_TLBEntry_c0 : register_ref regstate register_value TLBEntry -> mword ty3 -> M unit*) definition set_TLBEntry_c0 :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(3)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntry_c0 r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntry) . - (let r = ((get_TLBEntry w__0 :: 117 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 4 :: int)::ii) (( 2 :: int)::ii) v :: 117 Word.word)) in - write_reg r_ref (Mk_TLBEntry r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 r) (( 4 :: int)::ii) (( 2 :: int)::ii) + ((subrange_vec_dec v (( 2 :: int)::ii) (( 0 :: int)::ii) :: 3 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntry_c0 : TLBEntry -> mword ty3 -> TLBEntry*) -fun update_TLBEntry_c0 :: " TLBEntry \<Rightarrow>(3)Word.word \<Rightarrow> TLBEntry " where - " update_TLBEntry_c0 (Mk_TLBEntry (v)) x = ( - Mk_TLBEntry ((update_subrange_vec_dec v (( 4 :: int)::ii) (( 2 :: int)::ii) x :: 117 Word.word)))" +definition update_TLBEntry_c0 :: " TLBEntry \<Rightarrow>(3)Word.word \<Rightarrow> TLBEntry " where + " update_TLBEntry_c0 v x = ( + (v (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 4 :: int)::ii) (( 2 :: int)::ii) + ((subrange_vec_dec x (( 2 :: int)::ii) (( 0 :: int)::ii) :: 3 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntry_d0 : TLBEntry -> mword ty1*) -fun get_TLBEntry_d0 :: " TLBEntry \<Rightarrow>(1)Word.word " where - " get_TLBEntry_d0 (Mk_TLBEntry (v)) = ( (subrange_vec_dec v (( 1 :: int)::ii) (( 1 :: int)::ii) :: 1 Word.word))" +definition get_TLBEntry_d0 :: " TLBEntry \<Rightarrow>(1)Word.word " where + " get_TLBEntry_d0 v = ( (subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 1 :: int)::ii) (( 1 :: int)::ii) :: 1 Word.word))" (*val _set_TLBEntry_d0 : register_ref regstate register_value TLBEntry -> mword ty1 -> M unit*) definition set_TLBEntry_d0 :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntry_d0 r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntry) . - (let r = ((get_TLBEntry w__0 :: 117 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 1 :: int)::ii) (( 1 :: int)::ii) v :: 117 Word.word)) in - write_reg r_ref (Mk_TLBEntry r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 r) (( 1 :: int)::ii) (( 1 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntry_d0 : TLBEntry -> mword ty1 -> TLBEntry*) -fun update_TLBEntry_d0 :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where - " update_TLBEntry_d0 (Mk_TLBEntry (v)) x = ( - Mk_TLBEntry ((update_subrange_vec_dec v (( 1 :: int)::ii) (( 1 :: int)::ii) x :: 117 Word.word)))" +definition update_TLBEntry_d0 :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where + " update_TLBEntry_d0 v x = ( + (v (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 1 :: int)::ii) (( 1 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|)))" (*val _get_TLBEntry_v0 : TLBEntry -> mword ty1*) -fun get_TLBEntry_v0 :: " TLBEntry \<Rightarrow>(1)Word.word " where - " get_TLBEntry_v0 (Mk_TLBEntry (v)) = ( (subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word))" +definition get_TLBEntry_v0 :: " TLBEntry \<Rightarrow>(1)Word.word " where + " get_TLBEntry_v0 v = ( (subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word))" (*val _set_TLBEntry_v0 : register_ref regstate register_value TLBEntry -> mword ty1 -> M unit*) definition set_TLBEntry_v0 :: "((regstate),(register_value),(TLBEntry))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_TLBEntry_v0 r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: TLBEntry) . - (let r = ((get_TLBEntry w__0 :: 117 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 0 :: int)::ii) (( 0 :: int)::ii) v :: 117 Word.word)) in - write_reg r_ref (Mk_TLBEntry r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 r) (( 0 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|))) in + write_reg r_ref r)))" (*val _update_TLBEntry_v0 : TLBEntry -> mword ty1 -> TLBEntry*) -fun update_TLBEntry_v0 :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where - " update_TLBEntry_v0 (Mk_TLBEntry (v)) x = ( - Mk_TLBEntry ((update_subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) x :: 117 Word.word)))" +definition update_TLBEntry_v0 :: " TLBEntry \<Rightarrow>(1)Word.word \<Rightarrow> TLBEntry " where + " update_TLBEntry_v0 v x = ( + (v (| + TLBEntry_TLBEntry_chunk_0 := + ((update_subrange_vec_dec(TLBEntry_TLBEntry_chunk_0 v) (( 0 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 64 Word.word))|)))" definition TLBEntries :: "(((regstate),(register_value),(TLBEntry))register_ref)list " where @@ -1463,253 +1804,367 @@ definition TLBEntries :: "(((regstate),(register_value),(TLBEntry))register_ref definition undefined_StatusReg :: " unit \<Rightarrow>((register_value),(StatusReg),(exception))monad " where " undefined_StatusReg _ = ( (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 32 :: int)::ii) :: ( 32 Word.word) M) \<bind> (\<lambda> (w__0 :: 32 Word.word) . - internal_pick [Mk_StatusReg w__0]))" + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 32 :: int)::ii) :: ( 32 Word.word) M) \<bind> (\<lambda> (w__0 :: 32 Word.word) . + return ((| StatusReg_StatusReg_chunk_0 = w__0 |))))" + + +(*val Mk_StatusReg : mword ty32 -> StatusReg*) + +definition Mk_StatusReg :: "(32)Word.word \<Rightarrow> StatusReg " where + " Mk_StatusReg v = ( + (| StatusReg_StatusReg_chunk_0 = ((subrange_vec_dec v (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) |) )" -(*val _get_StatusReg : StatusReg -> mword ty32*) +(*val _get_StatusReg_bits : StatusReg -> mword ty32*) -fun get_StatusReg :: " StatusReg \<Rightarrow>(32)Word.word " where - " get_StatusReg (Mk_StatusReg (v)) = ( v )" +definition get_StatusReg_bits :: " StatusReg \<Rightarrow>(32)Word.word " where + " get_StatusReg_bits v = ( + (subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word))" -(*val _set_StatusReg : register_ref regstate register_value StatusReg -> mword ty32 -> M unit*) +(*val _set_StatusReg_bits : register_ref regstate register_value StatusReg -> mword ty32 -> M unit*) -definition set_StatusReg :: "((regstate),(register_value),(StatusReg))register_ref \<Rightarrow>(32)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where - " set_StatusReg r_ref v = ( +definition set_StatusReg_bits :: "((regstate),(register_value),(StatusReg))register_ref \<Rightarrow>(32)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where + " set_StatusReg_bits r_ref v = ( reg_deref r_ref \<bind> (\<lambda> r . - (let r = (Mk_StatusReg v) in + (let r = + ((r (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 r) (( 31 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec v (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + :: 32 Word.word))|))) in write_reg r_ref r)))" +(*val _update_StatusReg_bits : StatusReg -> mword ty32 -> StatusReg*) + +definition update_StatusReg_bits :: " StatusReg \<Rightarrow>(32)Word.word \<Rightarrow> StatusReg " where + " update_StatusReg_bits v x = ( + (v (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 31 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec x (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + :: 32 Word.word))|)))" + + (*val _get_StatusReg_CU : StatusReg -> mword ty4*) -fun get_StatusReg_CU :: " StatusReg \<Rightarrow>(4)Word.word " where - " get_StatusReg_CU (Mk_StatusReg (v)) = ( (subrange_vec_dec v (( 31 :: int)::ii) (( 28 :: int)::ii) :: 4 Word.word))" +definition get_StatusReg_CU :: " StatusReg \<Rightarrow>(4)Word.word " where + " get_StatusReg_CU v = ( + (subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 31 :: int)::ii) (( 28 :: int)::ii) :: 4 Word.word))" (*val _set_StatusReg_CU : register_ref regstate register_value StatusReg -> mword ty4 -> M unit*) definition set_StatusReg_CU :: "((regstate),(register_value),(StatusReg))register_ref \<Rightarrow>(4)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_StatusReg_CU r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: StatusReg) . - (let r = ((get_StatusReg w__0 :: 32 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 31 :: int)::ii) (( 28 :: int)::ii) v :: 32 Word.word)) in - write_reg r_ref (Mk_StatusReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 r) (( 31 :: int)::ii) (( 28 :: int)::ii) + ((subrange_vec_dec v (( 3 :: int)::ii) (( 0 :: int)::ii) :: 4 Word.word)) + :: 32 Word.word))|))) in + write_reg r_ref r)))" (*val _update_StatusReg_CU : StatusReg -> mword ty4 -> StatusReg*) -fun update_StatusReg_CU :: " StatusReg \<Rightarrow>(4)Word.word \<Rightarrow> StatusReg " where - " update_StatusReg_CU (Mk_StatusReg (v)) x = ( - Mk_StatusReg ((update_subrange_vec_dec v (( 31 :: int)::ii) (( 28 :: int)::ii) x :: 32 Word.word)))" +definition update_StatusReg_CU :: " StatusReg \<Rightarrow>(4)Word.word \<Rightarrow> StatusReg " where + " update_StatusReg_CU v x = ( + (v (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 31 :: int)::ii) (( 28 :: int)::ii) + ((subrange_vec_dec x (( 3 :: int)::ii) (( 0 :: int)::ii) :: 4 Word.word)) + :: 32 Word.word))|)))" (*val _get_StatusReg_BEV : StatusReg -> mword ty1*) -fun get_StatusReg_BEV :: " StatusReg \<Rightarrow>(1)Word.word " where - " get_StatusReg_BEV (Mk_StatusReg (v)) = ( (subrange_vec_dec v (( 22 :: int)::ii) (( 22 :: int)::ii) :: 1 Word.word))" +definition get_StatusReg_BEV :: " StatusReg \<Rightarrow>(1)Word.word " where + " get_StatusReg_BEV v = ( + (subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 22 :: int)::ii) (( 22 :: int)::ii) :: 1 Word.word))" (*val _set_StatusReg_BEV : register_ref regstate register_value StatusReg -> mword ty1 -> M unit*) definition set_StatusReg_BEV :: "((regstate),(register_value),(StatusReg))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_StatusReg_BEV r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: StatusReg) . - (let r = ((get_StatusReg w__0 :: 32 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 22 :: int)::ii) (( 22 :: int)::ii) v :: 32 Word.word)) in - write_reg r_ref (Mk_StatusReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 r) (( 22 :: int)::ii) (( 22 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|))) in + write_reg r_ref r)))" (*val _update_StatusReg_BEV : StatusReg -> mword ty1 -> StatusReg*) -fun update_StatusReg_BEV :: " StatusReg \<Rightarrow>(1)Word.word \<Rightarrow> StatusReg " where - " update_StatusReg_BEV (Mk_StatusReg (v)) x = ( - Mk_StatusReg ((update_subrange_vec_dec v (( 22 :: int)::ii) (( 22 :: int)::ii) x :: 32 Word.word)))" +definition update_StatusReg_BEV :: " StatusReg \<Rightarrow>(1)Word.word \<Rightarrow> StatusReg " where + " update_StatusReg_BEV v x = ( + (v (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 22 :: int)::ii) (( 22 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|)))" (*val _get_StatusReg_IM : StatusReg -> mword ty8*) -fun get_StatusReg_IM :: " StatusReg \<Rightarrow>(8)Word.word " where - " get_StatusReg_IM (Mk_StatusReg (v)) = ( (subrange_vec_dec v (( 15 :: int)::ii) (( 8 :: int)::ii) :: 8 Word.word))" +definition get_StatusReg_IM :: " StatusReg \<Rightarrow>(8)Word.word " where + " get_StatusReg_IM v = ( + (subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 15 :: int)::ii) (( 8 :: int)::ii) :: 8 Word.word))" (*val _set_StatusReg_IM : register_ref regstate register_value StatusReg -> mword ty8 -> M unit*) definition set_StatusReg_IM :: "((regstate),(register_value),(StatusReg))register_ref \<Rightarrow>(8)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_StatusReg_IM r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: StatusReg) . - (let r = ((get_StatusReg w__0 :: 32 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 15 :: int)::ii) (( 8 :: int)::ii) v :: 32 Word.word)) in - write_reg r_ref (Mk_StatusReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 r) (( 15 :: int)::ii) (( 8 :: int)::ii) + ((subrange_vec_dec v (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word)) + :: 32 Word.word))|))) in + write_reg r_ref r)))" (*val _update_StatusReg_IM : StatusReg -> mword ty8 -> StatusReg*) -fun update_StatusReg_IM :: " StatusReg \<Rightarrow>(8)Word.word \<Rightarrow> StatusReg " where - " update_StatusReg_IM (Mk_StatusReg (v)) x = ( - Mk_StatusReg ((update_subrange_vec_dec v (( 15 :: int)::ii) (( 8 :: int)::ii) x :: 32 Word.word)))" +definition update_StatusReg_IM :: " StatusReg \<Rightarrow>(8)Word.word \<Rightarrow> StatusReg " where + " update_StatusReg_IM v x = ( + (v (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 15 :: int)::ii) (( 8 :: int)::ii) + ((subrange_vec_dec x (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word)) + :: 32 Word.word))|)))" (*val _get_StatusReg_KX : StatusReg -> mword ty1*) -fun get_StatusReg_KX :: " StatusReg \<Rightarrow>(1)Word.word " where - " get_StatusReg_KX (Mk_StatusReg (v)) = ( (subrange_vec_dec v (( 7 :: int)::ii) (( 7 :: int)::ii) :: 1 Word.word))" +definition get_StatusReg_KX :: " StatusReg \<Rightarrow>(1)Word.word " where + " get_StatusReg_KX v = ( + (subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 7 :: int)::ii) (( 7 :: int)::ii) :: 1 Word.word))" (*val _set_StatusReg_KX : register_ref regstate register_value StatusReg -> mword ty1 -> M unit*) definition set_StatusReg_KX :: "((regstate),(register_value),(StatusReg))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_StatusReg_KX r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: StatusReg) . - (let r = ((get_StatusReg w__0 :: 32 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 7 :: int)::ii) (( 7 :: int)::ii) v :: 32 Word.word)) in - write_reg r_ref (Mk_StatusReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 r) (( 7 :: int)::ii) (( 7 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|))) in + write_reg r_ref r)))" (*val _update_StatusReg_KX : StatusReg -> mword ty1 -> StatusReg*) -fun update_StatusReg_KX :: " StatusReg \<Rightarrow>(1)Word.word \<Rightarrow> StatusReg " where - " update_StatusReg_KX (Mk_StatusReg (v)) x = ( - Mk_StatusReg ((update_subrange_vec_dec v (( 7 :: int)::ii) (( 7 :: int)::ii) x :: 32 Word.word)))" +definition update_StatusReg_KX :: " StatusReg \<Rightarrow>(1)Word.word \<Rightarrow> StatusReg " where + " update_StatusReg_KX v x = ( + (v (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 7 :: int)::ii) (( 7 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|)))" (*val _get_StatusReg_SX : StatusReg -> mword ty1*) -fun get_StatusReg_SX :: " StatusReg \<Rightarrow>(1)Word.word " where - " get_StatusReg_SX (Mk_StatusReg (v)) = ( (subrange_vec_dec v (( 6 :: int)::ii) (( 6 :: int)::ii) :: 1 Word.word))" +definition get_StatusReg_SX :: " StatusReg \<Rightarrow>(1)Word.word " where + " get_StatusReg_SX v = ( + (subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 6 :: int)::ii) (( 6 :: int)::ii) :: 1 Word.word))" (*val _set_StatusReg_SX : register_ref regstate register_value StatusReg -> mword ty1 -> M unit*) definition set_StatusReg_SX :: "((regstate),(register_value),(StatusReg))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_StatusReg_SX r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: StatusReg) . - (let r = ((get_StatusReg w__0 :: 32 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 6 :: int)::ii) (( 6 :: int)::ii) v :: 32 Word.word)) in - write_reg r_ref (Mk_StatusReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 r) (( 6 :: int)::ii) (( 6 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|))) in + write_reg r_ref r)))" (*val _update_StatusReg_SX : StatusReg -> mword ty1 -> StatusReg*) -fun update_StatusReg_SX :: " StatusReg \<Rightarrow>(1)Word.word \<Rightarrow> StatusReg " where - " update_StatusReg_SX (Mk_StatusReg (v)) x = ( - Mk_StatusReg ((update_subrange_vec_dec v (( 6 :: int)::ii) (( 6 :: int)::ii) x :: 32 Word.word)))" +definition update_StatusReg_SX :: " StatusReg \<Rightarrow>(1)Word.word \<Rightarrow> StatusReg " where + " update_StatusReg_SX v x = ( + (v (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 6 :: int)::ii) (( 6 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|)))" (*val _get_StatusReg_UX : StatusReg -> mword ty1*) -fun get_StatusReg_UX :: " StatusReg \<Rightarrow>(1)Word.word " where - " get_StatusReg_UX (Mk_StatusReg (v)) = ( (subrange_vec_dec v (( 5 :: int)::ii) (( 5 :: int)::ii) :: 1 Word.word))" +definition get_StatusReg_UX :: " StatusReg \<Rightarrow>(1)Word.word " where + " get_StatusReg_UX v = ( + (subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 5 :: int)::ii) (( 5 :: int)::ii) :: 1 Word.word))" (*val _set_StatusReg_UX : register_ref regstate register_value StatusReg -> mword ty1 -> M unit*) definition set_StatusReg_UX :: "((regstate),(register_value),(StatusReg))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_StatusReg_UX r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: StatusReg) . - (let r = ((get_StatusReg w__0 :: 32 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 5 :: int)::ii) (( 5 :: int)::ii) v :: 32 Word.word)) in - write_reg r_ref (Mk_StatusReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 r) (( 5 :: int)::ii) (( 5 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|))) in + write_reg r_ref r)))" (*val _update_StatusReg_UX : StatusReg -> mword ty1 -> StatusReg*) -fun update_StatusReg_UX :: " StatusReg \<Rightarrow>(1)Word.word \<Rightarrow> StatusReg " where - " update_StatusReg_UX (Mk_StatusReg (v)) x = ( - Mk_StatusReg ((update_subrange_vec_dec v (( 5 :: int)::ii) (( 5 :: int)::ii) x :: 32 Word.word)))" +definition update_StatusReg_UX :: " StatusReg \<Rightarrow>(1)Word.word \<Rightarrow> StatusReg " where + " update_StatusReg_UX v x = ( + (v (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 5 :: int)::ii) (( 5 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|)))" (*val _get_StatusReg_KSU : StatusReg -> mword ty2*) -fun get_StatusReg_KSU :: " StatusReg \<Rightarrow>(2)Word.word " where - " get_StatusReg_KSU (Mk_StatusReg (v)) = ( (subrange_vec_dec v (( 4 :: int)::ii) (( 3 :: int)::ii) :: 2 Word.word))" +definition get_StatusReg_KSU :: " StatusReg \<Rightarrow>(2)Word.word " where + " get_StatusReg_KSU v = ( + (subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 4 :: int)::ii) (( 3 :: int)::ii) :: 2 Word.word))" (*val _set_StatusReg_KSU : register_ref regstate register_value StatusReg -> mword ty2 -> M unit*) definition set_StatusReg_KSU :: "((regstate),(register_value),(StatusReg))register_ref \<Rightarrow>(2)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_StatusReg_KSU r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: StatusReg) . - (let r = ((get_StatusReg w__0 :: 32 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 4 :: int)::ii) (( 3 :: int)::ii) v :: 32 Word.word)) in - write_reg r_ref (Mk_StatusReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 r) (( 4 :: int)::ii) (( 3 :: int)::ii) + ((subrange_vec_dec v (( 1 :: int)::ii) (( 0 :: int)::ii) :: 2 Word.word)) + :: 32 Word.word))|))) in + write_reg r_ref r)))" (*val _update_StatusReg_KSU : StatusReg -> mword ty2 -> StatusReg*) -fun update_StatusReg_KSU :: " StatusReg \<Rightarrow>(2)Word.word \<Rightarrow> StatusReg " where - " update_StatusReg_KSU (Mk_StatusReg (v)) x = ( - Mk_StatusReg ((update_subrange_vec_dec v (( 4 :: int)::ii) (( 3 :: int)::ii) x :: 32 Word.word)))" +definition update_StatusReg_KSU :: " StatusReg \<Rightarrow>(2)Word.word \<Rightarrow> StatusReg " where + " update_StatusReg_KSU v x = ( + (v (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 4 :: int)::ii) (( 3 :: int)::ii) + ((subrange_vec_dec x (( 1 :: int)::ii) (( 0 :: int)::ii) :: 2 Word.word)) + :: 32 Word.word))|)))" (*val _get_StatusReg_ERL : StatusReg -> mword ty1*) -fun get_StatusReg_ERL :: " StatusReg \<Rightarrow>(1)Word.word " where - " get_StatusReg_ERL (Mk_StatusReg (v)) = ( (subrange_vec_dec v (( 2 :: int)::ii) (( 2 :: int)::ii) :: 1 Word.word))" +definition get_StatusReg_ERL :: " StatusReg \<Rightarrow>(1)Word.word " where + " get_StatusReg_ERL v = ( + (subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 2 :: int)::ii) (( 2 :: int)::ii) :: 1 Word.word))" (*val _set_StatusReg_ERL : register_ref regstate register_value StatusReg -> mword ty1 -> M unit*) definition set_StatusReg_ERL :: "((regstate),(register_value),(StatusReg))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_StatusReg_ERL r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: StatusReg) . - (let r = ((get_StatusReg w__0 :: 32 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 2 :: int)::ii) (( 2 :: int)::ii) v :: 32 Word.word)) in - write_reg r_ref (Mk_StatusReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 r) (( 2 :: int)::ii) (( 2 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|))) in + write_reg r_ref r)))" (*val _update_StatusReg_ERL : StatusReg -> mword ty1 -> StatusReg*) -fun update_StatusReg_ERL :: " StatusReg \<Rightarrow>(1)Word.word \<Rightarrow> StatusReg " where - " update_StatusReg_ERL (Mk_StatusReg (v)) x = ( - Mk_StatusReg ((update_subrange_vec_dec v (( 2 :: int)::ii) (( 2 :: int)::ii) x :: 32 Word.word)))" +definition update_StatusReg_ERL :: " StatusReg \<Rightarrow>(1)Word.word \<Rightarrow> StatusReg " where + " update_StatusReg_ERL v x = ( + (v (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 2 :: int)::ii) (( 2 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|)))" (*val _get_StatusReg_EXL : StatusReg -> mword ty1*) -fun get_StatusReg_EXL :: " StatusReg \<Rightarrow>(1)Word.word " where - " get_StatusReg_EXL (Mk_StatusReg (v)) = ( (subrange_vec_dec v (( 1 :: int)::ii) (( 1 :: int)::ii) :: 1 Word.word))" +definition get_StatusReg_EXL :: " StatusReg \<Rightarrow>(1)Word.word " where + " get_StatusReg_EXL v = ( + (subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 1 :: int)::ii) (( 1 :: int)::ii) :: 1 Word.word))" (*val _set_StatusReg_EXL : register_ref regstate register_value StatusReg -> mword ty1 -> M unit*) definition set_StatusReg_EXL :: "((regstate),(register_value),(StatusReg))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_StatusReg_EXL r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: StatusReg) . - (let r = ((get_StatusReg w__0 :: 32 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 1 :: int)::ii) (( 1 :: int)::ii) v :: 32 Word.word)) in - write_reg r_ref (Mk_StatusReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 r) (( 1 :: int)::ii) (( 1 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|))) in + write_reg r_ref r)))" (*val _update_StatusReg_EXL : StatusReg -> mword ty1 -> StatusReg*) -fun update_StatusReg_EXL :: " StatusReg \<Rightarrow>(1)Word.word \<Rightarrow> StatusReg " where - " update_StatusReg_EXL (Mk_StatusReg (v)) x = ( - Mk_StatusReg ((update_subrange_vec_dec v (( 1 :: int)::ii) (( 1 :: int)::ii) x :: 32 Word.word)))" +definition update_StatusReg_EXL :: " StatusReg \<Rightarrow>(1)Word.word \<Rightarrow> StatusReg " where + " update_StatusReg_EXL v x = ( + (v (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 1 :: int)::ii) (( 1 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|)))" (*val _get_StatusReg_IE : StatusReg -> mword ty1*) -fun get_StatusReg_IE :: " StatusReg \<Rightarrow>(1)Word.word " where - " get_StatusReg_IE (Mk_StatusReg (v)) = ( (subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word))" +definition get_StatusReg_IE :: " StatusReg \<Rightarrow>(1)Word.word " where + " get_StatusReg_IE v = ( + (subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word))" (*val _set_StatusReg_IE : register_ref regstate register_value StatusReg -> mword ty1 -> M unit*) definition set_StatusReg_IE :: "((regstate),(register_value),(StatusReg))register_ref \<Rightarrow>(1)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_StatusReg_IE r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: StatusReg) . - (let r = ((get_StatusReg w__0 :: 32 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 0 :: int)::ii) (( 0 :: int)::ii) v :: 32 Word.word)) in - write_reg r_ref (Mk_StatusReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 r) (( 0 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|))) in + write_reg r_ref r)))" (*val _update_StatusReg_IE : StatusReg -> mword ty1 -> StatusReg*) -fun update_StatusReg_IE :: " StatusReg \<Rightarrow>(1)Word.word \<Rightarrow> StatusReg " where - " update_StatusReg_IE (Mk_StatusReg (v)) x = ( - Mk_StatusReg ((update_subrange_vec_dec v (( 0 :: int)::ii) (( 0 :: int)::ii) x :: 32 Word.word)))" +definition update_StatusReg_IE :: " StatusReg \<Rightarrow>(1)Word.word \<Rightarrow> StatusReg " where + " update_StatusReg_IE v x = ( + (v (| + StatusReg_StatusReg_chunk_0 := + ((update_subrange_vec_dec(StatusReg_StatusReg_chunk_0 v) (( 0 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec x (( 0 :: int)::ii) (( 0 :: int)::ii) :: 1 Word.word)) + :: 32 Word.word))|)))" (*val execute_branch : mword ty64 -> M unit*) @@ -1747,10 +2202,10 @@ definition rGPR :: "(5)Word.word \<Rightarrow>((register_value),((64)Word.word) definition wGPR :: "(5)Word.word \<Rightarrow>(64)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " wGPR idx v = ( (let i = (Word.uint idx) in - if (((i = (( 0 :: int)::ii)))) then return () - else + if (((i \<noteq> (( 0 :: int)::ii)))) then read_reg GPR_ref \<bind> (\<lambda> (w__0 :: ( 64 Word.word) list) . - write_reg GPR_ref ((update_list_dec w__0 i v :: ( 64 Word.word) list)))))" + write_reg GPR_ref ((update_list_dec w__0 i v :: ( 64 Word.word) list))) + else return () ))" @@ -1771,25 +2226,25 @@ definition wGPR :: "(5)Word.word \<Rightarrow>(64)Word.word \<Rightarrow>((regi definition Exception_of_num :: " int \<Rightarrow> Exception " where " Exception_of_num arg0 = ( - (let l__81 = arg0 in - if (((l__81 = (( 0 :: int)::ii)))) then Interrupt - else if (((l__81 = (( 1 :: int)::ii)))) then TLBMod - else if (((l__81 = (( 2 :: int)::ii)))) then TLBL - else if (((l__81 = (( 3 :: int)::ii)))) then TLBS - else if (((l__81 = (( 4 :: int)::ii)))) then AdEL - else if (((l__81 = (( 5 :: int)::ii)))) then AdES - else if (((l__81 = (( 6 :: int)::ii)))) then Sys - else if (((l__81 = (( 7 :: int)::ii)))) then Bp - else if (((l__81 = (( 8 :: int)::ii)))) then ResI - else if (((l__81 = (( 9 :: int)::ii)))) then CpU - else if (((l__81 = (( 10 :: int)::ii)))) then Ov - else if (((l__81 = (( 11 :: int)::ii)))) then Tr - else if (((l__81 = (( 12 :: int)::ii)))) then C2E - else if (((l__81 = (( 13 :: int)::ii)))) then C2Trap - else if (((l__81 = (( 14 :: int)::ii)))) then XTLBRefillL - else if (((l__81 = (( 15 :: int)::ii)))) then XTLBRefillS - else if (((l__81 = (( 16 :: int)::ii)))) then XTLBInvL - else if (((l__81 = (( 17 :: int)::ii)))) then XTLBInvS + (let p00 = arg0 in + if (((p00 = (( 0 :: int)::ii)))) then Interrupt + else if (((p00 = (( 1 :: int)::ii)))) then TLBMod + else if (((p00 = (( 2 :: int)::ii)))) then TLBL + else if (((p00 = (( 3 :: int)::ii)))) then TLBS + else if (((p00 = (( 4 :: int)::ii)))) then AdEL + else if (((p00 = (( 5 :: int)::ii)))) then AdES + else if (((p00 = (( 6 :: int)::ii)))) then Sys + else if (((p00 = (( 7 :: int)::ii)))) then Bp + else if (((p00 = (( 8 :: int)::ii)))) then ResI + else if (((p00 = (( 9 :: int)::ii)))) then CpU + else if (((p00 = (( 10 :: int)::ii)))) then Ov + else if (((p00 = (( 11 :: int)::ii)))) then Tr + else if (((p00 = (( 12 :: int)::ii)))) then C2E + else if (((p00 = (( 13 :: int)::ii)))) then C2Trap + else if (((p00 = (( 14 :: int)::ii)))) then XTLBRefillL + else if (((p00 = (( 15 :: int)::ii)))) then XTLBRefillS + else if (((p00 = (( 16 :: int)::ii)))) then XTLBInvL + else if (((p00 = (( 17 :: int)::ii)))) then XTLBInvS else MCheck))" @@ -1892,7 +2347,7 @@ definition SignalExceptionMIPS :: " Exception \<Rightarrow>(64)Word.word \<Righ ((write_reg nextPC_ref ((sub_vec - ((add_vec vectorBase ((sign_extend1 (( 64 :: int)::ii) vectorOffset :: 64 Word.word)) :: 64 Word.word)) + ((add_vec vectorBase ((mips_sign_extend (( 64 :: int)::ii) vectorOffset :: 64 Word.word)) :: 64 Word.word)) kccBase :: 64 Word.word)) \<then> set_CauseReg_ExcCode CP0Cause_ref ((ExceptionCode ex :: 5 Word.word))) \<then> @@ -2051,10 +2506,10 @@ definition SignalException :: " Exception \<Rightarrow>((register_value),'o,(ex (read_reg PCC_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__1 :: 257 Word.word) . (let pcc = (capRegToCapStruct w__1) in (let (success, epcc) = (setCapOffset pcc pc) in - if success then write_reg C31_ref ((capStructToCapReg epcc :: 257 Word.word)) + if success then write_reg EPCC_ref ((capStructToCapReg epcc :: 257 Word.word)) else write_reg - C31_ref + EPCC_ref ((capStructToCapReg ((int_to_cap ((add_vec_int @@ -2063,11 +2518,11 @@ definition SignalException :: " Exception \<Rightarrow>((register_value),'o,(ex :: 64 Word.word)))) :: 257 Word.word)))))) else return () ) \<then> - (read_reg C29_ref :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__2 :: CapReg) . + (read_reg KCC_ref :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__2 :: CapReg) . (write_reg nextPCC_ref w__2 \<then> - (read_reg C29_ref :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__3 :: CapReg) . + (read_reg KCC_ref :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__3 :: CapReg) . (write_reg delayedPCC_ref w__3 \<then> - (read_reg C29_ref :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__4 :: 257 Word.word) . + (read_reg KCC_ref :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__4 :: 257 Word.word) . (let base = (getCapBase ((capRegToCapStruct w__4))) in SignalExceptionMIPS ex ((to_bits ((make_the_value (( 64 :: int)::ii) :: 64 itself)) base :: 64 Word.word))))))))" @@ -2094,9 +2549,9 @@ definition SignalExceptionTLB :: " Exception \<Rightarrow>(64)Word.word \<Right definition MemAccessType_of_num :: " int \<Rightarrow> MemAccessType " where " MemAccessType_of_num arg0 = ( - (let l__79 = arg0 in - if (((l__79 = (( 0 :: int)::ii)))) then Instruction - else if (((l__79 = (( 1 :: int)::ii)))) then LoadData + (let p00 = arg0 in + if (((p00 = (( 0 :: int)::ii)))) then Instruction + else if (((p00 = (( 1 :: int)::ii)))) then LoadData else StoreData))" @@ -2118,9 +2573,9 @@ definition undefined_MemAccessType :: " unit \<Rightarrow>((register_value),(Me definition AccessLevel_of_num :: " int \<Rightarrow> AccessLevel " where " AccessLevel_of_num arg0 = ( - (let l__77 = arg0 in - if (((l__77 = (( 0 :: int)::ii)))) then User - else if (((l__77 = (( 1 :: int)::ii)))) then Supervisor + (let p00 = arg0 in + if (((p00 = (( 0 :: int)::ii)))) then User + else if (((p00 = (( 1 :: int)::ii)))) then Supervisor else Kernel))" @@ -2171,8 +2626,8 @@ definition getAccessLevel :: " unit \<Rightarrow>((register_value),(AccessLevel if w__2 then return Kernel else read_reg CP0Status_ref \<bind> (\<lambda> (w__3 :: StatusReg) . - (let p__133 = ((get_StatusReg_KSU w__3 :: 2 Word.word)) in - (let b__0 = p__133 in + (let p__31 = ((get_StatusReg_KSU w__3 :: 2 Word.word)) in + (let b__0 = p__31 in return (if (((b__0 = (vec_of_bits [B0,B0] :: 2 Word.word)))) then Kernel else if (((b__0 = (vec_of_bits [B0,B1] :: 2 Word.word)))) then Supervisor else if (((b__0 = (vec_of_bits [B1,B0] :: 2 Word.word)))) then User @@ -2234,10 +2689,10 @@ definition incrementCP0Count :: " unit \<Rightarrow>((register_value),(unit),(e definition decode_failure_of_num :: " int \<Rightarrow> decode_failure " where " decode_failure_of_num arg0 = ( - (let l__74 = arg0 in - if (((l__74 = (( 0 :: int)::ii)))) then No_matching_pattern - else if (((l__74 = (( 1 :: int)::ii)))) then Unsupported_instruction - else if (((l__74 = (( 2 :: int)::ii)))) then Illegal_instruction + (let p00 = arg0 in + if (((p00 = (( 0 :: int)::ii)))) then No_matching_pattern + else if (((p00 = (( 1 :: int)::ii)))) then Unsupported_instruction + else if (((p00 = (( 2 :: int)::ii)))) then Illegal_instruction else Internal_error))" @@ -2258,14 +2713,14 @@ definition undefined_decode_failure :: " unit \<Rightarrow>((register_value),(d definition Comparison_of_num :: " int \<Rightarrow> Comparison " where " Comparison_of_num arg0 = ( - (let l__67 = arg0 in - if (((l__67 = (( 0 :: int)::ii)))) then EQ' - else if (((l__67 = (( 1 :: int)::ii)))) then NE - else if (((l__67 = (( 2 :: int)::ii)))) then GE - else if (((l__67 = (( 3 :: int)::ii)))) then GEU - else if (((l__67 = (( 4 :: int)::ii)))) then GT' - else if (((l__67 = (( 5 :: int)::ii)))) then LE - else if (((l__67 = (( 6 :: int)::ii)))) then LT' + (let p00 = arg0 in + if (((p00 = (( 0 :: int)::ii)))) then EQ' + else if (((p00 = (( 1 :: int)::ii)))) then NE + else if (((p00 = (( 2 :: int)::ii)))) then GE + else if (((p00 = (( 3 :: int)::ii)))) then GEU + else if (((p00 = (( 4 :: int)::ii)))) then GT' + else if (((p00 = (( 5 :: int)::ii)))) then LE + else if (((p00 = (( 6 :: int)::ii)))) then LT' else LTU))" @@ -2305,10 +2760,10 @@ fun compare :: " Comparison \<Rightarrow>(64)Word.word \<Rightarrow>(64)Word.wo definition WordType_of_num :: " int \<Rightarrow> WordType " where " WordType_of_num arg0 = ( - (let l__64 = arg0 in - if (((l__64 = (( 0 :: int)::ii)))) then B - else if (((l__64 = (( 1 :: int)::ii)))) then H - else if (((l__64 = (( 2 :: int)::ii)))) then W + (let p00 = arg0 in + if (((p00 = (( 0 :: int)::ii)))) then B + else if (((p00 = (( 1 :: int)::ii)))) then H + else if (((p00 = (( 2 :: int)::ii)))) then W else D))" @@ -2327,6 +2782,32 @@ definition undefined_WordType :: " unit \<Rightarrow>((register_value),(WordTyp " undefined_WordType _ = ( internal_pick [B,H,W,D])" +(*val WordTypeUnaligned_of_num : integer -> WordTypeUnaligned*) + +definition WordTypeUnaligned_of_num :: " int \<Rightarrow> WordTypeUnaligned " where + " WordTypeUnaligned_of_num arg0 = ( + (let p00 = arg0 in + if (((p00 = (( 0 :: int)::ii)))) then WL + else if (((p00 = (( 1 :: int)::ii)))) then WR + else if (((p00 = (( 2 :: int)::ii)))) then DL + else DR))" + + +(*val num_of_WordTypeUnaligned : WordTypeUnaligned -> integer*) + +fun num_of_WordTypeUnaligned :: " WordTypeUnaligned \<Rightarrow> int " where + " num_of_WordTypeUnaligned WL = ( (( 0 :: int)::ii))" +|" num_of_WordTypeUnaligned WR = ( (( 1 :: int)::ii))" +|" num_of_WordTypeUnaligned DL = ( (( 2 :: int)::ii))" +|" num_of_WordTypeUnaligned DR = ( (( 3 :: int)::ii))" + + +(*val undefined_WordTypeUnaligned : unit -> M WordTypeUnaligned*) + +definition undefined_WordTypeUnaligned :: " unit \<Rightarrow>((register_value),(WordTypeUnaligned),(exception))monad " where + " undefined_WordTypeUnaligned _ = ( internal_pick [WL,WR,DL,DR])" + + (*val wordWidthBytes : WordType -> integer*) fun wordWidthBytes :: " WordType \<Rightarrow> int " where @@ -2349,19 +2830,52 @@ definition isAddressAligned :: "(64)Word.word \<Rightarrow> WordType \<Rightarr alignment_width)))))" -(*val MEMr_wrapper : forall 'p8_times_n_ . Size 'p8_times_n_ => mword ty64 -> integer -> M (mword 'p8_times_n_)*) +(*val MEMr_wrapper : forall 'p8_times_n_ . Size 'p8_times_n_ => integer -> mword ty64 -> integer -> M (mword 'p8_times_n_)*) -definition MEMr_wrapper :: "(64)Word.word \<Rightarrow> int \<Rightarrow>((register_value),(('p8_times_n_::len)Word.word),(exception))monad " where - " MEMr_wrapper addr size1 = ( - (MEMr instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict addr size1 :: (( 'p8_times_n_::len)Word.word) M) \<bind> (\<lambda> w__0 . - return ((reverse_endianness w__0 :: ( 'p8_times_n_::len)Word.word))))" +definition MEMr_wrapper :: " int \<Rightarrow>(64)Word.word \<Rightarrow> int \<Rightarrow>((register_value),(('p8_times_n_::len)Word.word),(exception))monad " where + " MEMr_wrapper (p8_times_n___tv :: int) addr size1 = ( + if (((addr = (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B1,B1,B1,B1,B1,B1,B1,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)))) then + (read_reg UART_RVALID_ref :: ( 1 Word.word) M) \<bind> (\<lambda> rvalid . + (write_reg UART_RVALID_ref (vec_of_bits [B0] :: 1 Word.word) \<then> + (read_reg UART_RDATA_ref :: ( 8 Word.word) M)) \<bind> (\<lambda> (w__0 :: 8 bits) . + return ((mask0 p8_times_n___tv + ((concat_vec + (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 32 Word.word) + ((concat_vec w__0 + ((concat_vec rvalid + ((concat_vec (vec_of_bits [B0,B0,B0,B0,B0,B0,B0] :: 7 Word.word) + (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 16 Word.word) + :: 23 Word.word)) + :: 24 Word.word)) + :: 32 Word.word)) + :: 64 Word.word)) + :: ( 'p8_times_n_::len)Word.word)))) + else if (((addr = (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B1,B1,B1,B1,B1,B1,B1,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B1,B0,B0] + :: 64 Word.word)))) then + return ((mask0 p8_times_n___tv + (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B1, + B0,B0,B1,B1,B1,B1,B1,B1,B1,B1,B1,B1,B1,B1,B1,B1,B1,B1] + :: 64 Word.word) + :: ( 'p8_times_n_::len)Word.word)) + else + (MEMr instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict addr size1 :: (( 'p8_times_n_::len)Word.word) M) \<bind> (\<lambda> w__1 . + return ((reverse_endianness w__1 :: ( 'p8_times_n_::len)Word.word))))" (*val MEMr_reserve_wrapper : forall 'p8_times_n_ . Size 'p8_times_n_ => mword ty64 -> integer -> M (mword 'p8_times_n_)*) definition MEMr_reserve_wrapper :: "(64)Word.word \<Rightarrow> int \<Rightarrow>((register_value),(('p8_times_n_::len)Word.word),(exception))monad " where " MEMr_reserve_wrapper addr size1 = ( - (MEMr_reserve instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict addr size1 :: (( 'p8_times_n_::len)Word.word) M) \<bind> (\<lambda> w__0 . + (MEMr_reserve instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict addr size1 :: (( 'p8_times_n_::len)Word.word) M) \<bind> (\<lambda> w__0 . return ((reverse_endianness w__0 :: ( 'p8_times_n_::len)Word.word))))" @@ -2377,6 +2891,181 @@ definition init_cp0_state :: " unit \<Rightarrow>((register_value),(unit),(exce (*val dump_cp2_state : unit -> M unit*) +(*val extzv : forall 'n 'm. Size 'm, Size 'n => integer -> mword 'n -> mword 'm*) + +definition extzv :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow>('m::len)Word.word " where + " extzv (m__tv :: int) v = ( (extz_vec m__tv v :: ( 'm::len)Word.word))" + + +(*val extsv : forall 'n 'm. Size 'm, Size 'n => integer -> mword 'n -> mword 'm*) + +definition extsv :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow>('m::len)Word.word " where + " extsv (m__tv :: int) v = ( (exts_vec m__tv v :: ( 'm::len)Word.word))" + + +(*val slice_mask : forall 'n . Size 'n => integer -> ii -> ii -> mword 'n*) + +definition slice_mask :: " int \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('n::len)Word.word " where + " slice_mask (n__tv :: int) i l = ( + (let (one :: 'n bits) = ((extzv n__tv (vec_of_bits [B1] :: 1 Word.word) :: ( 'n::len)Word.word)) in + (shiftl ((sub_vec ((shiftl one l :: ( 'n::len)Word.word)) one :: ( 'n::len)Word.word)) i :: ( 'n::len)Word.word)))" + + +(*val is_zero_subrange : forall 'n . Size 'n => mword 'n -> ii -> ii -> bool*) + +definition is_zero_subrange :: "('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow> bool " where + " is_zero_subrange xs i j = ( + (((and_vec xs + ((slice_mask ((int (size xs))) j ((((i - j)) + (( 1 :: int)::ii))) :: ( 'n::len)Word.word)) + :: ( 'n::len)Word.word)) = ((extzv ((int (size xs))) (vec_of_bits [B0] :: 1 Word.word) :: ( 'n::len)Word.word))))" + + +(*val is_ones_subrange : forall 'n . Size 'n => mword 'n -> ii -> ii -> bool*) + +definition is_ones_subrange :: "('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow> bool " where + " is_ones_subrange xs i j = ( + (let (m :: 'n bits) = + ((slice_mask ((int (size xs))) j ((((j - i)) + (( 1 :: int)::ii))) :: ( 'n::len)Word.word)) in + (((and_vec xs m :: ( 'n::len)Word.word)) = m)))" + + +(*val slice_slice_concat : forall 'n 'm 'r . Size 'm, Size 'n, Size 'r => integer -> mword 'n -> ii -> ii -> mword 'm -> ii -> ii -> mword 'r*) + +definition slice_slice_concat :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('m::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('r::len)Word.word " where + " slice_slice_concat (r__tv :: int) xs i l ys i' l' = ( + (let xs = + ((shiftr ((and_vec xs ((slice_mask ((int (size xs))) i l :: ( 'n::len)Word.word)) :: ( 'n::len)Word.word)) i :: ( 'n::len)Word.word)) in + (let ys = + ((shiftr ((and_vec ys ((slice_mask ((int (size ys))) i' l' :: ( 'm::len)Word.word)) :: ( 'm::len)Word.word)) i' + :: ( 'm::len)Word.word)) in + (or_vec ((shiftl ((extzv r__tv xs :: ( 'r::len)Word.word)) l' :: ( 'r::len)Word.word)) ((extzv r__tv ys :: ( 'r::len)Word.word)) + :: ( 'r::len)Word.word))))" + + +(*val slice_zeros_concat : forall 'n 'r . Size 'n, Size 'r => integer -> mword 'n -> ii -> integer -> integer -> mword 'r*) + +definition slice_zeros_concat :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('r::len)Word.word " where + " slice_zeros_concat (r__tv :: int) xs i l l' = ( + (let xs = + ((shiftr ((and_vec xs ((slice_mask ((int (size xs))) i l :: ( 'n::len)Word.word)) :: ( 'n::len)Word.word)) i :: ( 'n::len)Word.word)) in + (shiftl ((extzv r__tv xs :: ( 'r::len)Word.word)) l' :: ( 'r::len)Word.word)))" + + +(*val subrange_subrange_eq : forall 'n . Size 'n => mword 'n -> ii -> ii -> mword 'n -> ii -> ii -> bool*) + +definition subrange_subrange_eq :: "('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow> bool " where + " subrange_subrange_eq xs i j ys i' j' = ( + (let xs = + ((shiftr + ((and_vec xs + ((slice_mask ((int (size xs))) j ((((i - j)) + (( 1 :: int)::ii))) :: ( 'n::len)Word.word)) + :: ( 'n::len)Word.word)) j + :: ( 'n::len)Word.word)) in + (let ys = + ((shiftr + ((and_vec ys + ((slice_mask ((int (size xs))) j' ((((i' - j')) + (( 1 :: int)::ii))) :: ( 'n::len)Word.word)) + :: ( 'n::len)Word.word)) j' + :: ( 'n::len)Word.word)) in + (xs = ys))))" + + +(*val subrange_subrange_concat : forall 'n 'm 's . Size 'm, Size 'n, Size 's => integer -> mword 'n -> integer -> integer -> mword 'm -> integer -> integer -> mword 's*) + +definition subrange_subrange_concat :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('m::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('s::len)Word.word " where + " subrange_subrange_concat (s__tv :: int) xs i j ys i' j' = ( + (let xs = + ((shiftr + ((and_vec xs + ((slice_mask ((int (size xs))) j ((((i - j)) + (( 1 :: int)::ii))) :: ( 'n::len)Word.word)) + :: ( 'n::len)Word.word)) j + :: ( 'n::len)Word.word)) in + (let ys = + ((shiftr + ((and_vec ys + ((slice_mask ((int (size ys))) j' ((((i' - j')) + (( 1 :: int)::ii))) :: ( 'm::len)Word.word)) + :: ( 'm::len)Word.word)) j' + :: ( 'm::len)Word.word)) in + (or_vec + ((shiftl ((extzv s__tv xs :: ( 's::len)Word.word)) ((((i' - j')) + (( 1 :: int)::ii))) + :: ( 's::len)Word.word)) ((extzv s__tv ys :: ( 's::len)Word.word)) + :: ( 's::len)Word.word))))" + + +(*val place_subrange : forall 'n 'm . Size 'm, Size 'n => integer -> mword 'n -> ii -> ii -> ii -> mword 'm*) + +definition place_subrange :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('m::len)Word.word " where + " place_subrange (m__tv :: int) xs i j shift = ( + (let xs = + ((shiftr + ((and_vec xs + ((slice_mask ((int (size xs))) j ((((i - j)) + (( 1 :: int)::ii))) :: ( 'n::len)Word.word)) + :: ( 'n::len)Word.word)) j + :: ( 'n::len)Word.word)) in + (shiftl ((extzv m__tv xs :: ( 'm::len)Word.word)) shift :: ( 'm::len)Word.word)))" + + +(*val place_slice : forall 'n 'm . Size 'm, Size 'n => integer -> mword 'n -> ii -> ii -> ii -> mword 'm*) + +definition place_slice :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('m::len)Word.word " where + " place_slice (m__tv :: int) xs i l shift = ( + (let xs = + ((shiftr ((and_vec xs ((slice_mask ((int (size xs))) i l :: ( 'n::len)Word.word)) :: ( 'n::len)Word.word)) i :: ( 'n::len)Word.word)) in + (shiftl ((extzv m__tv xs :: ( 'm::len)Word.word)) shift :: ( 'm::len)Word.word)))" + + +(*val zext_slice : forall 'n 'm . Size 'm, Size 'n => integer -> mword 'n -> ii -> ii -> mword 'm*) + +definition zext_slice :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('m::len)Word.word " where + " zext_slice (m__tv :: int) xs i l = ( + (let xs = + ((shiftr ((and_vec xs ((slice_mask ((int (size xs))) i l :: ( 'n::len)Word.word)) :: ( 'n::len)Word.word)) i :: ( 'n::len)Word.word)) in + (extzv m__tv xs :: ( 'm::len)Word.word)))" + + +(*val sext_slice : forall 'n 'm . Size 'm, Size 'n => integer -> mword 'n -> ii -> ii -> mword 'm*) + +definition sext_slice :: " int \<Rightarrow>('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow>('m::len)Word.word " where + " sext_slice (m__tv :: int) xs i l = ( + (let xs = + ((arith_shiftr + ((shiftl ((and_vec xs ((slice_mask ((int (size xs))) i l :: ( 'n::len)Word.word)) :: ( 'n::len)Word.word)) + ((((((int (size xs))) - i)) - l)) + :: ( 'n::len)Word.word)) ((((int (size xs))) - l)) + :: ( 'n::len)Word.word)) in + (extsv m__tv xs :: ( 'm::len)Word.word)))" + + +(*val unsigned_slice : forall 'n . Size 'n => mword 'n -> ii -> ii -> ii*) + +definition unsigned_slice :: "('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow> int " where + " unsigned_slice xs i l = ( + (let xs = + ((shiftr ((and_vec xs ((slice_mask ((int (size xs))) i l :: ( 'n::len)Word.word)) :: ( 'n::len)Word.word)) i :: ( 'n::len)Word.word)) in + Word.uint xs))" + + +(*val unsigned_subrange : forall 'n . Size 'n => mword 'n -> ii -> ii -> ii*) + +definition unsigned_subrange :: "('n::len)Word.word \<Rightarrow> int \<Rightarrow> int \<Rightarrow> int " where + " unsigned_subrange xs i j = ( + (let xs = + ((shiftr + ((and_vec xs + ((slice_mask ((int (size xs))) j ((((i - j)) + (( 1 :: int)::ii))) :: ( 'n::len)Word.word)) + :: ( 'n::len)Word.word)) i + :: ( 'n::len)Word.word)) in + Word.uint xs))" + + +(*val zext_ones : forall 'n . Size 'n => integer -> ii -> mword 'n*) + +definition zext_ones :: " int \<Rightarrow> int \<Rightarrow>('n::len)Word.word " where + " zext_ones (n__tv :: int) m = ( + (let (v :: 'n bits) = ((extsv n__tv (vec_of_bits [B1] :: 1 Word.word) :: ( 'n::len)Word.word)) in + (shiftr v ((((int (size v))) - m)) :: ( 'n::len)Word.word)))" + + (*val tlbEntryMatch : mword ty2 -> mword ty27 -> mword ty8 -> TLBEntry -> bool*) definition tlbEntryMatch :: "(2)Word.word \<Rightarrow>(27)Word.word \<Rightarrow>(8)Word.word \<Rightarrow> TLBEntry \<Rightarrow> bool " where @@ -2388,7 +3077,7 @@ definition tlbEntryMatch :: "(2)Word.word \<Rightarrow>(27)Word.word \<Rightarr (let entryASID = ((get_TLBEntry_asid entry :: 8 Word.word)) in (let entryG = ((get_TLBEntry_g entry :: 1 Word.word)) in (let (vpnMask :: 27 bits) = - ((not_vec ((zero_extend1 (( 27 :: int)::ii) entryMask :: 27 Word.word)) :: 27 Word.word)) in + ((not_vec ((mips_zero_extend (( 27 :: int)::ii) entryMask :: 27 Word.word)) :: 27 Word.word)) in (((bits_to_bool entryValid)) \<and> ((((((r = entryR))) \<and> ((((((((and_vec vpn2 vpnMask :: 27 Word.word)) = ((and_vec entryVPN vpnMask :: 27 Word.word))))) \<and> ((((((asid = entryASID))) \<or> ((bits_to_bool entryG))))))))))))))))))))" @@ -2470,7 +3159,7 @@ definition TLBTranslate2 :: "(64)Word.word \<Rightarrow> MemAccessType \<Righta (SignalExceptionTLB TLBMod vAddr :: (( 64 Word.word * bool)) M) else (let (res :: 64 bits) = - ((zero_extend1 (( 64 :: int)::ii) + ((mips_zero_extend (( 64 :: int)::ii) ((subrange_subrange_concat (((((((( 23 :: int)::ii) - ((((evenOddBit - (( 12 :: int)::ii))) - (( 1 :: int)::ii))))) @@ -2514,7 +3203,7 @@ definition TLBTranslateC :: "(64)Word.word \<Rightarrow> MemAccessType \<Righta ((subrange_vec_dec vAddr (( 28 :: int)::ii) (( 0 :: int)::ii) :: 29 Word.word)) :: 32 Word.word)) :: 64 Word.word))) - else + else if (((b__1 = (vec_of_bits [B0,B0] :: 2 Word.word)))) then (Kernel, Some ((concat_vec (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, @@ -2524,7 +3213,8 @@ definition TLBTranslateC :: "(64)Word.word \<Rightarrow> MemAccessType \<Righta ((subrange_vec_dec vAddr (( 28 :: int)::ii) (( 0 :: int)::ii) :: 29 Word.word)) :: 32 Word.word)) :: 64 Word.word))) - | (g__131, g__132) => (Kernel, None) + else (case (True, b__1) of (g__29, g__30) => (Kernel, None) ) + | (g__29, g__30) => (Kernel, None) ) else if (((b__0 = (vec_of_bits [B1,B0] :: 2 Word.word)))) then (Kernel, @@ -2563,14 +3253,14 @@ definition TLBTranslate :: "(64)Word.word \<Rightarrow> MemAccessType \<Rightar definition CPtrCmpOp_of_num :: " int \<Rightarrow> CPtrCmpOp " where " CPtrCmpOp_of_num arg0 = ( - (let l__57 = arg0 in - if (((l__57 = (( 0 :: int)::ii)))) then CEQ - else if (((l__57 = (( 1 :: int)::ii)))) then CNE - else if (((l__57 = (( 2 :: int)::ii)))) then CLT - else if (((l__57 = (( 3 :: int)::ii)))) then CLE - else if (((l__57 = (( 4 :: int)::ii)))) then CLTU - else if (((l__57 = (( 5 :: int)::ii)))) then CLEU - else if (((l__57 = (( 6 :: int)::ii)))) then CEXEQ + (let p00 = arg0 in + if (((p00 = (( 0 :: int)::ii)))) then CEQ + else if (((p00 = (( 1 :: int)::ii)))) then CNE + else if (((p00 = (( 2 :: int)::ii)))) then CLT + else if (((p00 = (( 3 :: int)::ii)))) then CLE + else if (((p00 = (( 4 :: int)::ii)))) then CLTU + else if (((p00 = (( 5 :: int)::ii)))) then CLEU + else if (((p00 = (( 6 :: int)::ii)))) then CEXEQ else CNEXEQ))" @@ -2597,10 +3287,10 @@ definition undefined_CPtrCmpOp :: " unit \<Rightarrow>((register_value),(CPtrCm definition ClearRegSet_of_num :: " int \<Rightarrow> ClearRegSet " where " ClearRegSet_of_num arg0 = ( - (let l__54 = arg0 in - if (((l__54 = (( 0 :: int)::ii)))) then GPLo - else if (((l__54 = (( 1 :: int)::ii)))) then GPHi - else if (((l__54 = (( 2 :: int)::ii)))) then CLo + (let p00 = arg0 in + if (((p00 = (( 0 :: int)::ii)))) then GPLo + else if (((p00 = (( 1 :: int)::ii)))) then GPHi + else if (((p00 = (( 2 :: int)::ii)))) then CLo else CHi))" @@ -2625,13 +3315,13 @@ definition undefined_CapStruct :: " unit \<Rightarrow>((register_value),(CapStr " undefined_CapStruct _ = ( undefined_bool () \<bind> (\<lambda> (w__0 :: bool) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 8 :: int)::ii) :: ( 8 Word.word) M) \<bind> (\<lambda> (w__1 :: 8 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 8 :: int)::ii) :: ( 8 Word.word) M) \<bind> (\<lambda> (w__1 :: 8 bits) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 24 :: int)::ii) :: ( 24 Word.word) M) \<bind> (\<lambda> (w__2 :: 24 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 24 :: int)::ii) :: ( 24 Word.word) M) \<bind> (\<lambda> (w__2 :: 24 bits) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__3 :: 16 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__3 :: 16 bits) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 4 :: int)::ii) :: ( 4 Word.word) M) \<bind> (\<lambda> (w__4 :: 4 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 4 :: int)::ii) :: ( 4 Word.word) M) \<bind> (\<lambda> (w__4 :: 4 bits) . undefined_bool () \<bind> (\<lambda> (w__5 :: bool) . undefined_bool () \<bind> (\<lambda> (w__6 :: bool) . undefined_bool () \<bind> (\<lambda> (w__7 :: bool) . @@ -2645,11 +3335,11 @@ definition undefined_CapStruct :: " unit \<Rightarrow>((register_value),(CapStr undefined_bool () \<bind> (\<lambda> (w__15 :: bool) . undefined_bool () \<bind> (\<lambda> (w__16 :: bool) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__17 :: 64 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__17 :: 64 bits) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__18 :: 64 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__18 :: 64 bits) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__19 :: 64 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__19 :: 64 bits) . return ((| CapStruct_tag = w__0, CapStruct_padding = w__1, CapStruct_otype = w__2, @@ -2678,7 +3368,7 @@ definition default_cap :: " CapStruct " where CapStruct_padding = ((zeros0 (( 8 :: int)::ii) () :: 8 Word.word)), CapStruct_otype = ((zeros0 (( 24 :: int)::ii) () :: 24 Word.word)), CapStruct_uperms = ((ones (( 16 :: int)::ii) () :: 16 Word.word)), - CapStruct_perm_reserved11_14 = ((ones (( 4 :: int)::ii) () :: 4 Word.word)), + CapStruct_perm_reserved11_14 = ((zeros0 (( 4 :: int)::ii) () :: 4 Word.word)), CapStruct_access_system_regs = True, CapStruct_permit_unseal = True, CapStruct_permit_ccall = True, @@ -2724,8 +3414,7 @@ definition memBitsToCapBits :: " bool \<Rightarrow>(256)Word.word \<Rightarrow> definition setCapPerms :: " CapStruct \<Rightarrow>(31)Word.word \<Rightarrow> CapStruct " where " setCapPerms cap perms = ( (cap (| - CapStruct_uperms := ((subrange_vec_dec perms (( 30 :: int)::ii) (( 15 :: int)::ii) :: 16 Word.word)), CapStruct_perm_reserved11_14 := - ((subrange_vec_dec perms (( 14 :: int)::ii) (( 11 :: int)::ii) :: 4 Word.word)), CapStruct_access_system_regs := + CapStruct_uperms := ((subrange_vec_dec perms (( 30 :: int)::ii) (( 15 :: int)::ii) :: 16 Word.word)), CapStruct_access_system_regs := ((bit_to_bool ((access_vec_dec perms (( 10 :: int)::ii))))), CapStruct_permit_unseal := ((bit_to_bool ((access_vec_dec perms (( 9 :: int)::ii))))), CapStruct_permit_ccall := ((bit_to_bool ((access_vec_dec perms (( 8 :: int)::ii))))), CapStruct_permit_seal := @@ -2801,738 +3490,70 @@ definition setCapBounds :: " CapStruct \<Rightarrow>(64)Word.word \<Rightarrow> definition undefined_ast :: " unit \<Rightarrow>((register_value),(ast),(exception))monad " where " undefined_ast _ = ( + undefined_CPtrCmpOp () \<bind> (\<lambda> (u_0 :: CPtrCmpOp) . + undefined_ClearRegSet () \<bind> (\<lambda> (u_1 :: ClearRegSet) . + undefined_Comparison () \<bind> (\<lambda> (u_2 :: Comparison) . + undefined_WordType () \<bind> (\<lambda> (u_3 :: WordType) . + undefined_bool () \<bind> (\<lambda> (u_5 :: bool) . + undefined_bool () \<bind> (\<lambda> (u_4 :: bool) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__0 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__1 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__2 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__3 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__4 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__5 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__6 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__7 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__8 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__9 :: 5 Word.word) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (u_6 :: imm16) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__10 :: 5 Word.word) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (u_10 :: regno) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__11 :: 5 Word.word) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (u_9 :: regno) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__12 :: 5 Word.word) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (u_8 :: regno) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__13 :: 5 Word.word) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (u_7 :: regno) . + undefined_unit () \<bind> (\<lambda> (u_11 :: unit) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__14 :: 5 Word.word) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 3 :: int)::ii) :: ( 3 Word.word) M) \<bind> (\<lambda> (u_12 :: 3 bits) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__15 :: 5 Word.word) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 8 :: int)::ii) :: ( 8 Word.word) M) \<bind> (\<lambda> (u_13 :: 8 bits) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__16 :: 5 Word.word) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 11 :: int)::ii) :: ( 11 Word.word) M) \<bind> (\<lambda> (u_14 :: 11 bits) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__17 :: 16 Word.word) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (u_15 :: 16 bits) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__18 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__19 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__20 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__21 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__22 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__23 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__24 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__25 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__26 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__27 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__28 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__29 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__30 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__31 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__32 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__33 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__34 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__35 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__36 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__37 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__38 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__39 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__40 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__41 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__42 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__43 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__44 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__45 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__46 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__47 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__48 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__49 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__50 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__51 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__52 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__53 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__54 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__55 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__56 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__57 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__58 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__59 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__60 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__61 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__62 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__63 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__64 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__65 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__66 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__67 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__68 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__69 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__70 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__71 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__72 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__73 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__74 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__75 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__76 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__77 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__78 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__79 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__80 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__81 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__82 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__83 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__84 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__85 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__86 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__87 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__88 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__89 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__90 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__91 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__92 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__93 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__94 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__95 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__96 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__97 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__98 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__99 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__100 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__101 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__102 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__103 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__104 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__105 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__106 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__107 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__108 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__109 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__110 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__111 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__112 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__113 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__114 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__115 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__116 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__117 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__118 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__119 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__120 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__121 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__122 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__123 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__124 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__125 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__126 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__127 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__128 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__129 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__130 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__131 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__132 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__133 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__134 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__135 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__136 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__137 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__138 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__139 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__140 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__141 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__142 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__143 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__144 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__145 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__146 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__147 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__148 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__149 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__150 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__151 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__152 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 26 :: int)::ii) :: ( 26 Word.word) M) \<bind> (\<lambda> (w__153 :: 26 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 26 :: int)::ii) :: ( 26 Word.word) M) \<bind> (\<lambda> (w__154 :: 26 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__155 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__156 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__157 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__158 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__159 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__160 :: 16 Word.word) . - undefined_bool () \<bind> (\<lambda> (w__161 :: bool) . - undefined_bool () \<bind> (\<lambda> (w__162 :: bool) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__163 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__164 :: 16 Word.word) . - undefined_Comparison () \<bind> (\<lambda> (w__165 :: Comparison) . - undefined_bool () \<bind> (\<lambda> (w__166 :: bool) . - undefined_bool () \<bind> (\<lambda> (w__167 :: bool) . - (((((undefined_unit () \<then> - undefined_unit () ) \<then> - undefined_unit () ) \<then> - undefined_unit () ) \<then> - undefined_unit () ) \<then> - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M)) \<bind> (\<lambda> (w__168 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__169 :: 5 Word.word) . - undefined_Comparison () \<bind> (\<lambda> (w__170 :: Comparison) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__171 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__172 :: 16 Word.word) . - undefined_Comparison () \<bind> (\<lambda> (w__173 :: Comparison) . - undefined_WordType () \<bind> (\<lambda> (w__174 :: WordType) . - undefined_bool () \<bind> (\<lambda> (w__175 :: bool) . - undefined_bool () \<bind> (\<lambda> (w__176 :: bool) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__177 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__178 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__179 :: 16 Word.word) . - undefined_WordType () \<bind> (\<lambda> (w__180 :: WordType) . - undefined_bool () \<bind> (\<lambda> (w__181 :: bool) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__182 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__183 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__184 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__185 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__186 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__187 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__188 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__189 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__190 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__191 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__192 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__193 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__194 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__195 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__196 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__197 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__198 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__199 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__200 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__201 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__202 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__203 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__204 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__205 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__206 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__207 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__208 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__209 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__210 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__211 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__212 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__213 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__214 :: 16 Word.word) . - (undefined_unit () \<then> - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M)) \<bind> (\<lambda> (w__215 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__216 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 3 :: int)::ii) :: ( 3 Word.word) M) \<bind> (\<lambda> (w__217 :: 3 Word.word) . - undefined_bool () \<bind> (\<lambda> (w__218 :: bool) . - (undefined_unit () \<then> - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M)) \<bind> (\<lambda> (w__219 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__220 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 3 :: int)::ii) :: ( 3 Word.word) M) \<bind> (\<lambda> (w__221 :: 3 Word.word) . - undefined_bool () \<bind> (\<lambda> (w__222 :: bool) . - ((((undefined_unit () \<then> - undefined_unit () ) \<then> - undefined_unit () ) \<then> - undefined_unit () ) \<then> - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M)) \<bind> (\<lambda> (w__223 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__224 :: 5 Word.word) . - (undefined_unit () \<then> - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M)) \<bind> (\<lambda> (w__225 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__226 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__227 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__228 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__229 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__230 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__231 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__232 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__233 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__234 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__235 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__236 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__237 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__238 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__239 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__240 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__241 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__242 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__243 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__244 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__245 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__246 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__247 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__248 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__249 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__250 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__251 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__252 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__253 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__254 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__255 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__256 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__257 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__258 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__259 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__260 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__261 :: 5 Word.word) . - undefined_CPtrCmpOp () \<bind> (\<lambda> (w__262 :: CPtrCmpOp) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__263 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__264 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__265 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__266 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__267 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 11 :: int)::ii) :: ( 11 Word.word) M) \<bind> (\<lambda> (w__268 :: 11 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__269 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__270 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__271 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__272 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__273 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__274 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__275 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__276 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 11 :: int)::ii) :: ( 11 Word.word) M) \<bind> (\<lambda> (w__277 :: 11 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__278 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__279 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__280 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__281 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__282 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__283 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__284 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__285 :: 5 Word.word) . - undefined_bool () \<bind> (\<lambda> (w__286 :: bool) . - undefined_ClearRegSet () \<bind> (\<lambda> (w__287 :: ClearRegSet) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__288 :: 16 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__289 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__290 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__291 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__292 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__293 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__294 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__295 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__296 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__297 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__298 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__299 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__300 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__301 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__302 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__303 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__304 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__305 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__306 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__307 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__308 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__309 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__310 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__311 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__312 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__313 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__314 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__315 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 11 :: int)::ii) :: ( 11 Word.word) M) \<bind> (\<lambda> (w__316 :: 11 Word.word) . - (undefined_unit () \<then> - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M)) \<bind> (\<lambda> (w__317 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__318 :: 16 Word.word) . - undefined_bool () \<bind> (\<lambda> (w__319 :: bool) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__320 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__321 :: 16 Word.word) . - undefined_bool () \<bind> (\<lambda> (w__322 :: bool) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__323 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__324 :: 5 Word.word) . - undefined_bool () \<bind> (\<lambda> (w__325 :: bool) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__326 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__327 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__328 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 8 :: int)::ii) :: ( 8 Word.word) M) \<bind> (\<lambda> (w__329 :: 8 Word.word) . - undefined_bool () \<bind> (\<lambda> (w__330 :: bool) . - undefined_WordType () \<bind> (\<lambda> (w__331 :: WordType) . - undefined_bool () \<bind> (\<lambda> (w__332 :: bool) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__333 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__334 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__335 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__336 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 8 :: int)::ii) :: ( 8 Word.word) M) \<bind> (\<lambda> (w__337 :: 8 Word.word) . - undefined_WordType () \<bind> (\<lambda> (w__338 :: WordType) . - undefined_bool () \<bind> (\<lambda> (w__339 :: bool) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__340 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__341 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__342 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__343 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 11 :: int)::ii) :: ( 11 Word.word) M) \<bind> (\<lambda> (w__344 :: 11 Word.word) . - undefined_bool () \<bind> (\<lambda> (w__345 :: bool) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__346 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__347 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__348 :: 5 Word.word) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 11 :: int)::ii) :: ( 11 Word.word) M) \<bind> (\<lambda> (w__349 :: 11 Word.word) . - undefined_bool () \<bind> (\<lambda> (w__350 :: bool) . - (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 5 :: int)::ii) :: ( 5 Word.word) M) \<bind> (\<lambda> (w__351 :: 5 Word.word) . - undefined_unit () \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 26 :: int)::ii) :: ( 26 Word.word) M) \<bind> (\<lambda> (u_16 :: 26 bits) . internal_pick - [DADDIU (w__0,w__1,w__2),DADDU (w__3,w__4,w__5),DADDI (w__6,w__7,w__8),DADD (w__9,w__10,w__11),ADD (w__12,w__13,w__14),ADDI (w__15,w__16,w__17),ADDU (w__18,w__19,w__20),ADDIU (w__21,w__22,w__23),DSUBU (w__24,w__25,w__26),DSUB (w__27,w__28,w__29),SUB (w__30,w__31,w__32),SUBU (w__33,w__34,w__35),AND0 (w__36,w__37,w__38),ANDI (w__39,w__40,w__41),OR0 (w__42,w__43,w__44),ORI (w__45,w__46,w__47),NOR (w__48,w__49,w__50),XOR0 (w__51,w__52,w__53),XORI (w__54,w__55,w__56),LUI (w__57,w__58),DSLL (w__59,w__60,w__61),DSLL32 (w__62,w__63,w__64),DSLLV (w__65,w__66,w__67),DSRA (w__68,w__69,w__70),DSRA32 (w__71,w__72,w__73),DSRAV (w__74,w__75,w__76),DSRL (w__77,w__78,w__79),DSRL32 (w__80,w__81,w__82),DSRLV (w__83,w__84,w__85),SLL (w__86,w__87,w__88),SLLV (w__89,w__90,w__91),SRA (w__92,w__93,w__94),SRAV (w__95,w__96,w__97),SRL (w__98,w__99,w__100),SRLV (w__101,w__102,w__103),SLT (w__104,w__105,w__106),SLTI (w__107,w__108,w__109),SLTU (w__110,w__111,w__112),SLTIU (w__113,w__114,w__115),MOVN (w__116,w__117,w__118),MOVZ (w__119,w__120,w__121),MFHI w__122,MFLO w__123,MTHI w__124,MTLO w__125,MUL (w__126,w__127,w__128),MULT (w__129,w__130),MULTU (w__131,w__132),DMULT (w__133,w__134),DMULTU (w__135,w__136),MADD (w__137,w__138),MADDU (w__139,w__140),MSUB (w__141,w__142),MSUBU (w__143,w__144),DIV (w__145,w__146),DIVU (w__147,w__148),DDIV (w__149,w__150),DDIVU (w__151,w__152),J w__153,JAL w__154,JR w__155,JALR (w__156,w__157),BEQ (w__158,w__159,w__160,w__161,w__162),BCMPZ (w__163,w__164,w__165,w__166,w__167),SYSCALL_THREAD_START () ,ImplementationDefinedStopFetching () ,SYSCALL () ,BREAK () ,WAIT () ,TRAPREG (w__168,w__169,w__170),TRAPIMM (w__171,w__172,w__173),Load (w__174,w__175,w__176,w__177,w__178,w__179),Store (w__180,w__181,w__182,w__183,w__184),LWL (w__185,w__186,w__187),LWR (w__188,w__189,w__190),SWL (w__191,w__192,w__193),SWR (w__194,w__195,w__196),LDL (w__197,w__198,w__199),LDR (w__200,w__201,w__202),SDL (w__203,w__204,w__205),SDR (w__206,w__207,w__208),CACHE (w__209,w__210,w__211),PREF (w__212,w__213,w__214),SYNC () ,MFC0 (w__215,w__216,w__217,w__218),HCF () ,MTC0 (w__219,w__220,w__221,w__222),TLBWI () ,TLBWR () ,TLBR () ,TLBP () ,RDHWR (w__223,w__224),ERET () ,CGetPerm (w__225,w__226),CGetType (w__227,w__228),CGetBase (w__229,w__230),CGetLen (w__231,w__232),CGetTag (w__233,w__234),CGetSealed (w__235,w__236),CGetOffset (w__237,w__238),CGetAddr (w__239,w__240),CGetPCC w__241,CGetPCCSetOffset (w__242,w__243),CGetCause w__244,CSetCause w__245,CReadHwr (w__246,w__247),CWriteHwr (w__248,w__249),CAndPerm (w__250,w__251,w__252),CToPtr (w__253,w__254,w__255),CSub (w__256,w__257,w__258),CPtrCmp (w__259,w__260,w__261,w__262),CIncOffset (w__263,w__264,w__265),CIncOffsetImmediate (w__266,w__267,w__268),CSetOffset (w__269,w__270,w__271),CSetBounds (w__272,w__273,w__274),CSetBoundsImmediate (w__275,w__276,w__277),CSetBoundsExact (w__278,w__279,w__280),CClearTag (w__281,w__282),CMOVX (w__283,w__284,w__285,w__286),ClearRegs (w__287,w__288),CFromPtr (w__289,w__290,w__291),CBuildCap (w__292,w__293,w__294),CCopyType (w__295,w__296,w__297),CCheckPerm (w__298,w__299),CCheckType (w__300,w__301),CTestSubset (w__302,w__303,w__304),CSeal (w__305,w__306,w__307),CCSeal (w__308,w__309,w__310),CUnseal (w__311,w__312,w__313),CCall (w__314,w__315,w__316),CReturn () ,CBX (w__317,w__318,w__319),CBZ (w__320,w__321,w__322),CJALR (w__323,w__324,w__325),CLoad (w__326,w__327,w__328,w__329,w__330,w__331,w__332),CStore (w__333,w__334,w__335,w__336,w__337,w__338,w__339),CSC (w__340,w__341,w__342,w__343,w__344,w__345),CLC (w__346,w__347,w__348,w__349,w__350),C2Dump w__351,RI () ])))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))" + [DADDIU (u_8,u_7,u_6),DADDU (u_9,u_8,u_7),DADDI (u_8,u_7,u_15),DADD (u_9,u_8,u_7),ADD (u_9,u_8,u_7),ADDI (u_8,u_7,u_15),ADDU (u_9,u_8,u_7),ADDIU (u_8,u_7,u_15),DSUBU (u_9,u_8,u_7),DSUB (u_9,u_8,u_7),SUB (u_9,u_8,u_7),SUBU (u_9,u_8,u_7),AND0 (u_9,u_8,u_7),ANDI (u_8,u_7,u_15),OR0 (u_9,u_8,u_7),ORI (u_8,u_7,u_15),NOR (u_9,u_8,u_7),XOR0 (u_9,u_8,u_7),XORI (u_8,u_7,u_15),LUI (u_7,u_6),DSLL (u_9,u_8,u_7),DSLL32 (u_9,u_8,u_7),DSLLV (u_9,u_8,u_7),DSRA (u_9,u_8,u_7),DSRA32 (u_9,u_8,u_7),DSRAV (u_9,u_8,u_7),DSRL (u_9,u_8,u_7),DSRL32 (u_9,u_8,u_7),DSRLV (u_9,u_8,u_7),SLL (u_9,u_8,u_7),SLLV (u_9,u_8,u_7),SRA (u_9,u_8,u_7),SRAV (u_9,u_8,u_7),SRL (u_9,u_8,u_7),SRLV (u_9,u_8,u_7),SLT (u_9,u_8,u_7),SLTI (u_8,u_7,u_15),SLTU (u_9,u_8,u_7),SLTIU (u_8,u_7,u_15),MOVN (u_9,u_8,u_7),MOVZ (u_9,u_8,u_7),MFHI u_7,MFLO u_7,MTHI u_7,MTLO u_7,MUL (u_9,u_8,u_7),MULT (u_8,u_7),MULTU (u_8,u_7),DMULT (u_8,u_7),DMULTU (u_8,u_7),MADD (u_8,u_7),MADDU (u_8,u_7),MSUB (u_8,u_7),MSUBU (u_8,u_7),DIV (u_8,u_7),DIVU (u_8,u_7),DDIV (u_8,u_7),DDIVU (u_8,u_7),J u_16,JAL u_16,JR u_7,JALR (u_8,u_7),BEQ (u_8,u_7,u_6,u_5,u_4),BCMPZ (u_7,u_6,u_2,u_5,u_4),SYSCALL u_11,BREAK u_11,WAIT u_11,TRAPREG (u_8,u_7,u_2),TRAPIMM (u_7,u_6,u_2),Load (u_3,u_5,u_4,u_8,u_7,u_6),Store (u_3,u_4,u_8,u_7,u_6),LWL (u_8,u_7,u_15),LWR (u_8,u_7,u_15),SWL (u_8,u_7,u_15),SWR (u_8,u_7,u_15),LDL (u_8,u_7,u_15),LDR (u_8,u_7,u_15),SDL (u_8,u_7,u_15),SDR (u_8,u_7,u_15),CACHE (u_8,u_7,u_15),SYNC u_11,MFC0 (u_8,u_7,u_12,u_4),HCF u_11,MTC0 (u_8,u_7,u_12,u_4),TLBWI u_11,TLBWR u_11,TLBR u_11,TLBP u_11,RDHWR (u_8,u_7),ERET u_11,CGetPerm (u_8,u_7),CGetType (u_8,u_7),CGetBase (u_8,u_7),CGetLen (u_8,u_7),CGetTag (u_8,u_7),CGetSealed (u_8,u_7),CGetOffset (u_8,u_7),CGetAddr (u_8,u_7),CGetPCC u_7,CGetPCCSetOffset (u_8,u_7),CGetCause u_7,CSetCause u_7,CReadHwr (u_8,u_7),CWriteHwr (u_8,u_7),CAndPerm (u_9,u_8,u_7),CToPtr (u_9,u_8,u_7),CSub (u_9,u_8,u_7),CPtrCmp (u_9,u_8,u_7,u_0),CIncOffset (u_9,u_8,u_7),CIncOffsetImmediate (u_8,u_7,u_14),CSetOffset (u_9,u_8,u_7),CSetBounds (u_9,u_8,u_7),CSetBoundsImmediate (u_8,u_7,u_14),CSetBoundsExact (u_9,u_8,u_7),CClearTag (u_8,u_7),CMOVX (u_9,u_8,u_7,u_4),ClearRegs (u_1,u_15),CFromPtr (u_9,u_8,u_7),CBuildCap (u_9,u_8,u_7),CCopyType (u_9,u_8,u_7),CCheckPerm (u_8,u_7),CCheckType (u_8,u_7),CTestSubset (u_9,u_8,u_7),CSeal (u_9,u_8,u_7),CCSeal (u_9,u_8,u_7),CUnseal (u_9,u_8,u_7),CCall (u_8,u_7,u_14),CReturn u_11,CBX (u_7,u_15,u_4),CBZ (u_7,u_15,u_4),CJALR (u_8,u_7,u_4),CLoad (u_9,u_8,u_7,u_13,u_5,u_3,u_4),CStore (u_10,u_9,u_8,u_7,u_13,u_3,u_4),CSC (u_10,u_9,u_8,u_7,u_14,u_4),CLC (u_9,u_8,u_7,u_15,u_4),C2Dump u_7,RI u_11]))))))))))))))))))" (*val execute : ast -> M unit*) (*val decode : mword ty32 -> maybe ast*) -definition DDC :: "(5)Word.word " where - " DDC = ( (vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word))" - +definition IDCNO :: "(5)Word.word " where + " IDCNO = ( (vec_of_bits [B1,B1,B0,B1,B0] :: 5 Word.word))" -definition IDC :: "(5)Word.word " where - " IDC = ( (vec_of_bits [B1,B1,B0,B1,B0] :: 5 Word.word))" +definition KR1CNO :: "(5)Word.word " where + " KR1CNO = ( (vec_of_bits [B1,B1,B0,B1,B1] :: 5 Word.word))" -definition KR1C :: "(5)Word.word " where - " KR1C = ( (vec_of_bits [B1,B1,B0,B1,B1] :: 5 Word.word))" +definition KR2CNO :: "(5)Word.word " where + " KR2CNO = ( (vec_of_bits [B1,B1,B1,B0,B0] :: 5 Word.word))" -definition KR2C :: "(5)Word.word " where - " KR2C = ( (vec_of_bits [B1,B1,B1,B0,B0] :: 5 Word.word))" +definition KCCNO :: "(5)Word.word " where + " KCCNO = ( (vec_of_bits [B1,B1,B1,B0,B1] :: 5 Word.word))" -definition KCC :: "(5)Word.word " where - " KCC = ( (vec_of_bits [B1,B1,B1,B0,B1] :: 5 Word.word))" +definition KDCNO :: "(5)Word.word " where + " KDCNO = ( (vec_of_bits [B1,B1,B1,B1,B0] :: 5 Word.word))" -definition KDC :: "(5)Word.word " where - " KDC = ( (vec_of_bits [B1,B1,B1,B1,B0] :: 5 Word.word))" - -definition EPCC :: "(5)Word.word " where - " EPCC = ( (vec_of_bits [B1,B1,B1,B1,B1] :: 5 Word.word))" +definition EPCCNO :: "(5)Word.word " where + " EPCCNO = ( (vec_of_bits [B1,B1,B1,B1,B1] :: 5 Word.word))" definition CapRegs :: "(((regstate),(register_value),((257)Word.word))register_ref)list " where " CapRegs = ( [C31_ref,C30_ref,C29_ref,C28_ref,C27_ref,C26_ref,C25_ref,C24_ref,C23_ref,C22_ref,C21_ref,C20_ref, C19_ref,C18_ref,C17_ref,C16_ref,C15_ref,C14_ref,C13_ref,C12_ref,C11_ref,C10_ref,C09_ref,C08_ref, - C07_ref,C06_ref,C05_ref,C04_ref,C03_ref,C02_ref,C01_ref,C00_ref])" + C07_ref,C06_ref,C05_ref,C04_ref,C03_ref,C02_ref,C01_ref,DDC_ref])" definition max_otype :: " int " where @@ -3545,11 +3566,29 @@ definition have_cp2 :: " bool " where (* This function reads a given capability register and returns its contents converted to a CapStruct. +If the argument is zero then the null capability is returned. *) (*val readCapReg : mword ty5 -> M CapStruct*) definition readCapReg :: "(5)Word.word \<Rightarrow>((register_value),(CapStruct),(exception))monad " where " readCapReg n = ( + if (((n = (vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word)))) then return null_cap + else + (let i = (Word.uint n) in + (reg_deref ((access_list_dec CapRegs i :: (regstate, register_value, ( 257 Word.word)) register_ref)) + :: ( 257 Word.word) M) \<bind> (\<lambda> (w__0 :: 257 Word.word) . + return ((capRegToCapStruct w__0)))))" + + +(* +This is the same as readCapReg except that when the argument is zero the value of DDC is returned +instead of the null capability. This is used for instructions that expect an address, where using +null would always generate an exception. +*) +(*val readCapRegDDC : mword ty5 -> M CapStruct*) + +definition readCapRegDDC :: "(5)Word.word \<Rightarrow>((register_value),(CapStruct),(exception))monad " where + " readCapRegDDC n = ( (let i = (Word.uint n) in (reg_deref ((access_list_dec CapRegs i :: (regstate, register_value, ( 257 Word.word)) register_ref)) :: ( 257 Word.word) M) \<bind> (\<lambda> (w__0 :: 257 Word.word) . @@ -3560,39 +3599,41 @@ definition readCapReg :: "(5)Word.word \<Rightarrow>((register_value),(CapStruc definition writeCapReg :: "(5)Word.word \<Rightarrow> CapStruct \<Rightarrow>((register_value),(unit),(exception))monad " where " writeCapReg n cap = ( - (let i = (Word.uint n) in - write_reg - ((access_list_dec CapRegs i :: (regstate, register_value, ( 257 Word.word)) register_ref)) - ((capStructToCapReg cap :: 257 Word.word))))" + if (((n = (vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word)))) then return () + else + (let i = (Word.uint n) in + write_reg + ((access_list_dec CapRegs i :: (regstate, register_value, ( 257 Word.word)) register_ref)) + ((capStructToCapReg cap :: 257 Word.word))))" (*val CapEx_of_num : integer -> CapEx*) definition CapEx_of_num :: " int \<Rightarrow> CapEx " where " CapEx_of_num arg0 = ( - (let l__32 = arg0 in - if (((l__32 = (( 0 :: int)::ii)))) then CapEx_None - else if (((l__32 = (( 1 :: int)::ii)))) then CapEx_LengthViolation - else if (((l__32 = (( 2 :: int)::ii)))) then CapEx_TagViolation - else if (((l__32 = (( 3 :: int)::ii)))) then CapEx_SealViolation - else if (((l__32 = (( 4 :: int)::ii)))) then CapEx_TypeViolation - else if (((l__32 = (( 5 :: int)::ii)))) then CapEx_CallTrap - else if (((l__32 = (( 6 :: int)::ii)))) then CapEx_ReturnTrap - else if (((l__32 = (( 7 :: int)::ii)))) then CapEx_TSSUnderFlow - else if (((l__32 = (( 8 :: int)::ii)))) then CapEx_UserDefViolation - else if (((l__32 = (( 9 :: int)::ii)))) then CapEx_TLBNoStoreCap - else if (((l__32 = (( 10 :: int)::ii)))) then CapEx_InexactBounds - else if (((l__32 = (( 11 :: int)::ii)))) then CapEx_GlobalViolation - else if (((l__32 = (( 12 :: int)::ii)))) then CapEx_PermitExecuteViolation - else if (((l__32 = (( 13 :: int)::ii)))) then CapEx_PermitLoadViolation - else if (((l__32 = (( 14 :: int)::ii)))) then CapEx_PermitStoreViolation - else if (((l__32 = (( 15 :: int)::ii)))) then CapEx_PermitLoadCapViolation - else if (((l__32 = (( 16 :: int)::ii)))) then CapEx_PermitStoreCapViolation - else if (((l__32 = (( 17 :: int)::ii)))) then CapEx_PermitStoreLocalCapViolation - else if (((l__32 = (( 18 :: int)::ii)))) then CapEx_PermitSealViolation - else if (((l__32 = (( 19 :: int)::ii)))) then CapEx_AccessSystemRegsViolation - else if (((l__32 = (( 20 :: int)::ii)))) then CapEx_PermitCCallViolation - else if (((l__32 = (( 21 :: int)::ii)))) then CapEx_AccessCCallIDCViolation + (let p00 = arg0 in + if (((p00 = (( 0 :: int)::ii)))) then CapEx_None + else if (((p00 = (( 1 :: int)::ii)))) then CapEx_LengthViolation + else if (((p00 = (( 2 :: int)::ii)))) then CapEx_TagViolation + else if (((p00 = (( 3 :: int)::ii)))) then CapEx_SealViolation + else if (((p00 = (( 4 :: int)::ii)))) then CapEx_TypeViolation + else if (((p00 = (( 5 :: int)::ii)))) then CapEx_CallTrap + else if (((p00 = (( 6 :: int)::ii)))) then CapEx_ReturnTrap + else if (((p00 = (( 7 :: int)::ii)))) then CapEx_TSSUnderFlow + else if (((p00 = (( 8 :: int)::ii)))) then CapEx_UserDefViolation + else if (((p00 = (( 9 :: int)::ii)))) then CapEx_TLBNoStoreCap + else if (((p00 = (( 10 :: int)::ii)))) then CapEx_InexactBounds + else if (((p00 = (( 11 :: int)::ii)))) then CapEx_GlobalViolation + else if (((p00 = (( 12 :: int)::ii)))) then CapEx_PermitExecuteViolation + else if (((p00 = (( 13 :: int)::ii)))) then CapEx_PermitLoadViolation + else if (((p00 = (( 14 :: int)::ii)))) then CapEx_PermitStoreViolation + else if (((p00 = (( 15 :: int)::ii)))) then CapEx_PermitLoadCapViolation + else if (((p00 = (( 16 :: int)::ii)))) then CapEx_PermitStoreCapViolation + else if (((p00 = (( 17 :: int)::ii)))) then CapEx_PermitStoreLocalCapViolation + else if (((p00 = (( 18 :: int)::ii)))) then CapEx_PermitSealViolation + else if (((p00 = (( 19 :: int)::ii)))) then CapEx_AccessSystemRegsViolation + else if (((p00 = (( 20 :: int)::ii)))) then CapEx_PermitCCallViolation + else if (((p00 = (( 21 :: int)::ii)))) then CapEx_AccessCCallIDCViolation else CapEx_PermitUnsealViolation))" @@ -3665,59 +3706,99 @@ fun CapExCode :: " CapEx \<Rightarrow>(8)Word.word " where definition undefined_CapCauseReg :: " unit \<Rightarrow>((register_value),(CapCauseReg),(exception))monad " where " undefined_CapCauseReg _ = ( (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__0 :: 16 Word.word) . - internal_pick [Mk_CapCauseReg w__0]))" + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__0 :: 16 Word.word) . + return ((| CapCauseReg_CapCauseReg_chunk_0 = w__0 |))))" + +(*val Mk_CapCauseReg : mword ty16 -> CapCauseReg*) -fun get_CapCauseReg :: " CapCauseReg \<Rightarrow>(16)Word.word " where - " get_CapCauseReg (Mk_CapCauseReg (v)) = ( v )" +definition Mk_CapCauseReg :: "(16)Word.word \<Rightarrow> CapCauseReg " where + " Mk_CapCauseReg v = ( + (| CapCauseReg_CapCauseReg_chunk_0 = ((subrange_vec_dec v (( 15 :: int)::ii) (( 0 :: int)::ii) :: 16 Word.word)) |) )" -definition set_CapCauseReg :: "((regstate),(register_value),(CapCauseReg))register_ref \<Rightarrow>(16)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where - " set_CapCauseReg r_ref v = ( +definition get_CapCauseReg_bits :: " CapCauseReg \<Rightarrow>(16)Word.word " where + " get_CapCauseReg_bits v = ( + (subrange_vec_dec(CapCauseReg_CapCauseReg_chunk_0 v) (( 15 :: int)::ii) (( 0 :: int)::ii) :: 16 Word.word))" + + +definition set_CapCauseReg_bits :: "((regstate),(register_value),(CapCauseReg))register_ref \<Rightarrow>(16)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where + " set_CapCauseReg_bits r_ref v = ( reg_deref r_ref \<bind> (\<lambda> r . - (let r = (Mk_CapCauseReg v) in + (let r = + ((r (| + CapCauseReg_CapCauseReg_chunk_0 := + ((update_subrange_vec_dec(CapCauseReg_CapCauseReg_chunk_0 r) (( 15 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec v (( 15 :: int)::ii) (( 0 :: int)::ii) :: 16 Word.word)) + :: 16 Word.word))|))) in write_reg r_ref r)))" -fun get_CapCauseReg_ExcCode :: " CapCauseReg \<Rightarrow>(8)Word.word " where - " get_CapCauseReg_ExcCode (Mk_CapCauseReg (v)) = ( (subrange_vec_dec v (( 15 :: int)::ii) (( 8 :: int)::ii) :: 8 Word.word))" +definition update_CapCauseReg_bits :: " CapCauseReg \<Rightarrow>(16)Word.word \<Rightarrow> CapCauseReg " where + " update_CapCauseReg_bits v x = ( + (v (| + CapCauseReg_CapCauseReg_chunk_0 := + ((update_subrange_vec_dec(CapCauseReg_CapCauseReg_chunk_0 v) (( 15 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec x (( 15 :: int)::ii) (( 0 :: int)::ii) :: 16 Word.word)) + :: 16 Word.word))|)))" + + +definition get_CapCauseReg_ExcCode :: " CapCauseReg \<Rightarrow>(8)Word.word " where + " get_CapCauseReg_ExcCode v = ( + (subrange_vec_dec(CapCauseReg_CapCauseReg_chunk_0 v) (( 15 :: int)::ii) (( 8 :: int)::ii) :: 8 Word.word))" definition set_CapCauseReg_ExcCode :: "((regstate),(register_value),(CapCauseReg))register_ref \<Rightarrow>(8)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_CapCauseReg_ExcCode r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: CapCauseReg) . - (let r = ((get_CapCauseReg w__0 :: 16 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 15 :: int)::ii) (( 8 :: int)::ii) v :: 16 Word.word)) in - write_reg r_ref (Mk_CapCauseReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + CapCauseReg_CapCauseReg_chunk_0 := + ((update_subrange_vec_dec(CapCauseReg_CapCauseReg_chunk_0 r) (( 15 :: int)::ii) (( 8 :: int)::ii) + ((subrange_vec_dec v (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word)) + :: 16 Word.word))|))) in + write_reg r_ref r)))" -fun update_CapCauseReg_ExcCode :: " CapCauseReg \<Rightarrow>(8)Word.word \<Rightarrow> CapCauseReg " where - " update_CapCauseReg_ExcCode (Mk_CapCauseReg (v)) x = ( - Mk_CapCauseReg ((update_subrange_vec_dec v (( 15 :: int)::ii) (( 8 :: int)::ii) x :: 16 Word.word)))" +definition update_CapCauseReg_ExcCode :: " CapCauseReg \<Rightarrow>(8)Word.word \<Rightarrow> CapCauseReg " where + " update_CapCauseReg_ExcCode v x = ( + (v (| + CapCauseReg_CapCauseReg_chunk_0 := + ((update_subrange_vec_dec(CapCauseReg_CapCauseReg_chunk_0 v) (( 15 :: int)::ii) (( 8 :: int)::ii) + ((subrange_vec_dec x (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word)) + :: 16 Word.word))|)))" (*val _get_CapCauseReg_RegNum : CapCauseReg -> mword ty8*) -fun get_CapCauseReg_RegNum :: " CapCauseReg \<Rightarrow>(8)Word.word " where - " get_CapCauseReg_RegNum (Mk_CapCauseReg (v)) = ( (subrange_vec_dec v (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word))" +definition get_CapCauseReg_RegNum :: " CapCauseReg \<Rightarrow>(8)Word.word " where + " get_CapCauseReg_RegNum v = ( + (subrange_vec_dec(CapCauseReg_CapCauseReg_chunk_0 v) (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word))" (*val _set_CapCauseReg_RegNum : register_ref regstate register_value CapCauseReg -> mword ty8 -> M unit*) definition set_CapCauseReg_RegNum :: "((regstate),(register_value),(CapCauseReg))register_ref \<Rightarrow>(8)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " set_CapCauseReg_RegNum r_ref v = ( - reg_deref r_ref \<bind> (\<lambda> (w__0 :: CapCauseReg) . - (let r = ((get_CapCauseReg w__0 :: 16 Word.word)) in - (let r = ((update_subrange_vec_dec r (( 7 :: int)::ii) (( 0 :: int)::ii) v :: 16 Word.word)) in - write_reg r_ref (Mk_CapCauseReg r)))))" + reg_deref r_ref \<bind> (\<lambda> r . + (let r = + ((r (| + CapCauseReg_CapCauseReg_chunk_0 := + ((update_subrange_vec_dec(CapCauseReg_CapCauseReg_chunk_0 r) (( 7 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec v (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word)) + :: 16 Word.word))|))) in + write_reg r_ref r)))" (*val _update_CapCauseReg_RegNum : CapCauseReg -> mword ty8 -> CapCauseReg*) -fun update_CapCauseReg_RegNum :: " CapCauseReg \<Rightarrow>(8)Word.word \<Rightarrow> CapCauseReg " where - " update_CapCauseReg_RegNum (Mk_CapCauseReg (v)) x = ( - Mk_CapCauseReg ((update_subrange_vec_dec v (( 7 :: int)::ii) (( 0 :: int)::ii) x :: 16 Word.word)))" +definition update_CapCauseReg_RegNum :: " CapCauseReg \<Rightarrow>(8)Word.word \<Rightarrow> CapCauseReg " where + " update_CapCauseReg_RegNum v x = ( + (v (| + CapCauseReg_CapCauseReg_chunk_0 := + ((update_subrange_vec_dec(CapCauseReg_CapCauseReg_chunk_0 v) (( 7 :: int)::ii) (( 0 :: int)::ii) + ((subrange_vec_dec x (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word)) + :: 16 Word.word))|)))" (*val execute_branch_pcc : CapStruct -> M unit*) @@ -3735,9 +3816,9 @@ definition execute_branch_pcc :: " CapStruct \<Rightarrow>((register_value),(un definition ERETHook :: " unit \<Rightarrow>((register_value),(unit),(exception))monad " where " ERETHook _ = ( - (read_reg C31_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__0 :: CapReg) . + (read_reg EPCC_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__0 :: CapReg) . (write_reg nextPCC_ref w__0 \<then> - (read_reg C31_ref :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__1 :: CapReg) . write_reg delayedPCC_ref w__1)))" + (read_reg EPCC_ref :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__1 :: CapReg) . write_reg delayedPCC_ref w__1)))" (*val raise_c2_exception8 : forall 'o. CapEx -> mword ty8 -> M 'o*) @@ -3757,7 +3838,7 @@ definition raise_c2_exception8 :: " CapEx \<Rightarrow>(8)Word.word \<Rightarro definition raise_c2_exception :: " CapEx \<Rightarrow>(5)Word.word \<Rightarrow>((register_value),'o,(exception))monad " where " raise_c2_exception capEx regnum = ( (let reg8 = ((concat_vec (vec_of_bits [B0,B0,B0] :: 3 Word.word) regnum :: 8 Word.word)) in - if ((((((capEx = CapEx_AccessSystemRegsViolation))) \<and> (((regnum = IDC)))))) then + if ((((((capEx = CapEx_AccessSystemRegsViolation))) \<and> (((regnum = IDCNO)))))) then raise_c2_exception8 CapEx_AccessCCallIDCViolation reg8 else raise_c2_exception8 capEx reg8))" @@ -3786,11 +3867,11 @@ The following function should be called before reading or writing any capability definition register_inaccessible :: "(5)Word.word \<Rightarrow>((register_value),(bool),(exception))monad " where " register_inaccessible r = ( or_boolM - (and_boolM (return (((r = IDC)))) + (and_boolM (return (((r = IDCNO)))) ((read_reg inCCallDelay_ref :: ( 1 Word.word) M) \<bind> (\<lambda> (w__0 :: 1 Word.word) . return ((bits_to_bool w__0))))) (and_boolM - (return ((((((r = KR1C))) \<or> ((((((r = KR2C))) \<or> ((((((r = KDC))) \<or> ((((((r = KCC))) \<or> (((r = EPCC)))))))))))))))) + (return ((((((r = KR1CNO))) \<or> ((((((r = KR2CNO))) \<or> ((((((r = KDCNO))) \<or> ((((((r = KCCNO))) \<or> (((r = EPCCNO)))))))))))))))) (pcc_access_system_regs () \<bind> (\<lambda> (w__2 :: bool) . return ((\<not> w__2))))))" @@ -3798,44 +3879,42 @@ definition register_inaccessible :: "(5)Word.word \<Rightarrow>((register_value definition MEMr_tagged :: "(64)Word.word \<Rightarrow>((register_value),(bool*(256)Word.word),(exception))monad " where " MEMr_tagged addr = ( - (assert_exp (((((hardware_mod ((Word.uint addr)) cap_size)) = (( 0 :: int)::ii)))) ('''') \<then> - read_tag_bool instance_Sail_values_Bitvector_Machine_word_mword_dict addr) \<bind> (\<lambda> tag . - (MEMr instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict addr cap_size :: ( 256 Word.word) M) \<bind> (\<lambda> data . - (let ((cast_0 :: bool), (cast_1 :: 256 Word.word)) = (tag, (reverse_endianness data :: 256 Word.word)) in - return (cast_0, (Word.ucast cast_1 :: 256 Word.word))))))" + (assert_exp (((((((Word.uint addr)) mod cap_size)) = (( 0 :: int)::ii)))) ('''') \<then> + read_tag_bool instance_Sail2_values_Bitvector_Machine_word_mword_dict addr) \<bind> (\<lambda> tag . + (MEMr instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict addr cap_size :: ( 256 Word.word) M) \<bind> (\<lambda> data . + return (tag, (reverse_endianness data :: 256 Word.word)))))" (*val MEMr_tagged_reserve : mword ty64 -> M (bool * mword ty256)*) definition MEMr_tagged_reserve :: "(64)Word.word \<Rightarrow>((register_value),(bool*(256)Word.word),(exception))monad " where " MEMr_tagged_reserve addr = ( - (assert_exp (((((hardware_mod ((Word.uint addr)) cap_size)) = (( 0 :: int)::ii)))) ('''') \<then> - read_tag_bool instance_Sail_values_Bitvector_Machine_word_mword_dict addr) \<bind> (\<lambda> tag . - (MEMr_reserve instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict addr cap_size :: ( 256 Word.word) M) \<bind> (\<lambda> data . - (let ((cast_0 :: bool), (cast_1 :: 256 Word.word)) = (tag, (reverse_endianness data :: 256 Word.word)) in - return (cast_0, (Word.ucast cast_1 :: 256 Word.word))))))" + (assert_exp (((((((Word.uint addr)) mod cap_size)) = (( 0 :: int)::ii)))) ('''') \<then> + read_tag_bool instance_Sail2_values_Bitvector_Machine_word_mword_dict addr) \<bind> (\<lambda> tag . + (MEMr_reserve instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict addr cap_size :: ( 256 Word.word) M) \<bind> (\<lambda> data . + return (tag, (reverse_endianness data :: 256 Word.word)))))" (*val MEMw_tagged : mword ty64 -> bool -> mword ty256 -> M unit*) definition MEMw_tagged :: "(64)Word.word \<Rightarrow> bool \<Rightarrow>(256)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " MEMw_tagged addr tag data = ( - ((assert_exp (((((hardware_mod ((Word.uint addr)) cap_size)) = (( 0 :: int)::ii)))) ('''') \<then> - MEMea instance_Sail_values_Bitvector_Machine_word_mword_dict addr cap_size) \<then> - MEMval instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict addr cap_size ((reverse_endianness data :: 256 Word.word))) \<then> write_tag_bool - instance_Sail_values_Bitvector_Machine_word_mword_dict addr tag )" + ((assert_exp (((((((Word.uint addr)) mod cap_size)) = (( 0 :: int)::ii)))) ('''') \<then> + MEMea instance_Sail2_values_Bitvector_Machine_word_mword_dict addr cap_size) \<then> + MEMval instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict addr cap_size ((reverse_endianness data :: 256 Word.word))) \<then> write_tag_bool + instance_Sail2_values_Bitvector_Machine_word_mword_dict addr tag )" (*val MEMw_tagged_conditional : mword ty64 -> bool -> mword ty256 -> M bool*) definition MEMw_tagged_conditional :: "(64)Word.word \<Rightarrow> bool \<Rightarrow>(256)Word.word \<Rightarrow>((register_value),(bool),(exception))monad " where " MEMw_tagged_conditional addr tag data = ( - ((assert_exp (((((hardware_mod ((Word.uint addr)) cap_size)) = (( 0 :: int)::ii)))) ('''') \<then> - MEMea_conditional instance_Sail_values_Bitvector_Machine_word_mword_dict addr cap_size) \<then> + ((assert_exp (((((((Word.uint addr)) mod cap_size)) = (( 0 :: int)::ii)))) ('''') \<then> + MEMea_conditional instance_Sail2_values_Bitvector_Machine_word_mword_dict addr cap_size) \<then> MEMval_conditional - instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict addr cap_size ((reverse_endianness data :: 256 Word.word))) \<bind> (\<lambda> success . + instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict addr cap_size ((reverse_endianness data :: 256 Word.word))) \<bind> (\<lambda> success . (if success then write_tag_bool - instance_Sail_values_Bitvector_Machine_word_mword_dict addr tag else return () ) \<then> return success))" + instance_Sail2_values_Bitvector_Machine_word_mword_dict addr tag else return () ) \<then> return success))" definition cap_addr_mask :: "(64)Word.word " where @@ -3863,9 +3942,9 @@ definition MEMw_wrapper :: "(64)Word.word \<Rightarrow> int \<Rightarrow>('p8_t :: 64 Word.word)) :: 64 Word.word)) cap_addr_mask :: 64 Word.word))))) ('''') \<then> - MEMea instance_Sail_values_Bitvector_Machine_word_mword_dict addr size1) \<then> - MEMval instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict addr size1 ledata) \<then> write_tag_bool - instance_Sail_values_Bitvector_Machine_word_mword_dict ((and_vec addr cap_addr_mask :: 64 Word.word)) False))" + MEMea instance_Sail2_values_Bitvector_Machine_word_mword_dict addr size1) \<then> + MEMval instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict addr size1 ledata) \<then> write_tag_bool + instance_Sail2_values_Bitvector_Machine_word_mword_dict ((and_vec addr cap_addr_mask :: 64 Word.word)) False))" (*val MEMw_conditional_wrapper : forall 'p8_times_n_ . Size 'p8_times_n_ => mword ty64 -> integer -> mword 'p8_times_n_ -> M bool*) @@ -3879,47 +3958,87 @@ definition MEMw_conditional_wrapper :: "(64)Word.word \<Rightarrow> int \<Right :: 64 Word.word)) :: 64 Word.word)) cap_addr_mask :: 64 Word.word))))) ('''') \<then> - MEMea_conditional instance_Sail_values_Bitvector_Machine_word_mword_dict addr size1) \<then> + MEMea_conditional instance_Sail2_values_Bitvector_Machine_word_mword_dict addr size1) \<then> MEMval_conditional - instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict addr size1 ((reverse_endianness data :: ( 'p8_times_n_::len)Word.word))) \<bind> (\<lambda> success . + instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict addr size1 ((reverse_endianness data :: ( 'p8_times_n_::len)Word.word))) \<bind> (\<lambda> success . (if success then write_tag_bool - instance_Sail_values_Bitvector_Machine_word_mword_dict ((and_vec addr cap_addr_mask :: 64 Word.word)) False + instance_Sail2_values_Bitvector_Machine_word_mword_dict ((and_vec addr cap_addr_mask :: 64 Word.word)) False else return () ) \<then> return success))" -(*val addrWrapper : mword ty64 -> MemAccessType -> WordType -> M (mword ty64)*) +(*val checkDDCPerms : CapStruct -> MemAccessType -> M unit*) -definition addrWrapper :: "(64)Word.word \<Rightarrow> MemAccessType \<Rightarrow> WordType \<Rightarrow>((register_value),((64)Word.word),(exception))monad " where - " addrWrapper addr accessType width = ( - (let capno = ((vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word)) in - readCapReg capno \<bind> (\<lambda> cap . - ((if ((\<not>(CapStruct_tag cap))) then raise_c2_exception CapEx_TagViolation capno - else if(CapStruct_sealed cap) then raise_c2_exception CapEx_SealViolation capno +definition checkDDCPerms :: " CapStruct \<Rightarrow> MemAccessType \<Rightarrow>((register_value),(unit),(exception))monad " where + " checkDDCPerms (ddc :: CapStruct) (accessType :: MemAccessType) = ( + (if ((\<not>(CapStruct_tag ddc))) then + raise_c2_exception CapEx_TagViolation (vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word) + else if(CapStruct_sealed ddc) then + raise_c2_exception CapEx_SealViolation (vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word) else return () ) \<then> (case accessType of - Instruction => - if ((\<not>(CapStruct_permit_execute cap))) then - raise_c2_exception CapEx_PermitExecuteViolation capno - else return () + Instruction => assert_exp False ('''') | LoadData => - if ((\<not>(CapStruct_permit_load cap))) then raise_c2_exception CapEx_PermitLoadViolation capno + if ((\<not>(CapStruct_permit_load ddc))) then + raise_c2_exception CapEx_PermitLoadViolation (vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word) else return () | StoreData => - if ((\<not>(CapStruct_permit_store cap))) then raise_c2_exception CapEx_PermitStoreViolation capno + if ((\<not>(CapStruct_permit_store ddc))) then + raise_c2_exception CapEx_PermitStoreViolation (vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word) else return () - )) \<then> - ((let cursor = (getCapCursor cap) in - (let vAddr = (hardware_mod ((cursor + ((Word.uint addr)))) ((pow2 (( 64 :: int)::ii)))) in + ))" + + +(*val addrWrapper : mword ty64 -> MemAccessType -> WordType -> M (mword ty64)*) + +definition addrWrapper :: "(64)Word.word \<Rightarrow> MemAccessType \<Rightarrow> WordType \<Rightarrow>((register_value),((64)Word.word),(exception))monad " where + " addrWrapper addr accessType width = ( + (read_reg DDC_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__0 :: 257 Word.word) . + (let ddc = (capRegToCapStruct w__0) in + checkDDCPerms ddc accessType \<then> + ((let cursor = (getCapCursor ddc) in + (let vAddr = (((cursor + ((Word.uint addr)))) mod ((pow2 (( 64 :: int)::ii)))) in (let size1 = (wordWidthBytes width) in - (let base = (getCapBase cap) in - (let top1 = (getCapTop cap) in + (let base = (getCapBase ddc) in + (let top1 = (getCapTop ddc) in if ((((vAddr + size1)) > top1)) then - (raise_c2_exception CapEx_LengthViolation capno :: ( 64 Word.word) M) - else if ((vAddr < base)) then (raise_c2_exception CapEx_LengthViolation capno :: ( 64 Word.word) M) + (raise_c2_exception CapEx_LengthViolation (vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word) + :: ( 64 Word.word) M) + else if ((vAddr < base)) then + (raise_c2_exception CapEx_LengthViolation (vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word) + :: ( 64 Word.word) M) else return ((to_bits ((make_the_value (( 64 :: int)::ii) :: 64 itself)) vAddr :: 64 Word.word)))))))))))" +(*val addrWrapperUnaligned : mword ty64 -> MemAccessType -> WordTypeUnaligned -> M (mword ty64)*) + +definition addrWrapperUnaligned :: "(64)Word.word \<Rightarrow> MemAccessType \<Rightarrow> WordTypeUnaligned \<Rightarrow>((register_value),((64)Word.word),(exception))monad " where + " addrWrapperUnaligned addr accessType width = ( + (read_reg DDC_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__0 :: 257 Word.word) . + (let ddc = (capRegToCapStruct w__0) in + checkDDCPerms ddc accessType \<then> + ((let cursor = (getCapCursor ddc) in + (let vAddr = (((cursor + ((Word.uint addr)))) mod ((pow2 (( 64 :: int)::ii)))) in + (let woffset = (vAddr mod (( 4 :: int)::ii)) in + (let doffset = (vAddr mod (( 8 :: int)::ii)) in + (let ((waddr :: ii), (size1 :: ii)) = + ((case width of + WL => (vAddr, (( 4 :: int)::ii) - woffset) + | WR => (vAddr - woffset, woffset + (( 1 :: int)::ii)) + | DL => (vAddr, (( 8 :: int)::ii) - doffset) + | DR => (vAddr - doffset, doffset + (( 1 :: int)::ii)) + )) in + (let base = (getCapBase ddc) in + (let top1 = (getCapTop ddc) in + if ((((waddr + size1)) > top1)) then + (raise_c2_exception CapEx_LengthViolation (vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word) + :: ( 64 Word.word) M) + else if ((waddr < base)) then + (raise_c2_exception CapEx_LengthViolation (vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word) + :: ( 64 Word.word) M) + else return ((to_bits ((make_the_value (( 64 :: int)::ii) :: 64 itself)) vAddr :: 64 Word.word)))))))))))))" + + (*val TranslatePC : mword ty64 -> M (mword ty64)*) definition TranslatePC :: "(64)Word.word \<Rightarrow>((register_value),((64)Word.word),(exception))monad " where @@ -3964,13 +4083,22 @@ definition checkCP2usable :: " unit \<Rightarrow>((register_value),(unit),(exce definition init_cp2_state :: " unit \<Rightarrow>((register_value),(unit),(exception))monad " where " init_cp2_state _ = ( (let defaultBits = ((capStructToCapReg default_cap :: 257 Word.word)) in - ((write_reg PCC_ref defaultBits \<then> + (let nullBits = ((capStructToCapReg null_cap :: 257 Word.word)) in + ((((((((((write_reg PCC_ref defaultBits \<then> write_reg nextPCC_ref defaultBits) \<then> write_reg delayedPCC_ref defaultBits) \<then> - (foreachM (index_list (( 0 :: int)::ii) (( 31 :: int)::ii) (( 1 :: int)::ii)) () + write_reg DDC_ref defaultBits) \<then> + write_reg KCC_ref defaultBits) \<then> + write_reg EPCC_ref defaultBits) \<then> + write_reg KDC_ref nullBits) \<then> + write_reg KR1C_ref nullBits) \<then> + write_reg KR2C_ref nullBits) \<then> + write_reg CTLSP_ref nullBits) \<then> + write_reg CTLSU_ref nullBits) \<then> + (foreachM (index_list (( 1 :: int)::ii) (( 31 :: int)::ii) (( 1 :: int)::ii)) () (\<lambda> i unit_var . (let idx = ((to_bits ((make_the_value (( 5 :: int)::ii) :: 5 itself)) i :: 5 Word.word)) in - writeCapReg idx default_cap)))))" + writeCapReg idx null_cap))))))" definition cp2_next_pc :: " unit \<Rightarrow>((register_value),(unit),(exception))monad " where @@ -3995,34 +4123,29 @@ definition capToString :: " CapStruct \<Rightarrow>((register_value),(string),( (((op@) (if(CapStruct_sealed cap) then (''1'') else (''0'')) (((op@) ('' perms:'') (((op@) - ((string_of_bits - instance_Sail_values_Bitvector_Machine_word_mword_dict + ((string_of_bits ((concat_vec (vec_of_bits [B0] :: 1 Word.word) ((getCapPerms cap :: 31 Word.word)) :: 32 Word.word)))) (((op@) ('' type:'') - (((op@) ((string_of_bits - instance_Sail_values_Bitvector_Machine_word_mword_dict(CapStruct_otype cap))) + (((op@) ((string_of_bits(CapStruct_otype cap))) (((op@) ('' offset:'') (((op@) - ((string_of_bits - instance_Sail_values_Bitvector_Machine_word_mword_dict + ((string_of_bits ((to_bits ((make_the_value (( 64 :: int)::ii) :: 64 itself)) ((getCapOffset cap)) :: 64 Word.word)))) (((op@) ('' base:'') (((op@) - ((string_of_bits - instance_Sail_values_Bitvector_Machine_word_mword_dict + ((string_of_bits ((to_bits ((make_the_value (( 64 :: int)::ii) :: 64 itself)) ((getCapBase cap)) :: 64 Word.word)))) (((op@) ('' length:'') - ((string_of_bits - instance_Sail_values_Bitvector_Machine_word_mword_dict + ((string_of_bits ((to_bits ((make_the_value (( 64 :: int)::ii) :: 64 itself)) @@ -4035,24 +4158,48 @@ definition dump_cp2_state :: " unit \<Rightarrow>((register_value),(unit),(exce " dump_cp2_state _ = ( (read_reg PCC_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__0 :: 257 Word.word) . capToString ((capRegToCapStruct w__0)) \<bind> (\<lambda> (w__1 :: string) . - (let (_ :: unit) = (prerr_endline (((op@) (''DEBUG CAP PCC'') w__1))) in - (foreachM (index_list (( 0 :: int)::ii) (( 31 :: int)::ii) (( 1 :: int)::ii)) () + (let (_ :: unit) = (print_endline (((op@) (''DEBUG CAP PCC'') w__1))) in + ((foreachM (index_list (( 0 :: int)::ii) (( 31 :: int)::ii) (( 1 :: int)::ii)) () (\<lambda> i unit_var . readCapReg ((to_bits ((make_the_value (( 5 :: int)::ii) :: 5 itself)) i :: 5 Word.word)) \<bind> (\<lambda> (w__2 :: CapStruct) . capToString w__2 \<bind> (\<lambda> (w__3 :: string) . return ((let _ = - (prerr_endline (((op@) (''DEBUG CAP REG '') (((op@) ((string_of_int + (print_endline (((op@) (''DEBUG CAP REG '') (((op@) ((string_of_int instance_Show_Show_Num_integer_dict i)) w__3))))) in - () ))))))))))" + () )))))) \<then> + (read_reg DDC_ref :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__4 :: 257 Word.word) . + capToString ((capRegToCapStruct w__4)) \<bind> (\<lambda> (w__5 :: string) . + (let (_ :: unit) = (print_endline (((op@) (''DEBUG CAP HWREG 00'') w__5))) in + (read_reg CTLSU_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__6 :: 257 Word.word) . + capToString ((capRegToCapStruct w__6)) \<bind> (\<lambda> (w__7 :: string) . + (let (_ :: unit) = (print_endline (((op@) (''DEBUG CAP HWREG 01'') w__7))) in + (read_reg CTLSP_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__8 :: 257 Word.word) . + capToString ((capRegToCapStruct w__8)) \<bind> (\<lambda> (w__9 :: string) . + (let (_ :: unit) = (print_endline (((op@) (''DEBUG CAP HWREG 08'') w__9))) in + (read_reg KR1C_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__10 :: 257 Word.word) . + capToString ((capRegToCapStruct w__10)) \<bind> (\<lambda> (w__11 :: string) . + (let (_ :: unit) = (print_endline (((op@) (''DEBUG CAP HWREG 22'') w__11))) in + (read_reg KR2C_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__12 :: 257 Word.word) . + capToString ((capRegToCapStruct w__12)) \<bind> (\<lambda> (w__13 :: string) . + (let (_ :: unit) = (print_endline (((op@) (''DEBUG CAP HWREG 23'') w__13))) in + (read_reg KCC_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__14 :: 257 Word.word) . + capToString ((capRegToCapStruct w__14)) \<bind> (\<lambda> (w__15 :: string) . + (let (_ :: unit) = (print_endline (((op@) (''DEBUG CAP HWREG 29'') w__15))) in + (read_reg KDC_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__16 :: 257 Word.word) . + capToString ((capRegToCapStruct w__16)) \<bind> (\<lambda> (w__17 :: string) . + (let (_ :: unit) = (print_endline (((op@) (''DEBUG CAP HWREG 30'') w__17))) in + (read_reg EPCC_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__18 :: 257 Word.word) . + capToString ((capRegToCapStruct w__18)) \<bind> (\<lambda> (w__19 :: string) . + return ((print_endline (((op@) (''DEBUG CAP HWREG 31'') w__19)))))))))))))))))))))))))))))))" (*val extendLoad : forall 'sz . Size 'sz => mword 'sz -> bool -> mword ty64*) definition extendLoad :: "('sz::len)Word.word \<Rightarrow> bool \<Rightarrow>(64)Word.word " where " extendLoad memResult sign = ( - if sign then (sign_extend1 (( 64 :: int)::ii) memResult :: 64 Word.word) - else (zero_extend1 (( 64 :: int)::ii) memResult :: 64 Word.word))" + if sign then (mips_sign_extend (( 64 :: int)::ii) memResult :: 64 Word.word) + else (mips_zero_extend (( 64 :: int)::ii) memResult :: 64 Word.word))" (*val TLBWriteEntry : mword ty6 -> M unit*) @@ -4489,10 +4636,6 @@ definition decode :: "(32)Word.word \<Rightarrow>(ast)option " where (let (rs :: regno) = ((subrange_vec_dec v__0 (( 25 :: int)::ii) (( 21 :: int)::ii) :: 5 Word.word)) in (let (imm :: imm16) = ((subrange_vec_dec v__0 (( 15 :: int)::ii) (( 0 :: int)::ii) :: 16 Word.word)) in Some (BCMPZ (rs,imm,LE,False,True)))) - else if (((v__0 = (vec_of_bits [B0,B0,B0,B0,B0,B0,B1,B1,B1,B1,B1,B1,B1,B1,B1,B1,B1,B1,B1,B1,B1,B1,B1,B1, - B1,B1,B0,B0,B1,B1,B0,B0] - :: 32 Word.word)))) then - Some (SYSCALL_THREAD_START () ) else if ((((((((subrange_vec_dec v__0 (( 31 :: int)::ii) (( 26 :: int)::ii) :: 6 Word.word)) = (vec_of_bits [B0,B0,B0,B0,B0,B0] :: 6 Word.word)))) \<and> (((((subrange_vec_dec v__0 (( 5 :: int)::ii) (( 0 :: int)::ii) :: 6 Word.word)) = (vec_of_bits [B0,B0,B1,B1,B0,B0] :: 6 Word.word))))))) then Some (SYSCALL () ) else if ((((((((subrange_vec_dec v__0 (( 31 :: int)::ii) (( 26 :: int)::ii) :: 6 Word.word)) = (vec_of_bits [B0,B0,B0,B0,B0,B0] :: 6 Word.word)))) \<and> (((((subrange_vec_dec v__0 (( 5 :: int)::ii) (( 0 :: int)::ii) :: 6 Word.word)) = (vec_of_bits [B0,B0,B1,B1,B0,B1] :: 6 Word.word))))))) then @@ -4669,11 +4812,6 @@ definition decode :: "(32)Word.word \<Rightarrow>(ast)option " where (let (op1 :: regno) = ((subrange_vec_dec v__0 (( 20 :: int)::ii) (( 16 :: int)::ii) :: 5 Word.word)) in (let (imm :: imm16) = ((subrange_vec_dec v__0 (( 15 :: int)::ii) (( 0 :: int)::ii) :: 16 Word.word)) in Some (CACHE (base,op1,imm))))) - else if (((((subrange_vec_dec v__0 (( 31 :: int)::ii) (( 26 :: int)::ii) :: 6 Word.word)) = (vec_of_bits [B1,B1,B0,B0,B1,B1] :: 6 Word.word)))) then - (let (base :: regno) = ((subrange_vec_dec v__0 (( 25 :: int)::ii) (( 21 :: int)::ii) :: 5 Word.word)) in - (let (op1 :: regno) = ((subrange_vec_dec v__0 (( 20 :: int)::ii) (( 16 :: int)::ii) :: 5 Word.word)) in - (let (imm :: imm16) = ((subrange_vec_dec v__0 (( 15 :: int)::ii) (( 0 :: int)::ii) :: 16 Word.word)) in - Some (PREF (base,op1,imm))))) else if ((((((((subrange_vec_dec v__0 (( 31 :: int)::ii) (( 11 :: int)::ii) :: 21 Word.word)) = (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] :: 21 Word.word)))) \<and> (((((subrange_vec_dec v__0 (( 5 :: int)::ii) (( 0 :: int)::ii) :: 6 Word.word)) = (vec_of_bits [B0,B0,B1,B1,B1,B1] :: 6 Word.word))))))) then Some (SYNC () ) @@ -5267,13 +5405,19 @@ definition decode :: "(32)Word.word \<Rightarrow>(ast)option " where (let (cb :: regno) = ((subrange_vec_dec v__0 (( 20 :: int)::ii) (( 16 :: int)::ii) :: 5 Word.word)) in (let (rt :: regno) = ((subrange_vec_dec v__0 (( 15 :: int)::ii) (( 11 :: int)::ii) :: 5 Word.word)) in (let (offset :: 11 bits) = ((subrange_vec_dec v__0 (( 10 :: int)::ii) (( 0 :: int)::ii) :: 11 Word.word)) in - Some (CLC (cd1,cb,rt,offset,False)))))) + Some (CLC (cd1,cb,rt,(mips_sign_extend (( 16 :: int)::ii) offset :: 16 Word.word),False)))))) else if ((((((((subrange_vec_dec v__0 (( 31 :: int)::ii) (( 21 :: int)::ii) :: 11 Word.word)) = (vec_of_bits [B0,B1,B0,B0,B1,B0,B1,B0,B0,B0,B0] :: 11 Word.word)))) \<and> (((((subrange_vec_dec v__0 (( 10 :: int)::ii) (( 0 :: int)::ii) :: 11 Word.word)) = (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B1,B1,B1,B1] :: 11 Word.word))))))) then (let (cd1 :: regno) = ((subrange_vec_dec v__0 (( 20 :: int)::ii) (( 16 :: int)::ii) :: 5 Word.word)) in (let (cb :: regno) = ((subrange_vec_dec v__0 (( 15 :: int)::ii) (( 11 :: int)::ii) :: 5 Word.word)) in Some (CLC (cd1,cb,(vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word),(vec_of_bits [B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0] - :: 11 Word.word),True)))) + B0,B0,B0,B0,B0,B0,B0, + B0,B0] + :: 16 Word.word),True)))) + else if (((((subrange_vec_dec v__0 (( 31 :: int)::ii) (( 26 :: int)::ii) :: 6 Word.word)) = (vec_of_bits [B0,B1,B1,B1,B0,B1] :: 6 Word.word)))) then + (let (cd1 :: regno) = ((subrange_vec_dec v__0 (( 25 :: int)::ii) (( 21 :: int)::ii) :: 5 Word.word)) in + (let (cb :: regno) = ((subrange_vec_dec v__0 (( 20 :: int)::ii) (( 16 :: int)::ii) :: 5 Word.word)) in + (let (offset :: 16 bits) = ((subrange_vec_dec v__0 (( 15 :: int)::ii) (( 0 :: int)::ii) :: 16 Word.word)) in + Some (CLC (cd1,cb,(vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word),offset,False))))) else if ((((((((subrange_vec_dec v__0 (( 31 :: int)::ii) (( 21 :: int)::ii) :: 11 Word.word)) = (vec_of_bits [B0,B1,B0,B0,B1,B0,B0,B0,B1,B0,B0] :: 11 Word.word)))) \<and> (((((subrange_vec_dec v__0 (( 15 :: int)::ii) (( 0 :: int)::ii) :: 16 Word.word)) = (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B1,B1,B0] :: 16 Word.word))))))) then (let (rt :: regno) = ((subrange_vec_dec v__0 (( 20 :: int)::ii) (( 16 :: int)::ii) :: 5 Word.word)) in @@ -5286,7 +5430,7 @@ definition decode :: "(32)Word.word \<Rightarrow>(ast)option " where definition execute_XORI :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_XORI rs rt imm = ( (rGPR rs :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - wGPR rt ((xor_vec w__0 ((zero_extend1 (( 64 :: int)::ii) imm :: 64 Word.word)) :: 64 Word.word))))" + wGPR rt ((xor_vec w__0 ((mips_zero_extend (( 64 :: int)::ii) imm :: 64 Word.word)) :: 64 Word.word))))" (*val execute_XOR : mword ty5 -> mword ty5 -> mword ty5 -> M unit*) @@ -5301,7 +5445,7 @@ definition execute_XOR :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> (*val execute_WAIT : unit -> M unit*) definition execute_WAIT :: " unit \<Rightarrow>((register_value),(unit),(exception))monad " where - " execute_WAIT g__121 = ( + " execute_WAIT g__19 = ( (read_reg PC_ref :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 bits) . write_reg nextPC_ref w__0))" @@ -5321,7 +5465,7 @@ definition execute_TRAPREG :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightar definition execute_TRAPIMM :: "(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow> Comparison \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_TRAPIMM rs imm cmp = ( (rGPR rs :: ( 64 Word.word) M) \<bind> (\<lambda> rs_val . - (let (imm_val :: 64 bits) = ((sign_extend1 (( 64 :: int)::ii) imm :: 64 Word.word)) in + (let (imm_val :: 64 bits) = ((mips_sign_extend (( 64 :: int)::ii) imm :: 64 Word.word)) in (let condition = (compare cmp rs_val imm_val) in if condition then SignalException Tr else return () ))))" @@ -5330,7 +5474,7 @@ definition execute_TRAPIMM :: "(5)Word.word \<Rightarrow>(16)Word.word \<Righta (*val execute_TLBWR : unit -> M unit*) definition execute_TLBWR :: " unit \<Rightarrow>((register_value),(unit),(exception))monad " where - " execute_TLBWR g__125 = ( + " execute_TLBWR g__23 = ( (checkCP0Access () \<then> (read_reg TLBRandom_ref :: ( 6 Word.word) M)) \<bind> (\<lambda> (w__0 :: 6 Word.word) . TLBWriteEntry w__0))" @@ -5338,7 +5482,7 @@ definition execute_TLBWR :: " unit \<Rightarrow>((register_value),(unit),(excep (*val execute_TLBWI : unit -> M unit*) definition execute_TLBWI :: " unit \<Rightarrow>((register_value),(unit),(exception))monad " where - " execute_TLBWI g__124 = ( + " execute_TLBWI g__22 = ( (checkCP0Access () \<then> (read_reg TLBIndex_ref :: ( 6 Word.word) M)) \<bind> (\<lambda> (w__0 :: 6 Word.word) . TLBWriteEntry w__0))" @@ -5346,7 +5490,7 @@ definition execute_TLBWI :: " unit \<Rightarrow>((register_value),(unit),(excep (*val execute_TLBR : unit -> M unit*) definition execute_TLBR :: " unit \<Rightarrow>((register_value),(unit),(exception))monad " where - " execute_TLBR g__126 = ( + " execute_TLBR g__24 = ( (checkCP0Access () \<then> (read_reg TLBIndex_ref :: ( 6 Word.word) M)) \<bind> (\<lambda> (w__0 :: TLBIndexT) . (let i = (Word.uint w__0) in @@ -5374,10 +5518,10 @@ definition execute_TLBR :: " unit \<Rightarrow>((register_value),(unit),(except (*val execute_TLBP : unit -> M unit*) definition execute_TLBP :: " unit \<Rightarrow>((register_value),(unit),(exception))monad " where - " execute_TLBP g__127 = ( + " execute_TLBP g__25 = ( (checkCP0Access () \<then> read_reg TLBEntryHi_ref) \<bind> (\<lambda> (w__0 :: TLBEntryHiReg) . - (tlbSearch ((get_TLBEntryHiReg w__0 :: 64 Word.word)) :: ( ( 6 Word.word)option) M) \<bind> (\<lambda> result . + (tlbSearch ((get_TLBEntryHiReg_bits w__0 :: 64 Word.word)) :: ( ( 6 Word.word)option) M) \<bind> (\<lambda> result . (case result of Some (idx) => write_reg TLBProbe_ref (vec_of_bits [B0] :: 1 Word.word) \<then> write_reg TLBIndex_ref idx @@ -5392,7 +5536,7 @@ definition execute_TLBP :: " unit \<Rightarrow>((register_value),(unit),(except definition execute_Store :: " WordType \<Rightarrow> bool \<Rightarrow>(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_Store width conditional base rt offset = ( (rGPR base :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - (addrWrapper ((add_vec ((sign_extend1 (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) + (addrWrapper ((add_vec ((mips_sign_extend (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) StoreData width :: ( 64 Word.word) M) \<bind> (\<lambda> (vAddr :: 64 bits) . (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> rt_val . @@ -5403,19 +5547,14 @@ definition execute_Store :: " WordType \<Rightarrow> bool \<Rightarrow>(5)Word. (read_reg CP0LLBit_ref :: ( 1 Word.word) M) \<bind> (\<lambda> (w__1 :: 1 bits) . (if ((bit_to_bool ((access_vec_dec w__1 (( 0 :: int)::ii))))) then (case width of - B => - MEMw_conditional_wrapper pAddr (( 1 :: int)::ii) - ((subrange_vec_dec rt_val (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word)) - | H => - MEMw_conditional_wrapper pAddr (( 2 :: int)::ii) - ((subrange_vec_dec rt_val (( 15 :: int)::ii) (( 0 :: int)::ii) :: 16 Word.word)) - | W => + W => MEMw_conditional_wrapper pAddr (( 4 :: int)::ii) ((subrange_vec_dec rt_val (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) | D => MEMw_conditional_wrapper pAddr (( 8 :: int)::ii) rt_val + | _ => throw (Error_internal_error () ) ) else return False) \<bind> (\<lambda> (success :: bool) . - wGPR rt ((zero_extend1 (( 64 :: int)::ii) ((bool_to_bits success :: 1 Word.word)) :: 64 Word.word)))) + wGPR rt ((mips_zero_extend (( 64 :: int)::ii) ((bool_to_bits success :: 1 Word.word)) :: 64 Word.word)))) else (case width of B => MEMw_wrapper pAddr (( 1 :: int)::ii) ((subrange_vec_dec rt_val (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word)) @@ -5425,22 +5564,16 @@ definition execute_Store :: " WordType \<Rightarrow> bool \<Rightarrow>(5)Word. ))))))" -(*val execute_SYSCALL_THREAD_START : unit -> unit*) - -definition execute_SYSCALL_THREAD_START :: " unit \<Rightarrow> unit " where - " execute_SYSCALL_THREAD_START g__117 = ( () )" - - (*val execute_SYSCALL : unit -> M unit*) definition execute_SYSCALL :: " unit \<Rightarrow>((register_value),(unit),(exception))monad " where - " execute_SYSCALL g__119 = ( SignalException Sys )" + " execute_SYSCALL g__17 = ( SignalException Sys )" (*val execute_SYNC : unit -> M unit*) definition execute_SYNC :: " unit \<Rightarrow>((register_value),(unit),(exception))monad " where - " execute_SYNC g__122 = ( MEM_sync () )" + " execute_SYNC g__20 = ( MEM_sync () )" (*val execute_SWR : mword ty5 -> mword ty5 -> mword ty16 -> M unit*) @@ -5448,8 +5581,8 @@ definition execute_SYNC :: " unit \<Rightarrow>((register_value),(unit),(except definition execute_SWR :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_SWR base rt offset = ( (rGPR base :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - (addrWrapper ((add_vec ((sign_extend1 (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) - StoreData W + (addrWrapperUnaligned + ((add_vec ((mips_sign_extend (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) StoreData WR :: ( 64 Word.word) M) \<bind> (\<lambda> vAddr . (TLBTranslate vAddr StoreData :: ( 64 Word.word) M) \<bind> (\<lambda> pAddr . (let wordAddr = @@ -5472,8 +5605,8 @@ definition execute_SWR :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> definition execute_SWL :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_SWL base rt offset = ( (rGPR base :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - (addrWrapper ((add_vec ((sign_extend1 (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) - StoreData W + (addrWrapperUnaligned + ((add_vec ((mips_sign_extend (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) StoreData WL :: ( 64 Word.word) M) \<bind> (\<lambda> vAddr . (TLBTranslate vAddr StoreData :: ( 64 Word.word) M) \<bind> (\<lambda> pAddr . (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> reg_val . @@ -5495,10 +5628,10 @@ definition execute_SUBU :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> opB . if (((((NotWordVal opA)) \<or> ((NotWordVal opB))))) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0) + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0) else wGPR rd - ((sign_extend1 (( 64 :: int)::ii) + ((mips_sign_extend (( 64 :: int)::ii) ((sub_vec ((subrange_vec_dec opA (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) ((subrange_vec_dec opB (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 32 Word.word)) @@ -5513,19 +5646,21 @@ definition execute_SUB :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> opB . if (((((NotWordVal opA)) \<or> ((NotWordVal opB))))) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0) + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0) else (let (temp33 :: 33 bits) = ((sub_vec - ((sign_extend1 (( 33 :: int)::ii) ((subrange_vec_dec opA (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 33 Word.word)) - ((sign_extend1 (( 33 :: int)::ii) ((subrange_vec_dec opB (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 33 Word.word)) + ((mips_sign_extend (( 33 :: int)::ii) ((subrange_vec_dec opA (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + :: 33 Word.word)) + ((mips_sign_extend (( 33 :: int)::ii) ((subrange_vec_dec opB (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + :: 33 Word.word)) :: 33 Word.word)) in if ((neq_bool ((bit_to_bool ((access_vec_dec temp33 (( 32 :: int)::ii))))) ((bit_to_bool ((access_vec_dec temp33 (( 31 :: int)::ii))))))) then SignalException Ov else wGPR rd - ((sign_extend1 (( 64 :: int)::ii) ((subrange_vec_dec temp33 (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + ((mips_sign_extend (( 64 :: int)::ii) ((subrange_vec_dec temp33 (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 64 Word.word))))))" @@ -5538,12 +5673,12 @@ definition execute_SRLV :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow (let sa = ((subrange_vec_dec w__0 (( 4 :: int)::ii) (( 0 :: int)::ii) :: 5 Word.word)) in if ((NotWordVal temp)) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . wGPR rd w__1) + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . wGPR rd w__1) else (let rt32 = ((subrange_vec_dec temp (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) in (shift_bits_right - instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict rt32 sa :: ( 32 Word.word) M) \<bind> (\<lambda> (w__2 :: 32 Word.word) . - wGPR rd ((sign_extend1 (( 64 :: int)::ii) w__2 :: 64 Word.word))))))))" + instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict rt32 sa :: ( 32 Word.word) M) \<bind> (\<lambda> (w__2 :: 32 Word.word) . + wGPR rd ((mips_sign_extend (( 64 :: int)::ii) w__2 :: 64 Word.word))))))))" (*val execute_SRL : mword ty5 -> mword ty5 -> mword ty5 -> M unit*) @@ -5553,12 +5688,12 @@ definition execute_SRL :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> temp . if ((NotWordVal temp)) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0) + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0) else (let rt32 = ((subrange_vec_dec temp (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) in (shift_bits_right - instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict rt32 sa :: ( 32 Word.word) M) \<bind> (\<lambda> (w__1 :: 32 Word.word) . - wGPR rd ((sign_extend1 (( 64 :: int)::ii) w__1 :: 64 Word.word))))))" + instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict rt32 sa :: ( 32 Word.word) M) \<bind> (\<lambda> (w__1 :: 32 Word.word) . + wGPR rd ((mips_sign_extend (( 64 :: int)::ii) w__1 :: 64 Word.word))))))" (*val execute_SRAV : mword ty5 -> mword ty5 -> mword ty5 -> M unit*) @@ -5570,12 +5705,12 @@ definition execute_SRAV :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow (let sa = ((subrange_vec_dec w__0 (( 4 :: int)::ii) (( 0 :: int)::ii) :: 5 Word.word)) in if ((NotWordVal temp)) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . wGPR rd w__1) + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . wGPR rd w__1) else (let rt32 = ((subrange_vec_dec temp (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) in (shift_bits_right_arith - instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict rt32 sa :: ( 32 Word.word) M) \<bind> (\<lambda> (w__2 :: 32 Word.word) . - wGPR rd ((sign_extend1 (( 64 :: int)::ii) w__2 :: 64 Word.word))))))))" + instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict rt32 sa :: ( 32 Word.word) M) \<bind> (\<lambda> (w__2 :: 32 Word.word) . + wGPR rd ((mips_sign_extend (( 64 :: int)::ii) w__2 :: 64 Word.word))))))))" (*val execute_SRA : mword ty5 -> mword ty5 -> mword ty5 -> M unit*) @@ -5585,12 +5720,12 @@ definition execute_SRA :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> temp . if ((NotWordVal temp)) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0) + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0) else (let rt32 = ((subrange_vec_dec temp (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) in (shift_bits_right_arith - instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict rt32 sa :: ( 32 Word.word) M) \<bind> (\<lambda> (w__1 :: 32 Word.word) . - wGPR rd ((sign_extend1 (( 64 :: int)::ii) w__1 :: 64 Word.word))))))" + instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict rt32 sa :: ( 32 Word.word) M) \<bind> (\<lambda> (w__1 :: 32 Word.word) . + wGPR rd ((mips_sign_extend (( 64 :: int)::ii) w__1 :: 64 Word.word))))))" (*val execute_SLTU : mword ty5 -> mword ty5 -> mword ty5 -> M unit*) @@ -5600,7 +5735,7 @@ definition execute_SLTU :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow (rGPR rs :: ( 64 Word.word) M) \<bind> (\<lambda> rs_val . (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> rt_val . wGPR rd - ((zero_extend1 (( 64 :: int)::ii) + ((mips_zero_extend (( 64 :: int)::ii) (if ((zopz0zI_u rs_val rt_val)) then (vec_of_bits [B1] :: 1 Word.word) else (vec_of_bits [B0] :: 1 Word.word)) :: 64 Word.word)))))" @@ -5611,9 +5746,9 @@ definition execute_SLTU :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow definition execute_SLTIU :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_SLTIU rs rt imm = ( (rGPR rs :: ( 64 Word.word) M) \<bind> (\<lambda> rs_val . - (let (immext :: 64 bits) = ((sign_extend1 (( 64 :: int)::ii) imm :: 64 Word.word)) in + (let (immext :: 64 bits) = ((mips_sign_extend (( 64 :: int)::ii) imm :: 64 Word.word)) in wGPR rt - ((zero_extend1 (( 64 :: int)::ii) + ((mips_zero_extend (( 64 :: int)::ii) (if ((zopz0zI_u rs_val immext)) then (vec_of_bits [B1] :: 1 Word.word) else (vec_of_bits [B0] :: 1 Word.word)) :: 64 Word.word)))))" @@ -5627,7 +5762,7 @@ definition execute_SLTI :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow (rGPR rs :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . (let rs_val = (Word.sint w__0) in wGPR rt - ((zero_extend1 (( 64 :: int)::ii) + ((mips_zero_extend (( 64 :: int)::ii) (if ((rs_val < imm_val)) then (vec_of_bits [B1] :: 1 Word.word) else (vec_of_bits [B0] :: 1 Word.word)) :: 64 Word.word))))))" @@ -5640,7 +5775,7 @@ definition execute_SLT :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> (rGPR rs :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . wGPR rd - ((zero_extend1 (( 64 :: int)::ii) + ((mips_zero_extend (( 64 :: int)::ii) (if ((zopz0zI_s w__0 w__1)) then (vec_of_bits [B1] :: 1 Word.word) else (vec_of_bits [B0] :: 1 Word.word)) :: 64 Word.word)))))" @@ -5654,8 +5789,8 @@ definition execute_SLLV :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow (let sa = ((subrange_vec_dec w__0 (( 4 :: int)::ii) (( 0 :: int)::ii) :: 5 Word.word)) in (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . (let rt32 = ((subrange_vec_dec w__1 (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) in - (shift_bits_left instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict rt32 sa :: ( 32 Word.word) M) \<bind> (\<lambda> (w__2 :: 32 Word.word) . - wGPR rd ((sign_extend1 (( 64 :: int)::ii) w__2 :: 64 Word.word))))))))" + (shift_bits_left instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict rt32 sa :: ( 32 Word.word) M) \<bind> (\<lambda> (w__2 :: 32 Word.word) . + wGPR rd ((mips_sign_extend (( 64 :: int)::ii) w__2 :: 64 Word.word))))))))" (*val execute_SLL : mword ty5 -> mword ty5 -> mword ty5 -> M unit*) @@ -5664,8 +5799,8 @@ definition execute_SLL :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> " execute_SLL rt rd sa = ( (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . (let rt32 = ((subrange_vec_dec w__0 (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) in - (shift_bits_left instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict rt32 sa :: ( 32 Word.word) M) \<bind> (\<lambda> (w__1 :: 32 Word.word) . - wGPR rd ((sign_extend1 (( 64 :: int)::ii) w__1 :: 64 Word.word))))))" + (shift_bits_left instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict rt32 sa :: ( 32 Word.word) M) \<bind> (\<lambda> (w__1 :: 32 Word.word) . + wGPR rd ((mips_sign_extend (( 64 :: int)::ii) w__1 :: 64 Word.word))))))" (*val execute_SDR : mword ty5 -> mword ty5 -> mword ty16 -> M unit*) @@ -5673,8 +5808,8 @@ definition execute_SLL :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> definition execute_SDR :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_SDR base rt offset = ( (rGPR base :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - (addrWrapper ((add_vec ((sign_extend1 (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) - StoreData D + (addrWrapperUnaligned + ((add_vec ((mips_sign_extend (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) StoreData DR :: ( 64 Word.word) M) \<bind> (\<lambda> vAddr . (TLBTranslate vAddr StoreData :: ( 64 Word.word) M) \<bind> (\<lambda> pAddr . (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> reg_val . @@ -5705,8 +5840,8 @@ definition execute_SDR :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> definition execute_SDL :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_SDL base rt offset = ( (rGPR base :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - (addrWrapper ((add_vec ((sign_extend1 (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) - StoreData D + (addrWrapperUnaligned + ((add_vec ((mips_sign_extend (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) StoreData DL :: ( 64 Word.word) M) \<bind> (\<lambda> vAddr . (TLBTranslate vAddr StoreData :: ( 64 Word.word) M) \<bind> (\<lambda> pAddr . (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> reg_val . @@ -5731,7 +5866,7 @@ definition execute_SDL :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> (*val execute_RI : unit -> M unit*) definition execute_RI :: " unit \<Rightarrow>((register_value),(unit),(exception))monad " where - " execute_RI g__130 = ( SignalException ResI )" + " execute_RI g__28 = ( SignalException ResI )" (*val execute_RDHWR : mword ty5 -> mword ty5 -> M unit*) @@ -5741,7 +5876,8 @@ definition execute_RDHWR :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro getAccessLevel () \<bind> (\<lambda> accessLevel . (let (haveAccessLevel :: bool) = (accessLevel = Kernel) in read_reg CP0Status_ref \<bind> (\<lambda> (w__0 :: StatusReg) . - (let (haveCU0 :: bool) = (B1 = ((access_vec_dec ((get_StatusReg_CU w__0 :: 4 Word.word)) (( 0 :: int)::ii)))) in + (let (haveCU0 :: bool) = + (B1 = ((access_vec_dec ((get_StatusReg_CU w__0 :: 4 Word.word)) (( 0 :: int)::ii)))) in (let rdi = (Word.uint rd) in (read_reg CP0HWREna_ref :: ( 32 Word.word) M) \<bind> (\<lambda> (w__1 :: 32 bits) . (let (haveHWREna :: bool) = (B1 = ((access_vec_dec w__1 rdi))) in @@ -5749,32 +5885,26 @@ definition execute_RDHWR :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro else return () ) \<then> ((let b__146 = rd in (if (((b__146 = (vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word)))) then - return ((zero_extend1 (( 64 :: int)::ii) (vec_of_bits [B0] :: 1 Word.word) :: 64 Word.word)) + return ((mips_zero_extend (( 64 :: int)::ii) (vec_of_bits [B0] :: 1 Word.word) :: 64 Word.word)) else if (((b__146 = (vec_of_bits [B0,B0,B0,B0,B1] :: 5 Word.word)))) then - return ((zero_extend1 (( 64 :: int)::ii) (vec_of_bits [B0] :: 1 Word.word) :: 64 Word.word)) + return ((mips_zero_extend (( 64 :: int)::ii) (vec_of_bits [B0] :: 1 Word.word) :: 64 Word.word)) else if (((b__146 = (vec_of_bits [B0,B0,B0,B1,B0] :: 5 Word.word)))) then (read_reg CP0Count_ref :: ( 32 Word.word) M) \<bind> (\<lambda> (w__2 :: 32 bits) . - return ((zero_extend1 (( 64 :: int)::ii) w__2 :: 64 Word.word))) + return ((mips_zero_extend (( 64 :: int)::ii) w__2 :: 64 Word.word))) else if (((b__146 = (vec_of_bits [B0,B0,B0,B1,B1] :: 5 Word.word)))) then - return ((zero_extend1 (( 64 :: int)::ii) (vec_of_bits [B1] :: 1 Word.word) :: 64 Word.word)) + return ((mips_zero_extend (( 64 :: int)::ii) (vec_of_bits [B1] :: 1 Word.word) :: 64 Word.word)) else if (((b__146 = (vec_of_bits [B1,B1,B1,B0,B1] :: 5 Word.word)))) then (read_reg CP0UserLocal_ref :: ( 64 Word.word) M) else (SignalException ResI :: ( 64 Word.word) M)) \<bind> (\<lambda> (temp :: 64 bits) . wGPR rt temp)))))))))))" -(*val execute_PREF : mword ty5 -> mword ty5 -> mword ty16 -> unit*) - -definition execute_PREF :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow> unit " where - " execute_PREF base op1 imm = ( () )" - - (*val execute_ORI : mword ty5 -> mword ty5 -> mword ty16 -> M unit*) definition execute_ORI :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_ORI rs rt imm = ( (rGPR rs :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - wGPR rt ((or_vec w__0 ((zero_extend1 (( 64 :: int)::ii) imm :: 64 Word.word)) :: 64 Word.word))))" + wGPR rt ((or_vec w__0 ((mips_zero_extend (( 64 :: int)::ii) imm :: 64 Word.word)) :: 64 Word.word))))" (*val execute_OR : mword ty5 -> mword ty5 -> mword ty5 -> M unit*) @@ -5803,17 +5933,19 @@ definition execute_MULTU :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> rtVal . (if (((((NotWordVal rsVal)) \<or> ((NotWordVal rtVal))))) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) else return ((mult_vec ((subrange_vec_dec rsVal (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) ((subrange_vec_dec rtVal (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 64 Word.word))) \<bind> (\<lambda> (result :: 64 bits) . write_reg HI_ref - ((sign_extend1 (( 64 :: int)::ii) ((subrange_vec_dec result (( 63 :: int)::ii) (( 32 :: int)::ii) :: 32 Word.word)) :: 64 Word.word)) \<then> + ((mips_sign_extend (( 64 :: int)::ii) ((subrange_vec_dec result (( 63 :: int)::ii) (( 32 :: int)::ii) :: 32 Word.word)) + :: 64 Word.word)) \<then> write_reg LO_ref - ((sign_extend1 (( 64 :: int)::ii) ((subrange_vec_dec result (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 64 Word.word))))))" + ((mips_sign_extend (( 64 :: int)::ii) ((subrange_vec_dec result (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + :: 64 Word.word))))))" (*val execute_MULT : mword ty5 -> mword ty5 -> M unit*) @@ -5824,17 +5956,19 @@ definition execute_MULT :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> rtVal . (if (((((NotWordVal rsVal)) \<or> ((NotWordVal rtVal))))) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) else return ((mults_vec ((subrange_vec_dec rsVal (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) ((subrange_vec_dec rtVal (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 64 Word.word))) \<bind> (\<lambda> (result :: 64 bits) . write_reg HI_ref - ((sign_extend1 (( 64 :: int)::ii) ((subrange_vec_dec result (( 63 :: int)::ii) (( 32 :: int)::ii) :: 32 Word.word)) :: 64 Word.word)) \<then> + ((mips_sign_extend (( 64 :: int)::ii) ((subrange_vec_dec result (( 63 :: int)::ii) (( 32 :: int)::ii) :: 32 Word.word)) + :: 64 Word.word)) \<then> write_reg LO_ref - ((sign_extend1 (( 64 :: int)::ii) ((subrange_vec_dec result (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 64 Word.word))))))" + ((mips_sign_extend (( 64 :: int)::ii) ((subrange_vec_dec result (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + :: 64 Word.word))))))" (*val execute_MUL : mword ty5 -> mword ty5 -> mword ty5 -> M unit*) @@ -5844,16 +5978,16 @@ definition execute_MUL :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> (rGPR rs :: ( 64 Word.word) M) \<bind> (\<lambda> rsVal . (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> rtVal . (let (result :: 64 bits) = - ((sign_extend1 (( 64 :: int)::ii) + ((mips_sign_extend (( 64 :: int)::ii) ((mults_vec ((subrange_vec_dec rsVal (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) ((subrange_vec_dec rtVal (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 64 Word.word)) :: 64 Word.word)) in (if (((((NotWordVal rsVal)) \<or> ((NotWordVal rtVal))))) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) else - return ((sign_extend1 (( 64 :: int)::ii) ((subrange_vec_dec result (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + return ((mips_sign_extend (( 64 :: int)::ii) ((subrange_vec_dec result (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 64 Word.word))) \<bind> (\<lambda> (w__1 :: 64 Word.word) . wGPR rd w__1)))))" @@ -5877,204 +6011,93 @@ definition execute_MTHI :: "(5)Word.word \<Rightarrow>((register_value),(unit), definition execute_MTC0 :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(3)Word.word \<Rightarrow> bool \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_MTC0 rt rd sel double = ( (checkCP0Access () \<then> - (rGPR rt :: ( 64 Word.word) M)) \<bind> (\<lambda> reg_val . - (case (rd, sel) of - (b__108, b__109) => - if ((((((b__108 = (vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word)))) \<and> - (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - write_reg TLBIndex_ref - ((mask0 (( 6 :: int):: ii) reg_val :: 6 Word.word)) else - if ((((((b__108 = (vec_of_bits [B0,B0,B0,B0,B1] :: 5 Word.word)))) \<and> - (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - return () else - if ((((((b__108 = (vec_of_bits [B0,B0,B0,B1,B0] :: 5 Word.word)))) - \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - set_TLBEntryLoReg TLBEntryLo0_ref reg_val else - if ((((((b__108 = (vec_of_bits [B0,B0,B0,B1,B1] :: 5 Word.word)))) - \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - set_TLBEntryLoReg TLBEntryLo1_ref reg_val else - if ((((((b__108 = (vec_of_bits [B0,B0,B1,B0,B0] :: 5 Word.word)))) - \<and> - (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - set_ContextReg_PTEBase TLBContext_ref - ((subrange_vec_dec reg_val (( 63 :: int):: ii) - (( 23 :: int):: ii) :: 41 Word.word)) else - if ((((((b__108 = (vec_of_bits [B0,B0,B1,B0,B0] :: 5 Word.word)))) - \<and> - (((b__109 = (vec_of_bits [B0,B1,B0] :: 3 Word.word))))))) then - write_reg CP0UserLocal_ref reg_val else - if ((((((b__108 = (vec_of_bits [B0,B0,B1,B0,B1] :: 5 Word.word)))) - \<and> - (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - write_reg TLBPageMask_ref - ((subrange_vec_dec reg_val (( 28 :: int):: ii) - (( 13 :: int):: ii) :: 16 Word.word)) else - if ((((((b__108 = - (vec_of_bits [B0,B0,B1,B1,B0] :: 5 Word.word)))) - \<and> - (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - write_reg TLBWired_ref - ((mask0 (( 6 :: int):: ii) reg_val :: 6 Word.word)) - \<then> write_reg TLBRandom_ref TLBIndexMax else - if ((((((b__108 = - (vec_of_bits [B0,B0,B1,B1,B1] :: 5 Word.word)))) - \<and> - (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - write_reg CP0HWREna_ref - ((concat_vec - ((subrange_vec_dec reg_val (( 31 :: int):: ii) - (( 29 :: int):: ii) :: 3 Word.word)) - ((concat_vec - (vec_of_bits - [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0] :: 25 Word.word) - ((subrange_vec_dec reg_val (( 3 :: int):: ii) - (( 0 :: int):: ii) :: 4 Word.word)) - :: 29 Word.word)) :: 32 Word.word)) else - if ((((((b__108 = - (vec_of_bits [B0,B1,B0,B0,B0] :: 5 Word.word)))) - \<and> - (((b__109 = - (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - return () else - if ((((((b__108 = - (vec_of_bits [B0,B1,B0,B0,B1] :: 5 Word.word)))) - \<and> - (((b__109 = - (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - write_reg CP0Count_ref - ((subrange_vec_dec reg_val (( 31 :: int):: ii) - (( 0 :: int):: ii) :: 32 Word.word)) else - if ((((((b__108 = - (vec_of_bits [B0,B1,B0,B1,B0] :: 5 Word.word)))) - \<and> - (((b__109 = - (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - (set_TLBEntryHiReg_R TLBEntryHi_ref - ((subrange_vec_dec reg_val (( 63 :: int):: ii) - (( 62 :: int):: ii) :: 2 Word.word)) \<then> - set_TLBEntryHiReg_VPN2 TLBEntryHi_ref - ((subrange_vec_dec reg_val (( 39 :: int):: ii) - (( 13 :: int):: ii) :: 27 Word.word))) - \<then> - set_TLBEntryHiReg_ASID TLBEntryHi_ref - ((subrange_vec_dec reg_val (( 7 :: int):: ii) - (( 0 :: int):: ii) :: 8 Word.word)) else - if ((((((b__108 = - (vec_of_bits [B0,B1,B0,B1,B1] :: 5 Word.word)))) - \<and> - (((b__109 = - (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - (write_reg CP0Compare_ref - ((subrange_vec_dec reg_val (( 31 :: int):: ii) - (( 0 :: int):: ii) :: 32 Word.word)) - \<then> read_reg CP0Cause_ref) \<bind> - (\<lambda> (w__0 :: CauseReg) . - set_CauseReg_IP CP0Cause_ref - ((and_vec - ((get_CauseReg_IP w__0 :: 8 Word.word)) - (vec_of_bits [B0,B1,B1,B1,B1,B1,B1,B1] :: 8 Word.word) - :: 8 Word.word))) else - if ((((((b__108 = - (vec_of_bits [B0,B1,B1,B0,B0] :: 5 Word.word)))) - \<and> - (((b__109 = - (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - ((((((((set_StatusReg_CU CP0Status_ref - ((subrange_vec_dec reg_val - (( 31 :: int):: ii) - (( 28 :: int):: ii) :: 4 Word.word)) - \<then> - set_StatusReg_BEV CP0Status_ref - ((cast_unit_vec0 - ((access_vec_dec reg_val - (( 22 :: int):: ii))) :: 1 Word.word))) - \<then> - set_StatusReg_IM CP0Status_ref - ((subrange_vec_dec reg_val - (( 15 :: int):: ii) - (( 8 :: int):: ii) :: 8 Word.word))) - \<then> - set_StatusReg_KX CP0Status_ref - ((cast_unit_vec0 - ((access_vec_dec reg_val - (( 7 :: int):: ii))) :: 1 Word.word))) - \<then> - set_StatusReg_SX CP0Status_ref - ((cast_unit_vec0 - ((access_vec_dec reg_val - (( 6 :: int):: ii))) :: 1 Word.word))) - \<then> - set_StatusReg_UX CP0Status_ref - ((cast_unit_vec0 - ((access_vec_dec reg_val - (( 5 :: int):: ii))) :: 1 Word.word))) - \<then> - set_StatusReg_KSU CP0Status_ref - ((subrange_vec_dec reg_val - (( 4 :: int):: ii) - (( 3 :: int):: ii) :: 2 Word.word))) - \<then> - set_StatusReg_ERL CP0Status_ref - ((cast_unit_vec0 - ((access_vec_dec reg_val - (( 2 :: int):: ii))) :: 1 Word.word))) - \<then> - set_StatusReg_EXL CP0Status_ref - ((cast_unit_vec0 - ((access_vec_dec reg_val - (( 1 :: int):: ii))) :: 1 Word.word))) - \<then> - set_StatusReg_IE CP0Status_ref - ((cast_unit_vec0 - ((access_vec_dec reg_val - (( 0 :: int):: ii))) :: 1 Word.word)) - else - if ((((((b__108 = - (vec_of_bits [B0,B1,B1,B0,B1] :: 5 Word.word)))) - \<and> - (((b__109 = - (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - (set_CauseReg_IV CP0Cause_ref - ((cast_unit_vec0 - ((access_vec_dec reg_val - (( 23 :: int):: ii))) :: 1 Word.word)) - \<then> read_reg CP0Cause_ref) \<bind> - (\<lambda> (w__1 :: CauseReg) . - (let ip = ((get_CauseReg_IP w__1 :: 8 Word.word)) in - set_CauseReg_IP CP0Cause_ref - ((concat_vec - ((subrange_vec_dec ip - (( 7 :: int):: ii) - (( 2 :: int):: ii) :: 6 Word.word)) - ((subrange_vec_dec reg_val - (( 9 :: int):: ii) - (( 8 :: int):: ii) :: 2 Word.word)) - :: 8 Word.word)))) else - if ((((((b__108 = - (vec_of_bits [B0,B1,B1,B1,B0] :: 5 Word.word)))) - \<and> - (((b__109 = - (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - write_reg CP0EPC_ref reg_val else - if ((((((b__108 = - (vec_of_bits [B1,B0,B0,B0,B0] :: 5 Word.word)))) - \<and> - (((b__109 = - (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - return () else - if ((((((b__108 = - (vec_of_bits [B1,B0,B1,B0,B0] :: 5 Word.word)))) - \<and> - (((b__109 = - (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - set_XContextReg_XPTEBase - TLBXContext_ref - ((subrange_vec_dec reg_val - (( 63 :: int):: ii) - (( 33 :: int):: ii) :: 31 Word.word)) - else write_reg CP0ErrorEPC_ref reg_val - )))" + (rGPR rt :: ( 64 Word.word) M)) \<bind> (\<lambda> reg_val . + (case (rd, sel) of + (b__108, b__109) => + if ((((((b__108 = (vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word)))) \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + write_reg TLBIndex_ref ((mask0 (( 6 :: int)::ii) reg_val :: 6 Word.word)) + else if ((((((b__108 = (vec_of_bits [B0,B0,B0,B0,B1] :: 5 Word.word)))) \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + return () + else if ((((((b__108 = (vec_of_bits [B0,B0,B0,B1,B0] :: 5 Word.word)))) \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + set_TLBEntryLoReg_bits TLBEntryLo0_ref reg_val + else if ((((((b__108 = (vec_of_bits [B0,B0,B0,B1,B1] :: 5 Word.word)))) \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + set_TLBEntryLoReg_bits TLBEntryLo1_ref reg_val + else if ((((((b__108 = (vec_of_bits [B0,B0,B1,B0,B0] :: 5 Word.word)))) \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + set_ContextReg_PTEBase TLBContext_ref + ((subrange_vec_dec reg_val (( 63 :: int)::ii) (( 23 :: int)::ii) :: 41 Word.word)) + else if ((((((b__108 = (vec_of_bits [B0,B0,B1,B0,B0] :: 5 Word.word)))) \<and> (((b__109 = (vec_of_bits [B0,B1,B0] :: 3 Word.word))))))) then + write_reg CP0UserLocal_ref reg_val + else if ((((((b__108 = (vec_of_bits [B0,B0,B1,B0,B1] :: 5 Word.word)))) \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + write_reg TLBPageMask_ref ((subrange_vec_dec reg_val (( 28 :: int)::ii) (( 13 :: int)::ii) :: 16 Word.word)) + else if ((((((b__108 = (vec_of_bits [B0,B0,B1,B1,B0] :: 5 Word.word)))) \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + write_reg TLBWired_ref ((mask0 (( 6 :: int)::ii) reg_val :: 6 Word.word)) \<then> + write_reg TLBRandom_ref TLBIndexMax + else if ((((((b__108 = (vec_of_bits [B0,B0,B1,B1,B1] :: 5 Word.word)))) \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + write_reg + CP0HWREna_ref + ((concat_vec ((subrange_vec_dec reg_val (( 31 :: int)::ii) (( 29 :: int)::ii) :: 3 Word.word)) + ((concat_vec + (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0] + :: 25 Word.word) ((subrange_vec_dec reg_val (( 3 :: int)::ii) (( 0 :: int)::ii) :: 4 Word.word)) + :: 29 Word.word)) + :: 32 Word.word)) + else if ((((((b__108 = (vec_of_bits [B0,B1,B0,B0,B0] :: 5 Word.word)))) \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + return () + else if ((((((b__108 = (vec_of_bits [B0,B1,B0,B0,B1] :: 5 Word.word)))) \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + write_reg CP0Count_ref ((subrange_vec_dec reg_val (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + else if ((((((b__108 = (vec_of_bits [B0,B1,B0,B1,B0] :: 5 Word.word)))) \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + (set_TLBEntryHiReg_R TLBEntryHi_ref + ((subrange_vec_dec reg_val (( 63 :: int)::ii) (( 62 :: int)::ii) :: 2 Word.word)) \<then> + set_TLBEntryHiReg_VPN2 TLBEntryHi_ref + ((subrange_vec_dec reg_val (( 39 :: int)::ii) (( 13 :: int)::ii) :: 27 Word.word))) \<then> + set_TLBEntryHiReg_ASID TLBEntryHi_ref + ((subrange_vec_dec reg_val (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word)) + else if ((((((b__108 = (vec_of_bits [B0,B1,B0,B1,B1] :: 5 Word.word)))) \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + (write_reg CP0Compare_ref ((subrange_vec_dec reg_val (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) \<then> + read_reg CP0Cause_ref) \<bind> (\<lambda> (w__0 :: CauseReg) . + set_CauseReg_IP CP0Cause_ref + ((and_vec ((get_CauseReg_IP w__0 :: 8 Word.word)) + (vec_of_bits [B0,B1,B1,B1,B1,B1,B1,B1] :: 8 Word.word) + :: 8 Word.word))) + else if ((((((b__108 = (vec_of_bits [B0,B1,B1,B0,B0] :: 5 Word.word)))) \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + ((((((((set_StatusReg_CU CP0Status_ref ((subrange_vec_dec reg_val (( 31 :: int)::ii) (( 28 :: int)::ii) :: 4 Word.word)) \<then> + set_StatusReg_BEV CP0Status_ref + ((cast_unit_vec0 ((access_vec_dec reg_val (( 22 :: int)::ii))) :: 1 Word.word))) \<then> + set_StatusReg_IM CP0Status_ref ((subrange_vec_dec reg_val (( 15 :: int)::ii) (( 8 :: int)::ii) :: 8 Word.word))) \<then> + set_StatusReg_KX CP0Status_ref + ((cast_unit_vec0 ((access_vec_dec reg_val (( 7 :: int)::ii))) :: 1 Word.word))) \<then> + set_StatusReg_SX CP0Status_ref + ((cast_unit_vec0 ((access_vec_dec reg_val (( 6 :: int)::ii))) :: 1 Word.word))) \<then> + set_StatusReg_UX CP0Status_ref + ((cast_unit_vec0 ((access_vec_dec reg_val (( 5 :: int)::ii))) :: 1 Word.word))) \<then> + set_StatusReg_KSU CP0Status_ref ((subrange_vec_dec reg_val (( 4 :: int)::ii) (( 3 :: int)::ii) :: 2 Word.word))) \<then> + set_StatusReg_ERL CP0Status_ref + ((cast_unit_vec0 ((access_vec_dec reg_val (( 2 :: int)::ii))) :: 1 Word.word))) \<then> + set_StatusReg_EXL CP0Status_ref + ((cast_unit_vec0 ((access_vec_dec reg_val (( 1 :: int)::ii))) :: 1 Word.word))) \<then> + set_StatusReg_IE CP0Status_ref + ((cast_unit_vec0 ((access_vec_dec reg_val (( 0 :: int)::ii))) :: 1 Word.word)) + else if ((((((b__108 = (vec_of_bits [B0,B1,B1,B0,B1] :: 5 Word.word)))) \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + (set_CauseReg_IV CP0Cause_ref + ((cast_unit_vec0 ((access_vec_dec reg_val (( 23 :: int)::ii))) :: 1 Word.word)) \<then> + read_reg CP0Cause_ref) \<bind> (\<lambda> (w__1 :: CauseReg) . + (let ip = ((get_CauseReg_IP w__1 :: 8 Word.word)) in + set_CauseReg_IP CP0Cause_ref + ((concat_vec ((subrange_vec_dec ip (( 7 :: int)::ii) (( 2 :: int)::ii) :: 6 Word.word)) + ((subrange_vec_dec reg_val (( 9 :: int)::ii) (( 8 :: int)::ii) :: 2 Word.word)) + :: 8 Word.word)))) + else if ((((((b__108 = (vec_of_bits [B0,B1,B1,B1,B0] :: 5 Word.word)))) \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + write_reg CP0EPC_ref reg_val + else if ((((((b__108 = (vec_of_bits [B1,B0,B0,B0,B0] :: 5 Word.word)))) \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + write_reg CP0ConfigK0_ref ((subrange_vec_dec reg_val (( 2 :: int)::ii) (( 0 :: int)::ii) :: 3 Word.word)) + else if ((((((b__108 = (vec_of_bits [B1,B0,B1,B0,B0] :: 5 Word.word)))) \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + set_XContextReg_XPTEBase TLBXContext_ref + ((subrange_vec_dec reg_val (( 63 :: int)::ii) (( 33 :: int)::ii) :: 31 Word.word)) + else if ((((((b__108 = (vec_of_bits [B1,B1,B1,B1,B0] :: 5 Word.word)))) \<and> (((b__109 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + write_reg CP0ErrorEPC_ref reg_val + else SignalException ResI + )))" (*val execute_MSUBU : mword ty5 -> mword ty5 -> M unit*) @@ -6085,7 +6108,7 @@ definition execute_MSUBU :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> rtVal . (if (((((NotWordVal rsVal)) \<or> ((NotWordVal rtVal))))) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) else return ((mult_vec ((subrange_vec_dec rsVal (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) ((subrange_vec_dec rtVal (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) @@ -6100,10 +6123,12 @@ definition execute_MSUBU :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro :: 64 Word.word)) in write_reg HI_ref - ((sign_extend1 (( 64 :: int)::ii) ((subrange_vec_dec result (( 63 :: int)::ii) (( 32 :: int)::ii) :: 32 Word.word)) :: 64 Word.word)) \<then> + ((mips_sign_extend (( 64 :: int)::ii) ((subrange_vec_dec result (( 63 :: int)::ii) (( 32 :: int)::ii) :: 32 Word.word)) + :: 64 Word.word)) \<then> write_reg LO_ref - ((sign_extend1 (( 64 :: int)::ii) ((subrange_vec_dec result (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 64 Word.word)))))))))" + ((mips_sign_extend (( 64 :: int)::ii) ((subrange_vec_dec result (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + :: 64 Word.word)))))))))" (*val execute_MSUB : mword ty5 -> mword ty5 -> M unit*) @@ -6114,7 +6139,7 @@ definition execute_MSUB :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> rtVal . (if (((((NotWordVal rsVal)) \<or> ((NotWordVal rtVal))))) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) else return ((mults_vec ((subrange_vec_dec rsVal (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) ((subrange_vec_dec rtVal (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) @@ -6129,10 +6154,12 @@ definition execute_MSUB :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow :: 64 Word.word)) in write_reg HI_ref - ((sign_extend1 (( 64 :: int)::ii) ((subrange_vec_dec result (( 63 :: int)::ii) (( 32 :: int)::ii) :: 32 Word.word)) :: 64 Word.word)) \<then> + ((mips_sign_extend (( 64 :: int)::ii) ((subrange_vec_dec result (( 63 :: int)::ii) (( 32 :: int)::ii) :: 32 Word.word)) + :: 64 Word.word)) \<then> write_reg LO_ref - ((sign_extend1 (( 64 :: int)::ii) ((subrange_vec_dec result (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 64 Word.word)))))))))" + ((mips_sign_extend (( 64 :: int)::ii) ((subrange_vec_dec result (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + :: 64 Word.word)))))))))" (*val execute_MOVZ : mword ty5 -> mword ty5 -> mword ty5 -> M unit*) @@ -6179,483 +6206,184 @@ definition execute_MFHI :: "(5)Word.word \<Rightarrow>((register_value),(unit), definition execute_MFC0 :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(3)Word.word \<Rightarrow> bool \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_MFC0 rt rd sel double = ( - (checkCP0Access () \<then> - (case (rd, sel) of - (b__48, b__49) => - if ((((((b__48 = (vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word)))) \<and> - (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - (read_reg TLBIndex_ref :: ( 6 Word.word) M) \<bind> - (\<lambda> (w__0 :: TLBIndexT) . - (let (idx :: 31 bits) = ((zero_extend1 (( 31 :: int):: ii) w__0 :: 31 Word.word)) in - (read_reg TLBProbe_ref :: ( 1 Word.word) M) \<bind> - (\<lambda> (w__1 :: 1 bits) . - return - ((concat_vec - (vec_of_bits - [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] :: 32 Word.word) - ((concat_vec w__1 idx :: 32 Word.word)) :: 64 Word.word))))) - else - if ((((((b__48 = (vec_of_bits [B0,B0,B0,B0,B1] :: 5 Word.word)))) \<and> - (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - (read_reg TLBRandom_ref :: ( 6 Word.word) M) \<bind> - (\<lambda> (w__2 :: TLBIndexT) . - return ((zero_extend1 (( 64 :: int):: ii) w__2 :: 64 Word.word))) - else - if ((((((b__48 = (vec_of_bits [B0,B0,B0,B1,B0] :: 5 Word.word)))) - \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - read_reg TLBEntryLo0_ref \<bind> - (\<lambda> (w__3 :: TLBEntryLoReg) . - return ((get_TLBEntryLoReg w__3 :: 64 Word.word))) else - if ((((((b__48 = (vec_of_bits [B0,B0,B0,B1,B1] :: 5 Word.word)))) - \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - read_reg TLBEntryLo1_ref \<bind> - (\<lambda> (w__4 :: TLBEntryLoReg) . - return ((get_TLBEntryLoReg w__4 :: 64 Word.word))) else - if ((((((b__48 = (vec_of_bits [B0,B0,B1,B0,B0] :: 5 Word.word)))) - \<and> - (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - read_reg TLBContext_ref \<bind> - (\<lambda> (w__5 :: ContextReg) . - return ((get_ContextReg w__5 :: 64 Word.word))) else - if ((((((b__48 = (vec_of_bits [B0,B0,B1,B0,B0] :: 5 Word.word)))) - \<and> - (((b__49 = (vec_of_bits [B0,B1,B0] :: 3 Word.word))))))) then - (read_reg CP0UserLocal_ref :: ( 64 Word.word) M) else - if ((((((b__48 = (vec_of_bits [B0,B0,B1,B0,B1] :: 5 Word.word)))) - \<and> - (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - (read_reg TLBPageMask_ref :: ( 16 Word.word) M) \<bind> - (\<lambda> (w__7 :: 16 bits) . - return - ((zero_extend1 (( 64 :: int):: ii) - ((concat_vec w__7 - (vec_of_bits - [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] :: 12 Word.word) - :: 28 Word.word)) :: 64 Word.word))) else - if ((((((b__48 = - (vec_of_bits [B0,B0,B1,B1,B0] :: 5 Word.word)))) - \<and> - (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - (read_reg TLBWired_ref :: ( 6 Word.word) M) \<bind> - (\<lambda> (w__8 :: TLBIndexT) . - return - ((zero_extend1 (( 64 :: int):: ii) w__8 :: 64 Word.word))) - else - if ((((((b__48 = - (vec_of_bits [B0,B0,B1,B1,B1] :: 5 Word.word)))) - \<and> - (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - (read_reg CP0HWREna_ref :: ( 32 Word.word) M) \<bind> - (\<lambda> (w__9 :: 32 bits) . - return - ((zero_extend1 (( 64 :: int):: ii) w__9 :: 64 Word.word))) - else - if ((((((b__48 = - (vec_of_bits [B0,B1,B0,B0,B0] :: 5 Word.word)))) - \<and> - (((b__49 = - (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - (read_reg CP0BadVAddr_ref :: ( 64 Word.word) M) else - if ((((((b__48 = - (vec_of_bits [B0,B1,B0,B0,B0] :: 5 Word.word)))) - \<and> - (((b__49 = - (vec_of_bits [B0,B0,B1] :: 3 Word.word))))))) then - return - ((zero_extend1 (( 64 :: int):: ii) - (vec_of_bits [B0] :: 1 Word.word) :: 64 Word.word)) - else - if ((((((b__48 = - (vec_of_bits [B0,B1,B0,B0,B1] :: 5 Word.word)))) - \<and> - (((b__49 = - (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - (read_reg CP0Count_ref :: ( 32 Word.word) M) - \<bind> - (\<lambda> (w__11 :: 32 bits) . - return - ((zero_extend1 (( 64 :: int):: ii) w__11 :: 64 Word.word))) - else - if ((((((b__48 = - (vec_of_bits [B0,B1,B0,B1,B0] :: 5 Word.word)))) - \<and> - (((b__49 = - (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - read_reg TLBEntryHi_ref \<bind> - (\<lambda> (w__12 :: TLBEntryHiReg) . - return - ((get_TLBEntryHiReg w__12 :: 64 Word.word))) - else - if ((((((b__48 = - (vec_of_bits [B0,B1,B0,B1,B1] :: 5 Word.word)))) - \<and> - (((b__49 = - (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - (read_reg CP0Compare_ref :: ( 32 Word.word) M) - \<bind> - (\<lambda> (w__13 :: 32 bits) . - return - ((zero_extend1 (( 64 :: int):: ii) w__13 :: 64 Word.word))) - else - if ((((((b__48 = - (vec_of_bits [B0,B1,B1,B0,B0] :: 5 Word.word)))) - \<and> - (((b__49 = - (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - read_reg CP0Status_ref \<bind> - (\<lambda> (w__14 :: StatusReg) . - return - ((zero_extend1 (( 64 :: int):: ii) - ((get_StatusReg w__14 :: 32 Word.word)) :: 64 Word.word))) - else - if ((((((b__48 = - (vec_of_bits [B0,B1,B1,B0,B1] :: 5 Word.word)))) - \<and> - (((b__49 = - (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - read_reg CP0Cause_ref \<bind> - (\<lambda> (w__15 :: CauseReg) . - return - ((zero_extend1 (( 64 :: int):: ii) - ((get_CauseReg w__15 :: 32 Word.word)) :: 64 Word.word))) - else - if ((((((b__48 = - (vec_of_bits [B0,B1,B1,B1,B0] :: 5 Word.word)))) - \<and> - (((b__49 = - (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - (read_reg CP0EPC_ref :: ( 64 Word.word) M) - else - if ((((((b__48 = - (vec_of_bits [B0,B1,B1,B1,B1] :: 5 Word.word)))) - \<and> - (((b__49 = - (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then - return - ((zero_extend1 (( 64 :: int):: ii) - (vec_of_bits - [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B1, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] - :: 32 Word.word) :: 64 Word.word)) - else - if ((((((b__48 = - (vec_of_bits - [B0,B1,B1,B1,B1] :: 5 Word.word)))) - \<and> - (((b__49 = - (vec_of_bits [B1,B1,B0] :: 3 Word.word))))))) then - return - ((zero_extend1 (( 64 :: int):: ii) - (vec_of_bits [B0] :: 1 Word.word) :: 64 Word.word)) - else - if ((((((b__48 = - (vec_of_bits - [B0,B1,B1,B1,B1] :: 5 Word.word)))) - \<and> - (((b__49 = - (vec_of_bits [B1,B1,B1] :: 3 Word.word))))))) then - return - ((zero_extend1 - (( 64 :: int):: ii) - (vec_of_bits [B0] :: 1 Word.word) :: 64 Word.word)) - else - if ((((((b__48 = - (vec_of_bits - [B1,B0,B0,B0,B0] :: 5 Word.word)))) - \<and> - (((b__49 = - (vec_of_bits - [B0,B0,B0] :: 3 Word.word))))))) then - return - ((zero_extend1 - (( 64 :: int):: ii) - ((concat_vec - (vec_of_bits [B1] :: 1 Word.word) - ((concat_vec - (vec_of_bits - [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] :: 15 Word.word) - ((concat_vec - (vec_of_bits - [B1] :: 1 Word.word) - ((concat_vec - (vec_of_bits - [B1,B0] :: 2 Word.word) - ((concat_vec - ( - vec_of_bits - [B0,B0,B0] :: 3 Word.word) - ( - ( - concat_vec - ( - vec_of_bits - [B0,B0,B1] :: 3 Word.word) - ( - ( - concat_vec - ( - vec_of_bits - [B0,B0,B0,B0] :: 4 Word.word) - ( - vec_of_bits - [B0,B0,B0] :: 3 Word.word) - :: 7 Word.word)) - :: 10 Word.word)) - :: 13 Word.word)) - :: 15 Word.word)) - :: 16 Word.word)) - :: 31 Word.word)) - :: 32 Word.word)) - :: 64 Word.word)) else - if ((((((b__48 = - (vec_of_bits - [B1,B0,B0,B0,B0] :: 5 Word.word)))) - \<and> - (((b__49 = - (vec_of_bits - [B0,B0,B1] :: 3 Word.word))))))) then - return - ((zero_extend1 - (( 64 :: int):: ii) - ((concat_vec - (vec_of_bits [B1] :: 1 Word.word) - ((concat_vec - TLBIndexMax - ((concat_vec - (vec_of_bits - [B0,B0,B0] :: 3 Word.word) - ((concat_vec - ( - vec_of_bits - [B0,B0,B0] :: 3 Word.word) - ( - ( - concat_vec - ( - vec_of_bits - [B0,B0,B0] :: 3 Word.word) - ( - ( - concat_vec - ( - vec_of_bits - [B0,B0,B0] :: 3 Word.word) - ( - ( - concat_vec - ( - vec_of_bits - [B0,B0,B0] :: 3 Word.word) - ( - ( - concat_vec - ( - vec_of_bits - [B0,B0,B0] :: 3 Word.word) - ( - ( - concat_vec - ( - ( - bool_to_bits - have_cp2 :: 1 Word.word)) - ( - ( - concat_vec - ( - vec_of_bits - [B0] :: 1 Word.word) - ( - ( - concat_vec - ( - vec_of_bits - [B0] :: 1 Word.word) - ( - ( - concat_vec - ( - vec_of_bits - [B0] :: 1 Word.word) - ( - ( - concat_vec - ( - vec_of_bits - [B0] - :: 1 Word.word) - ( - ( - concat_vec - ( - vec_of_bits - [B0] - :: 1 Word.word) - ( - vec_of_bits - [B0] - :: 1 Word.word) - :: 2 Word.word)) - :: 3 Word.word)) - :: 4 Word.word)) - :: 5 Word.word)) - :: 6 Word.word)) - :: 7 Word.word)) - :: 10 Word.word)) - :: 13 Word.word)) - :: 16 Word.word)) - :: 19 Word.word)) - :: 22 Word.word)) - :: 25 Word.word)) - :: 31 Word.word)) - :: 32 Word.word)) - :: 64 Word.word)) else - if ((((((b__48 = - (vec_of_bits - [B1,B0,B0,B0,B0] :: 5 Word.word)))) - \<and> - (((b__49 = - (vec_of_bits - [B0,B1,B0] :: 3 Word.word))))))) then - return - ((zero_extend1 - (( 64 :: int):: ii) - ((concat_vec - (vec_of_bits [B1] :: 1 Word.word) - ((concat_vec - (vec_of_bits - [B0,B0,B0] :: 3 Word.word) - ((concat_vec - (vec_of_bits - [B0,B0,B0,B0] :: 4 Word.word) - ((concat_vec - ( - vec_of_bits - [B0,B0,B0,B0] :: 4 Word.word) - ( - ( - concat_vec - ( - vec_of_bits - [B0,B0,B0,B0] :: 4 Word.word) - ( - ( - concat_vec - ( - vec_of_bits - [B0,B0,B0,B0] :: 4 Word.word) - ( - ( - concat_vec - ( - vec_of_bits - [B0,B0,B0,B0] :: 4 Word.word) - ( - ( - concat_vec - ( - vec_of_bits - [B0,B0,B0,B0] :: 4 Word.word) - ( - vec_of_bits - [B0,B0,B0,B0] :: 4 Word.word) - :: 8 Word.word)) - :: 12 Word.word)) - :: 16 Word.word)) - :: 20 Word.word)) - :: 24 Word.word)) - :: 28 Word.word)) - :: 31 Word.word)) - :: 32 Word.word)) - :: 64 Word.word)) else - if ((((((b__48 = - (vec_of_bits - [B1,B0,B0,B0,B0] :: 5 Word.word)))) - \<and> - (((b__49 = - (vec_of_bits - [B0,B1,B1] :: 3 Word.word))))))) then - return - (vec_of_bits - [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B1,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] - :: 64 Word.word) else - if ((((((b__48 = - (vec_of_bits - [B1,B0,B0,B0,B0] :: 5 Word.word)))) - \<and> - (((b__49 = - (vec_of_bits - [B1,B0,B1] :: 3 Word.word))))))) then - return - (vec_of_bits - [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] - :: 64 Word.word) else - if ((((((b__48 = - (vec_of_bits - [B1,B0,B0,B0,B1] :: 5 Word.word)))) - \<and> - (((b__49 = - (vec_of_bits - [B0,B0,B0] :: 3 Word.word))))))) then - (read_reg CP0LLAddr_ref :: ( 64 Word.word) M) - else - if ((((((b__48 = - (vec_of_bits - [B1,B0,B0,B1,B0] :: 5 Word.word)))) - \<and> - (((b__49 = - (vec_of_bits - [B0,B0,B0] :: 3 Word.word))))))) then - return - ((zero_extend1 - (( 64 :: int):: ii) - (vec_of_bits - [B0] :: 1 Word.word) :: 64 Word.word)) - else - if ((((((b__48 = - (vec_of_bits - [B1,B0,B0,B1,B1] :: 5 Word.word)))) - \<and> - (((b__49 = - ( - vec_of_bits - [B0,B0,B0] :: 3 Word.word))))))) then - return - ((zero_extend1 - (( 64 :: int):: ii) - (vec_of_bits - [B0] :: 1 Word.word) :: 64 Word.word)) - else - if ((((((b__48 = - ( - vec_of_bits - [B1,B0,B1,B0,B0] :: 5 Word.word)))) - \<and> - ((( - b__49 = - ( - vec_of_bits - [B0,B0,B0] :: 3 Word.word))))))) then - read_reg - TLBXContext_ref - \<bind> - (\<lambda> (w__18 :: XContextReg) . - return - ((get_XContextReg - w__18 :: 64 Word.word))) - else - (read_reg - CP0ErrorEPC_ref :: ( 64 Word.word) M) - )) \<bind> (\<lambda> (result :: 64 bits) . + (checkCP0Access () \<then> + (case (rd, sel) of + (b__48, b__49) => + if ((((((b__48 = (vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + (read_reg TLBIndex_ref :: ( 6 Word.word) M) \<bind> (\<lambda> (w__0 :: TLBIndexT) . + (let (idx :: 31 bits) = ((mips_zero_extend (( 31 :: int)::ii) w__0 :: 31 Word.word)) in + (read_reg TLBProbe_ref :: ( 1 Word.word) M) \<bind> (\<lambda> (w__1 :: 1 bits) . + return ((concat_vec + (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 32 Word.word) ((concat_vec w__1 idx :: 32 Word.word)) + :: 64 Word.word))))) + else if ((((((b__48 = (vec_of_bits [B0,B0,B0,B0,B1] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + (read_reg TLBRandom_ref :: ( 6 Word.word) M) \<bind> (\<lambda> (w__2 :: TLBIndexT) . + return ((mips_zero_extend (( 64 :: int)::ii) w__2 :: 64 Word.word))) + else if ((((((b__48 = (vec_of_bits [B0,B0,B0,B1,B0] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + read_reg TLBEntryLo0_ref \<bind> (\<lambda> (w__3 :: TLBEntryLoReg) . + return ((get_TLBEntryLoReg_bits w__3 :: 64 Word.word))) + else if ((((((b__48 = (vec_of_bits [B0,B0,B0,B1,B1] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + read_reg TLBEntryLo1_ref \<bind> (\<lambda> (w__4 :: TLBEntryLoReg) . + return ((get_TLBEntryLoReg_bits w__4 :: 64 Word.word))) + else if ((((((b__48 = (vec_of_bits [B0,B0,B1,B0,B0] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + read_reg TLBContext_ref \<bind> (\<lambda> (w__5 :: ContextReg) . + return ((get_ContextReg_bits w__5 :: 64 Word.word))) + else if ((((((b__48 = (vec_of_bits [B0,B0,B1,B0,B0] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B1,B0] :: 3 Word.word))))))) then + (read_reg CP0UserLocal_ref :: ( 64 Word.word) M) + else if ((((((b__48 = (vec_of_bits [B0,B0,B1,B0,B1] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + (read_reg TLBPageMask_ref :: ( 16 Word.word) M) \<bind> (\<lambda> (w__7 :: 16 bits) . + return ((mips_zero_extend (( 64 :: int)::ii) + ((concat_vec w__7 + (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] :: 12 Word.word) + :: 28 Word.word)) + :: 64 Word.word))) + else if ((((((b__48 = (vec_of_bits [B0,B0,B1,B1,B0] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + (read_reg TLBWired_ref :: ( 6 Word.word) M) \<bind> (\<lambda> (w__8 :: TLBIndexT) . + return ((mips_zero_extend (( 64 :: int)::ii) w__8 :: 64 Word.word))) + else if ((((((b__48 = (vec_of_bits [B0,B0,B1,B1,B1] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + (read_reg CP0HWREna_ref :: ( 32 Word.word) M) \<bind> (\<lambda> (w__9 :: 32 bits) . + return ((mips_zero_extend (( 64 :: int)::ii) w__9 :: 64 Word.word))) + else if ((((((b__48 = (vec_of_bits [B0,B1,B0,B0,B0] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + (read_reg CP0BadVAddr_ref :: ( 64 Word.word) M) + else if ((((((b__48 = (vec_of_bits [B0,B1,B0,B0,B0] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B1] :: 3 Word.word))))))) then + return ((mips_zero_extend (( 64 :: int)::ii) (vec_of_bits [B0] :: 1 Word.word) :: 64 Word.word)) + else if ((((((b__48 = (vec_of_bits [B0,B1,B0,B0,B1] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + (read_reg CP0Count_ref :: ( 32 Word.word) M) \<bind> (\<lambda> (w__11 :: 32 bits) . + return ((mips_zero_extend (( 64 :: int)::ii) w__11 :: 64 Word.word))) + else if ((((((b__48 = (vec_of_bits [B0,B1,B0,B1,B0] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + read_reg TLBEntryHi_ref \<bind> (\<lambda> (w__12 :: TLBEntryHiReg) . + return ((get_TLBEntryHiReg_bits w__12 :: 64 Word.word))) + else if ((((((b__48 = (vec_of_bits [B0,B1,B0,B1,B1] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + (read_reg CP0Compare_ref :: ( 32 Word.word) M) \<bind> (\<lambda> (w__13 :: 32 bits) . + return ((mips_zero_extend (( 64 :: int)::ii) w__13 :: 64 Word.word))) + else if ((((((b__48 = (vec_of_bits [B0,B1,B1,B0,B0] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + read_reg CP0Status_ref \<bind> (\<lambda> (w__14 :: StatusReg) . + return ((mips_zero_extend (( 64 :: int)::ii) ((get_StatusReg_bits w__14 :: 32 Word.word)) :: 64 Word.word))) + else if ((((((b__48 = (vec_of_bits [B0,B1,B1,B0,B1] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + read_reg CP0Cause_ref \<bind> (\<lambda> (w__15 :: CauseReg) . + return ((mips_zero_extend (( 64 :: int)::ii) ((get_CauseReg_bits w__15 :: 32 Word.word)) :: 64 Word.word))) + else if ((((((b__48 = (vec_of_bits [B0,B1,B1,B1,B0] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + (read_reg CP0EPC_ref :: ( 64 Word.word) M) + else if ((((((b__48 = (vec_of_bits [B0,B1,B1,B1,B1] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + return ((mips_zero_extend (( 64 :: int)::ii) + (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B1, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 32 Word.word) + :: 64 Word.word)) + else if ((((((b__48 = (vec_of_bits [B0,B1,B1,B1,B1] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B1,B1,B0] :: 3 Word.word))))))) then + return ((mips_zero_extend (( 64 :: int)::ii) (vec_of_bits [B0] :: 1 Word.word) :: 64 Word.word)) + else if ((((((b__48 = (vec_of_bits [B0,B1,B1,B1,B1] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B1,B1,B1] :: 3 Word.word))))))) then + return ((mips_zero_extend (( 64 :: int)::ii) (vec_of_bits [B0] :: 1 Word.word) :: 64 Word.word)) + else if ((((((b__48 = (vec_of_bits [B1,B0,B0,B0,B0] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + (read_reg CP0ConfigK0_ref :: ( 3 Word.word) M) \<bind> (\<lambda> (w__17 :: 3 bits) . + return ((mips_zero_extend (( 64 :: int)::ii) + ((concat_vec (vec_of_bits [B1] :: 1 Word.word) + ((concat_vec + (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] :: 15 Word.word) + ((concat_vec (vec_of_bits [B1] :: 1 Word.word) + ((concat_vec (vec_of_bits [B1,B0] :: 2 Word.word) + ((concat_vec (vec_of_bits [B0,B0,B0] :: 3 Word.word) + ((concat_vec (vec_of_bits [B0,B0,B1] :: 3 Word.word) + ((concat_vec (vec_of_bits [B0,B0,B0,B0] :: 4 Word.word) + w__17 + :: 7 Word.word)) + :: 10 Word.word)) + :: 13 Word.word)) + :: 15 Word.word)) + :: 16 Word.word)) + :: 31 Word.word)) + :: 32 Word.word)) + :: 64 Word.word))) + else if ((((((b__48 = (vec_of_bits [B1,B0,B0,B0,B0] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B1] :: 3 Word.word))))))) then + return ((mips_zero_extend (( 64 :: int)::ii) + ((concat_vec (vec_of_bits [B1] :: 1 Word.word) + ((concat_vec TLBIndexMax + ((concat_vec (vec_of_bits [B0,B0,B0] :: 3 Word.word) + ((concat_vec (vec_of_bits [B0,B0,B0] :: 3 Word.word) + ((concat_vec (vec_of_bits [B0,B0,B0] :: 3 Word.word) + ((concat_vec (vec_of_bits [B0,B0,B0] :: 3 Word.word) + ((concat_vec (vec_of_bits [B0,B0,B0] :: 3 Word.word) + ((concat_vec (vec_of_bits [B0,B0,B0] :: 3 Word.word) + ((concat_vec + ((bool_to_bits have_cp2 :: 1 Word.word)) + ((concat_vec (vec_of_bits [B0] :: 1 Word.word) + ((concat_vec + (vec_of_bits [B0] :: 1 Word.word) + ((concat_vec + (vec_of_bits [B0] :: 1 Word.word) + ((concat_vec + (vec_of_bits [B0] + :: 1 Word.word) + ((concat_vec + (vec_of_bits [B0] + :: 1 Word.word) + (vec_of_bits [B0] + :: 1 Word.word) + :: 2 Word.word)) + :: 3 Word.word)) + :: 4 Word.word)) + :: 5 Word.word)) + :: 6 Word.word)) + :: 7 Word.word)) + :: 10 Word.word)) + :: 13 Word.word)) + :: 16 Word.word)) + :: 19 Word.word)) + :: 22 Word.word)) + :: 25 Word.word)) + :: 31 Word.word)) + :: 32 Word.word)) + :: 64 Word.word)) + else if ((((((b__48 = (vec_of_bits [B1,B0,B0,B0,B0] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B1,B0] :: 3 Word.word))))))) then + return ((mips_zero_extend (( 64 :: int)::ii) + ((concat_vec (vec_of_bits [B1] :: 1 Word.word) + ((concat_vec (vec_of_bits [B0,B0,B0] :: 3 Word.word) + ((concat_vec (vec_of_bits [B0,B0,B0,B0] :: 4 Word.word) + ((concat_vec (vec_of_bits [B0,B0,B0,B0] :: 4 Word.word) + ((concat_vec (vec_of_bits [B0,B0,B0,B0] :: 4 Word.word) + ((concat_vec (vec_of_bits [B0,B0,B0,B0] :: 4 Word.word) + ((concat_vec (vec_of_bits [B0,B0,B0,B0] :: 4 Word.word) + ((concat_vec (vec_of_bits [B0,B0,B0,B0] :: 4 Word.word) + (vec_of_bits [B0,B0,B0,B0] :: 4 Word.word) + :: 8 Word.word)) + :: 12 Word.word)) + :: 16 Word.word)) + :: 20 Word.word)) + :: 24 Word.word)) + :: 28 Word.word)) + :: 31 Word.word)) + :: 32 Word.word)) + :: 64 Word.word)) + else if ((((((b__48 = (vec_of_bits [B1,B0,B0,B0,B0] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B1,B1] :: 3 Word.word))))))) then + return (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B1,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word) + else if ((((((b__48 = (vec_of_bits [B1,B0,B0,B0,B0] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B1,B0,B1] :: 3 Word.word))))))) then + return (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word) + else if ((((((b__48 = (vec_of_bits [B1,B0,B0,B0,B1] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + (read_reg CP0LLAddr_ref :: ( 64 Word.word) M) + else if ((((((b__48 = (vec_of_bits [B1,B0,B0,B1,B0] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + return ((mips_zero_extend (( 64 :: int)::ii) (vec_of_bits [B0] :: 1 Word.word) :: 64 Word.word)) + else if ((((((b__48 = (vec_of_bits [B1,B0,B0,B1,B1] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + return ((mips_zero_extend (( 64 :: int)::ii) (vec_of_bits [B0] :: 1 Word.word) :: 64 Word.word)) + else if ((((((b__48 = (vec_of_bits [B1,B0,B1,B0,B0] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + read_reg TLBXContext_ref \<bind> (\<lambda> (w__19 :: XContextReg) . + return ((get_XContextReg_bits w__19 :: 64 Word.word))) + else if ((((((b__48 = (vec_of_bits [B1,B1,B1,B1,B0] :: 5 Word.word)))) \<and> (((b__49 = (vec_of_bits [B0,B0,B0] :: 3 Word.word))))))) then + (read_reg CP0ErrorEPC_ref :: ( 64 Word.word) M) + else (SignalException ResI :: ( 64 Word.word) M) + )) \<bind> (\<lambda> (result :: 64 bits) . wGPR rt (if double then result else - (sign_extend1 (( 64 :: int)::ii) ((subrange_vec_dec result (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 64 Word.word))))" + (mips_sign_extend (( 64 :: int)::ii) ((subrange_vec_dec result (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + :: 64 Word.word))))" (*val execute_MADDU : mword ty5 -> mword ty5 -> M unit*) @@ -6666,7 +6394,7 @@ definition execute_MADDU :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> rtVal . (if (((((NotWordVal rsVal)) \<or> ((NotWordVal rtVal))))) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) else return ((mult_vec ((subrange_vec_dec rsVal (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) ((subrange_vec_dec rtVal (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) @@ -6681,10 +6409,12 @@ definition execute_MADDU :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro :: 64 Word.word)) in write_reg HI_ref - ((sign_extend1 (( 64 :: int)::ii) ((subrange_vec_dec result (( 63 :: int)::ii) (( 32 :: int)::ii) :: 32 Word.word)) :: 64 Word.word)) \<then> + ((mips_sign_extend (( 64 :: int)::ii) ((subrange_vec_dec result (( 63 :: int)::ii) (( 32 :: int)::ii) :: 32 Word.word)) + :: 64 Word.word)) \<then> write_reg LO_ref - ((sign_extend1 (( 64 :: int)::ii) ((subrange_vec_dec result (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 64 Word.word)))))))))" + ((mips_sign_extend (( 64 :: int)::ii) ((subrange_vec_dec result (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + :: 64 Word.word)))))))))" (*val execute_MADD : mword ty5 -> mword ty5 -> M unit*) @@ -6695,7 +6425,7 @@ definition execute_MADD :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> rtVal . (if (((((NotWordVal rsVal)) \<or> ((NotWordVal rtVal))))) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) else return ((mults_vec ((subrange_vec_dec rsVal (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) ((subrange_vec_dec rtVal (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) @@ -6710,10 +6440,12 @@ definition execute_MADD :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow :: 64 Word.word)) in write_reg HI_ref - ((sign_extend1 (( 64 :: int)::ii) ((subrange_vec_dec result (( 63 :: int)::ii) (( 32 :: int)::ii) :: 32 Word.word)) :: 64 Word.word)) \<then> + ((mips_sign_extend (( 64 :: int)::ii) ((subrange_vec_dec result (( 63 :: int)::ii) (( 32 :: int)::ii) :: 32 Word.word)) + :: 64 Word.word)) \<then> write_reg LO_ref - ((sign_extend1 (( 64 :: int)::ii) ((subrange_vec_dec result (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 64 Word.word)))))))))" + ((mips_sign_extend (( 64 :: int)::ii) ((subrange_vec_dec result (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + :: 64 Word.word)))))))))" (*val execute_Load : WordType -> bool -> bool -> mword ty5 -> mword ty5 -> mword ty16 -> M unit*) @@ -6721,8 +6453,8 @@ definition execute_MADD :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow definition execute_Load :: " WordType \<Rightarrow> bool \<Rightarrow> bool \<Rightarrow>(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_Load width sign linked base rt offset = ( (rGPR base :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - (addrWrapper ((add_vec ((sign_extend1 (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) LoadData - width + (addrWrapper ((add_vec ((mips_sign_extend (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) + LoadData width :: ( 64 Word.word) M) \<bind> (\<lambda> (vAddr :: 64 bits) . if ((\<not> ((isAddressAligned vAddr width)))) then SignalExceptionBadAddr AdEL vAddr else @@ -6731,33 +6463,28 @@ definition execute_Load :: " WordType \<Rightarrow> bool \<Rightarrow> bool \<R (write_reg CP0LLBit_ref (vec_of_bits [B1] :: 1 Word.word) \<then> write_reg CP0LLAddr_ref pAddr) \<then> (case width of - B => - (MEMr_reserve_wrapper pAddr (( 1 :: int)::ii) :: ( 8 Word.word) M) \<bind> (\<lambda> (w__1 :: 8 Word.word) . + W => + (MEMr_reserve_wrapper pAddr (( 4 :: int)::ii) :: ( 32 Word.word) M) \<bind> (\<lambda> (w__1 :: 32 Word.word) . return ((extendLoad w__1 sign :: 64 Word.word))) - | H => - (MEMr_reserve_wrapper pAddr (( 2 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__2 :: 16 Word.word) . - return ((extendLoad w__2 sign :: 64 Word.word))) - | W => - (MEMr_reserve_wrapper pAddr (( 4 :: int)::ii) :: ( 32 Word.word) M) \<bind> (\<lambda> (w__3 :: 32 Word.word) . - return ((extendLoad w__3 sign :: 64 Word.word))) | D => - (MEMr_reserve_wrapper pAddr (( 8 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__4 :: 64 Word.word) . - return ((extendLoad w__4 sign :: 64 Word.word))) + (MEMr_reserve_wrapper pAddr (( 8 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__2 :: 64 Word.word) . + return ((extendLoad w__2 sign :: 64 Word.word))) + | _ => throw (Error_internal_error () ) ) else (case width of B => - (MEMr_wrapper pAddr (( 1 :: int)::ii) :: ( 8 Word.word) M) \<bind> (\<lambda> (w__6 :: 8 Word.word) . - return ((extendLoad w__6 sign :: 64 Word.word))) + (MEMr_wrapper (( 8 :: int)::ii) pAddr (( 1 :: int)::ii) :: ( 8 Word.word) M) \<bind> (\<lambda> (w__5 :: 8 Word.word) . + return ((extendLoad w__5 sign :: 64 Word.word))) | H => - (MEMr_wrapper pAddr (( 2 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__7 :: 16 Word.word) . - return ((extendLoad w__7 sign :: 64 Word.word))) + (MEMr_wrapper (( 16 :: int)::ii) pAddr (( 2 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__6 :: 16 Word.word) . + return ((extendLoad w__6 sign :: 64 Word.word))) | W => - (MEMr_wrapper pAddr (( 4 :: int)::ii) :: ( 32 Word.word) M) \<bind> (\<lambda> (w__8 :: 32 Word.word) . - return ((extendLoad w__8 sign :: 64 Word.word))) + (MEMr_wrapper (( 32 :: int)::ii) pAddr (( 4 :: int)::ii) :: ( 32 Word.word) M) \<bind> (\<lambda> (w__7 :: 32 Word.word) . + return ((extendLoad w__7 sign :: 64 Word.word))) | D => - (MEMr_wrapper pAddr (( 8 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__9 :: 64 Word.word) . - return ((extendLoad w__9 sign :: 64 Word.word))) + (MEMr_wrapper (( 64 :: int)::ii) pAddr (( 8 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__8 :: 64 Word.word) . + return ((extendLoad w__8 sign :: 64 Word.word))) )) \<bind> (\<lambda> (memResult :: 64 bits) . wGPR rt memResult)))))" @@ -6767,11 +6494,11 @@ definition execute_Load :: " WordType \<Rightarrow> bool \<Rightarrow> bool \<R definition execute_LWR :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_LWR base rt offset = ( (rGPR base :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - (addrWrapper ((add_vec ((sign_extend1 (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) LoadData - W + (addrWrapperUnaligned + ((add_vec ((mips_sign_extend (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) LoadData WR :: ( 64 Word.word) M) \<bind> (\<lambda> vAddr . (TLBTranslate vAddr LoadData :: ( 64 Word.word) M) \<bind> (\<lambda> pAddr . - (MEMr_wrapper + (MEMr_wrapper (( 32 :: int)::ii) ((concat_vec ((subrange_vec_dec pAddr (( 63 :: int)::ii) (( 2 :: int)::ii) :: 62 Word.word)) (vec_of_bits [B0,B0] :: 2 Word.word) :: 64 Word.word)) (( 4 :: int)::ii) @@ -6792,7 +6519,7 @@ definition execute_LWR :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> ((subrange_vec_dec mem_val (( 31 :: int)::ii) (( 8 :: int)::ii) :: 24 Word.word)) :: 32 Word.word) else mem_val) in - wGPR rt ((sign_extend1 (( 64 :: int)::ii) result :: 64 Word.word))))))))))" + wGPR rt ((mips_sign_extend (( 64 :: int)::ii) result :: 64 Word.word))))))))))" (*val execute_LWL : mword ty5 -> mword ty5 -> mword ty16 -> M unit*) @@ -6800,11 +6527,11 @@ definition execute_LWR :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> definition execute_LWL :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_LWL base rt offset = ( (rGPR base :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - (addrWrapper ((add_vec ((sign_extend1 (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) LoadData - W + (addrWrapperUnaligned + ((add_vec ((mips_sign_extend (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) LoadData WL :: ( 64 Word.word) M) \<bind> (\<lambda> vAddr . (TLBTranslate vAddr LoadData :: ( 64 Word.word) M) \<bind> (\<lambda> pAddr . - (MEMr_wrapper + (MEMr_wrapper (( 32 :: int)::ii) ((concat_vec ((subrange_vec_dec pAddr (( 63 :: int)::ii) (( 2 :: int)::ii) :: 62 Word.word)) (vec_of_bits [B0,B0] :: 2 Word.word) :: 64 Word.word)) (( 4 :: int)::ii) @@ -6825,7 +6552,7 @@ definition execute_LWL :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> (concat_vec ((subrange_vec_dec mem_val (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word)) ((subrange_vec_dec reg_val (( 23 :: int)::ii) (( 0 :: int)::ii) :: 24 Word.word)) :: 32 Word.word)) in - wGPR rt ((sign_extend1 (( 64 :: int)::ii) result :: 64 Word.word))))))))))" + wGPR rt ((mips_sign_extend (( 64 :: int)::ii) result :: 64 Word.word))))))))))" (*val execute_LUI : mword ty5 -> mword ty16 -> M unit*) @@ -6833,7 +6560,7 @@ definition execute_LWL :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> definition execute_LUI :: "(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_LUI rt imm = ( wGPR rt - ((sign_extend1 (( 64 :: int)::ii) + ((mips_sign_extend (( 64 :: int)::ii) ((concat_vec imm (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] :: 16 Word.word) :: 32 Word.word)) @@ -6845,11 +6572,11 @@ definition execute_LUI :: "(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow definition execute_LDR :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_LDR base rt offset = ( (rGPR base :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - (addrWrapper ((add_vec ((sign_extend1 (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) LoadData - D + (addrWrapperUnaligned + ((add_vec ((mips_sign_extend (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) LoadData DR :: ( 64 Word.word) M) \<bind> (\<lambda> vAddr . - (TLBTranslate vAddr StoreData :: ( 64 Word.word) M) \<bind> (\<lambda> pAddr . - (MEMr_wrapper + (TLBTranslate vAddr LoadData :: ( 64 Word.word) M) \<bind> (\<lambda> pAddr . + (MEMr_wrapper (( 64 :: int)::ii) ((concat_vec ((subrange_vec_dec pAddr (( 63 :: int)::ii) (( 3 :: int)::ii) :: 61 Word.word)) (vec_of_bits [B0,B0,B0] :: 3 Word.word) :: 64 Word.word)) (( 8 :: int)::ii) @@ -6893,11 +6620,11 @@ definition execute_LDR :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> definition execute_LDL :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_LDL base rt offset = ( (rGPR base :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - (addrWrapper ((add_vec ((sign_extend1 (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) LoadData - D + (addrWrapperUnaligned + ((add_vec ((mips_sign_extend (( 64 :: int)::ii) offset :: 64 Word.word)) w__0 :: 64 Word.word)) LoadData DL :: ( 64 Word.word) M) \<bind> (\<lambda> vAddr . - (TLBTranslate vAddr StoreData :: ( 64 Word.word) M) \<bind> (\<lambda> pAddr . - (MEMr_wrapper + (TLBTranslate vAddr LoadData :: ( 64 Word.word) M) \<bind> (\<lambda> pAddr . + (MEMr_wrapper (( 64 :: int)::ii) ((concat_vec ((subrange_vec_dec pAddr (( 63 :: int)::ii) (( 3 :: int)::ii) :: 61 Word.word)) (vec_of_bits [B0,B0,B0] :: 3 Word.word) :: 64 Word.word)) (( 8 :: int)::ii) @@ -6978,22 +6705,16 @@ definition execute_J :: "(26)Word.word \<Rightarrow>((register_value),(unit),(e :: 64 Word.word))))" -(*val execute_ImplementationDefinedStopFetching : unit -> unit*) - -definition execute_ImplementationDefinedStopFetching :: " unit \<Rightarrow> unit " where - " execute_ImplementationDefinedStopFetching g__118 = ( () )" - - (*val execute_HCF : unit -> unit*) definition execute_HCF :: " unit \<Rightarrow> unit " where - " execute_HCF g__123 = ( () )" + " execute_HCF g__21 = ( () )" (*val execute_ERET : unit -> M unit*) definition execute_ERET :: " unit \<Rightarrow>((register_value),(unit),(exception))monad " where - " execute_ERET g__128 = ( + " execute_ERET g__26 = ( (((checkCP0Access () \<then> ERETHook () ) \<then> write_reg CP0LLBit_ref (vec_of_bits [B0] :: 1 Word.word)) \<then> @@ -7022,7 +6743,8 @@ definition execute_DSUB :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow (rGPR rs :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . (let (temp65 :: 65 bits) = - ((sub_vec ((sign_extend1 (( 65 :: int)::ii) w__0 :: 65 Word.word)) ((sign_extend1 (( 65 :: int)::ii) w__1 :: 65 Word.word)) + ((sub_vec ((mips_sign_extend (( 65 :: int)::ii) w__0 :: 65 Word.word)) + ((mips_sign_extend (( 65 :: int)::ii) w__1 :: 65 Word.word)) :: 65 Word.word)) in if ((neq_bool ((bit_to_bool ((access_vec_dec temp65 (( 64 :: int)::ii))))) ((bit_to_bool ((access_vec_dec temp65 (( 63 :: int)::ii))))))) then @@ -7037,7 +6759,7 @@ definition execute_DSRLV :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> temp . (rGPR rs :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . (let sa = ((subrange_vec_dec w__0 (( 5 :: int)::ii) (( 0 :: int)::ii) :: 6 Word.word)) in - (shift_bits_right instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict temp sa :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . wGPR rd w__1)))))" + (shift_bits_right instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict temp sa :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . wGPR rd w__1)))))" (*val execute_DSRL32 : mword ty5 -> mword ty5 -> mword ty5 -> M unit*) @@ -7046,7 +6768,7 @@ definition execute_DSRL32 :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarr " execute_DSRL32 rt rd sa = ( (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> temp . (let sa32 = ((concat_vec (vec_of_bits [B1] :: 1 Word.word) sa :: 6 Word.word)) in - (shift_bits_right instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict temp sa32 :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0))))" + (shift_bits_right instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict temp sa32 :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0))))" (*val execute_DSRL : mword ty5 -> mword ty5 -> mword ty5 -> M unit*) @@ -7054,7 +6776,7 @@ definition execute_DSRL32 :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarr definition execute_DSRL :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_DSRL rt rd sa = ( (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> temp . - (shift_bits_right instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict temp sa :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0)))" + (shift_bits_right instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict temp sa :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0)))" (*val execute_DSRAV : mword ty5 -> mword ty5 -> mword ty5 -> M unit*) @@ -7065,7 +6787,7 @@ definition execute_DSRAV :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro (rGPR rs :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . (let sa = ((subrange_vec_dec w__0 (( 5 :: int)::ii) (( 0 :: int)::ii) :: 6 Word.word)) in (shift_bits_right_arith - instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict temp sa :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . wGPR rd w__1)))))" + instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict temp sa :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . wGPR rd w__1)))))" (*val execute_DSRA32 : mword ty5 -> mword ty5 -> mword ty5 -> M unit*) @@ -7075,7 +6797,7 @@ definition execute_DSRA32 :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarr (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> temp . (let sa32 = ((concat_vec (vec_of_bits [B1] :: 1 Word.word) sa :: 6 Word.word)) in (shift_bits_right_arith - instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict temp sa32 :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0))))" + instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict temp sa32 :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0))))" (*val execute_DSRA : mword ty5 -> mword ty5 -> mword ty5 -> M unit*) @@ -7084,7 +6806,7 @@ definition execute_DSRA :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow " execute_DSRA rt rd sa = ( (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> temp . (shift_bits_right_arith - instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict temp sa :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0)))" + instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict temp sa :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0)))" (*val execute_DSLLV : mword ty5 -> mword ty5 -> mword ty5 -> M unit*) @@ -7093,7 +6815,7 @@ definition execute_DSLLV :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro " execute_DSLLV rs rt rd = ( (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . (rGPR rs :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . - (shift_bits_left instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict w__0 ((subrange_vec_dec w__1 (( 5 :: int)::ii) (( 0 :: int)::ii) :: 6 Word.word)) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__2 :: + (shift_bits_left instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict w__0 ((subrange_vec_dec w__1 (( 5 :: int)::ii) (( 0 :: int)::ii) :: 6 Word.word)) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__2 :: 64 Word.word) . wGPR rd w__2))))" @@ -7103,7 +6825,7 @@ definition execute_DSLLV :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro definition execute_DSLL32 :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_DSLL32 rt rd sa = ( (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - (shift_bits_left instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict w__0 ((concat_vec (vec_of_bits [B1] :: 1 Word.word) sa :: 6 Word.word)) + (shift_bits_left instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict w__0 ((concat_vec (vec_of_bits [B1] :: 1 Word.word) sa :: 6 Word.word)) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . wGPR rd w__1)))" @@ -7113,7 +6835,7 @@ definition execute_DSLL32 :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarr definition execute_DSLL :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_DSLL rt rd sa = ( (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - (shift_bits_left instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict instance_Sail_values_Bitvector_Machine_word_mword_dict w__0 sa :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . wGPR rd w__1)))" + (shift_bits_left instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict instance_Sail2_values_Bitvector_Machine_word_mword_dict w__0 sa :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . wGPR rd w__1)))" (*val execute_DMULTU : mword ty5 -> mword ty5 -> M unit*) @@ -7149,9 +6871,9 @@ definition execute_DIVU :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] :: 64 Word.word)))))))))) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 32 :: int)::ii) :: ( 32 Word.word) M) \<bind> (\<lambda> (w__0 :: 32 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 32 :: int)::ii) :: ( 32 Word.word) M) \<bind> (\<lambda> (w__0 :: 32 bits) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 32 :: int)::ii) :: ( 32 Word.word) M) \<bind> (\<lambda> (w__1 :: 32 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 32 :: int)::ii) :: ( 32 Word.word) M) \<bind> (\<lambda> (w__1 :: 32 bits) . return (w__0, w__1))) else (let si = (Word.uint ((subrange_vec_dec rsVal (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word))) in @@ -7160,8 +6882,8 @@ definition execute_DIVU :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow (let ri = (hardware_mod si ti) in return ((to_bits ((make_the_value (( 32 :: int)::ii) :: 32 itself)) qi :: 32 Word.word), (to_bits ((make_the_value (( 32 :: int)::ii) :: 32 itself)) ri :: 32 Word.word))))))) \<bind> (\<lambda> varstup . (let (q, r) = varstup in - write_reg HI_ref ((sign_extend1 (( 64 :: int)::ii) r :: 64 Word.word)) \<then> - write_reg LO_ref ((sign_extend1 (( 64 :: int)::ii) q :: 64 Word.word)))))))" + write_reg HI_ref ((mips_sign_extend (( 64 :: int)::ii) r :: 64 Word.word)) \<then> + write_reg LO_ref ((mips_sign_extend (( 64 :: int)::ii) q :: 64 Word.word)))))))" (*val execute_DIV : mword ty5 -> mword ty5 -> M unit*) @@ -7175,9 +6897,9 @@ definition execute_DIV :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] :: 64 Word.word)))))))))) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 32 :: int)::ii) :: ( 32 Word.word) M) \<bind> (\<lambda> (w__0 :: 32 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 32 :: int)::ii) :: ( 32 Word.word) M) \<bind> (\<lambda> (w__0 :: 32 bits) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 32 :: int)::ii) :: ( 32 Word.word) M) \<bind> (\<lambda> (w__1 :: 32 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 32 :: int)::ii) :: ( 32 Word.word) M) \<bind> (\<lambda> (w__1 :: 32 bits) . return (w__0, w__1))) else (let si = (Word.sint ((subrange_vec_dec rsVal (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word))) in @@ -7186,8 +6908,8 @@ definition execute_DIV :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> (let ri = (si - ((ti * qi))) in return ((to_bits ((make_the_value (( 32 :: int)::ii) :: 32 itself)) qi :: 32 Word.word), (to_bits ((make_the_value (( 32 :: int)::ii) :: 32 itself)) ri :: 32 Word.word))))))) \<bind> (\<lambda> varstup . (let (q, r) = varstup in - write_reg HI_ref ((sign_extend1 (( 64 :: int)::ii) r :: 64 Word.word)) \<then> - write_reg LO_ref ((sign_extend1 (( 64 :: int)::ii) q :: 64 Word.word)))))))" + write_reg HI_ref ((mips_sign_extend (( 64 :: int)::ii) r :: 64 Word.word)) \<then> + write_reg LO_ref ((mips_sign_extend (( 64 :: int)::ii) q :: 64 Word.word)))))))" (*val execute_DDIVU : mword ty5 -> mword ty5 -> M unit*) @@ -7200,9 +6922,9 @@ definition execute_DDIVU :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro (let rtVal = (Word.uint w__1) in (if (((rtVal = (( 0 :: int)::ii)))) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__2 :: 64 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__2 :: 64 bits) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__3 :: 64 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__3 :: 64 bits) . return (w__2, w__3))) else (let qi = (hardware_quot rsVal rtVal) in @@ -7222,9 +6944,9 @@ definition execute_DDIV :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow (let rtVal = (Word.sint w__1) in (if (((rtVal = (( 0 :: int)::ii)))) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__2 :: 64 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__2 :: 64 bits) . (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__3 :: 64 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__3 :: 64 bits) . return (w__2, w__3))) else (let qi = (hardware_quot rsVal rtVal) in @@ -7248,7 +6970,7 @@ definition execute_DADDU :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro definition execute_DADDIU :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_DADDIU rs rt imm = ( (rGPR rs :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - wGPR rt ((add_vec w__0 ((sign_extend1 (( 64 :: int)::ii) imm :: 64 Word.word)) :: 64 Word.word))))" + wGPR rt ((add_vec w__0 ((mips_sign_extend (( 64 :: int)::ii) imm :: 64 Word.word)) :: 64 Word.word))))" (*val execute_DADDI : mword ty5 -> mword ty5 -> mword ty16 -> M unit*) @@ -7257,7 +6979,8 @@ definition execute_DADDI :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro " execute_DADDI rs rt imm = ( (rGPR rs :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . (let (sum65 :: 65 bits) = - ((add_vec ((sign_extend1 (( 65 :: int)::ii) w__0 :: 65 Word.word)) ((sign_extend1 (( 65 :: int)::ii) imm :: 65 Word.word)) + ((add_vec ((mips_sign_extend (( 65 :: int)::ii) w__0 :: 65 Word.word)) + ((mips_sign_extend (( 65 :: int)::ii) imm :: 65 Word.word)) :: 65 Word.word)) in if ((neq_bool ((bit_to_bool ((access_vec_dec sum65 (( 64 :: int)::ii))))) ((bit_to_bool ((access_vec_dec sum65 (( 63 :: int)::ii))))))) then @@ -7272,7 +6995,8 @@ definition execute_DADD :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow (rGPR rs :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . (let (sum65 :: 65 bits) = - ((add_vec ((sign_extend1 (( 65 :: int)::ii) w__0 :: 65 Word.word)) ((sign_extend1 (( 65 :: int)::ii) w__1 :: 65 Word.word)) + ((add_vec ((mips_sign_extend (( 65 :: int)::ii) w__0 :: 65 Word.word)) + ((mips_sign_extend (( 65 :: int)::ii) w__1 :: 65 Word.word)) :: 65 Word.word)) in if ((neq_bool ((bit_to_bool ((access_vec_dec sum65 (( 64 :: int)::ii))))) ((bit_to_bool ((access_vec_dec sum65 (( 63 :: int)::ii))))))) then @@ -7308,7 +7032,10 @@ definition execute_ClearRegs :: " ClearRegSet \<Rightarrow>(16)Word.word \<Righ ((to_bits ((make_the_value (( 5 :: int)::ii) :: 5 itself)) ((i + (( 16 :: int)::ii))) :: 5 Word.word)) ((zeros0 (( 64 :: int)::ii) () :: 64 Word.word)) | CLo => - writeCapReg ((to_bits ((make_the_value (( 5 :: int)::ii) :: 5 itself)) i :: 5 Word.word)) null_cap + if (((i = (( 0 :: int)::ii)))) then write_reg DDC_ref ((capStructToCapReg null_cap :: 257 Word.word)) + else + writeCapReg ((to_bits ((make_the_value (( 5 :: int)::ii) :: 5 itself)) i :: 5 Word.word)) + null_cap | CHi => writeCapReg ((to_bits ((make_the_value (( 5 :: int)::ii) :: 5 itself)) ((i + (( 16 :: int)::ii))) @@ -7322,15 +7049,15 @@ definition execute_ClearRegs :: " ClearRegSet \<Rightarrow>(16)Word.word \<Righ definition execute_CWriteHwr :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_CWriteHwr cb sel = ( checkCP2usable () \<then> - ((let l__24 = (Word.uint sel) in - (if (((l__24 = (( 0 :: int)::ii)))) then return (False, False) - else if (((l__24 = (( 1 :: int)::ii)))) then return (False, False) - else if (((l__24 = (( 8 :: int)::ii)))) then return (False, True) - else if (((l__24 = (( 22 :: int)::ii)))) then return (True, False) - else if (((l__24 = (( 23 :: int)::ii)))) then return (True, False) - else if (((l__24 = (( 29 :: int)::ii)))) then return (True, True) - else if (((l__24 = (( 30 :: int)::ii)))) then return (True, True) - else if (((l__24 = (( 31 :: int)::ii)))) then return (True, True) + ((let p00 = (Word.uint sel) in + (if (((p00 = (( 0 :: int)::ii)))) then return (False, False) + else if (((p00 = (( 1 :: int)::ii)))) then return (False, False) + else if (((p00 = (( 8 :: int)::ii)))) then return (False, True) + else if (((p00 = (( 22 :: int)::ii)))) then return (True, False) + else if (((p00 = (( 23 :: int)::ii)))) then return (True, False) + else if (((p00 = (( 29 :: int)::ii)))) then return (True, True) + else if (((p00 = (( 30 :: int)::ii)))) then return (True, True) + else if (((p00 = (( 31 :: int)::ii)))) then return (True, True) else SignalException ResI) \<bind> (\<lambda> varstup . (let ((needSup :: bool), (needAccessSys :: bool)) = varstup in register_inaccessible cb \<bind> (\<lambda> (w__8 :: bool) . if w__8 then raise_c2_exception CapEx_AccessSystemRegsViolation cb @@ -7346,17 +7073,22 @@ definition execute_CWriteHwr :: "(5)Word.word \<Rightarrow>(5)Word.word \<Right if w__12 then raise_c2_exception CapEx_AccessSystemRegsViolation sel else readCapReg cb \<bind> (\<lambda> capVal . - (let l__16 = (Word.uint sel) in - if (((l__16 = (( 0 :: int)::ii)))) then writeCapReg DDC capVal - else if (((l__16 = (( 1 :: int)::ii)))) then + (let p00 = (Word.uint sel) in + if (((p00 = (( 0 :: int)::ii)))) then write_reg DDC_ref ((capStructToCapReg capVal :: 257 Word.word)) + else if (((p00 = (( 1 :: int)::ii)))) then write_reg CTLSU_ref ((capStructToCapReg capVal :: 257 Word.word)) - else if (((l__16 = (( 8 :: int)::ii)))) then + else if (((p00 = (( 8 :: int)::ii)))) then write_reg CTLSP_ref ((capStructToCapReg capVal :: 257 Word.word)) - else if (((l__16 = (( 22 :: int)::ii)))) then writeCapReg KR1C capVal - else if (((l__16 = (( 23 :: int)::ii)))) then writeCapReg KR2C capVal - else if (((l__16 = (( 29 :: int)::ii)))) then writeCapReg KCC capVal - else if (((l__16 = (( 30 :: int)::ii)))) then writeCapReg KDC capVal - else if (((l__16 = (( 31 :: int)::ii)))) then writeCapReg EPCC capVal + else if (((p00 = (( 22 :: int)::ii)))) then + write_reg KR1C_ref ((capStructToCapReg capVal :: 257 Word.word)) + else if (((p00 = (( 23 :: int)::ii)))) then + write_reg KR2C_ref ((capStructToCapReg capVal :: 257 Word.word)) + else if (((p00 = (( 29 :: int)::ii)))) then + write_reg KCC_ref ((capStructToCapReg capVal :: 257 Word.word)) + else if (((p00 = (( 30 :: int)::ii)))) then + write_reg KDC_ref ((capStructToCapReg capVal :: 257 Word.word)) + else if (((p00 = (( 31 :: int)::ii)))) then + write_reg EPCC_ref ((capStructToCapReg capVal :: 257 Word.word)) else assert_exp False (''should be unreachable code'')))))))))))" @@ -7400,7 +7132,7 @@ definition execute_CUnseal :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightar definition execute_CToPtr :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_CToPtr rd cb ct = ( (checkCP2usable () \<then> - readCapReg ct) \<bind> (\<lambda> ct_val . + readCapRegDDC ct) \<bind> (\<lambda> ct_val . readCapReg cb \<bind> (\<lambda> cb_val . register_inaccessible cb \<bind> (\<lambda> (w__0 :: bool) . if w__0 then raise_c2_exception CapEx_AccessSystemRegsViolation cb @@ -7429,7 +7161,7 @@ definition execute_CToPtr :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarr definition execute_CTestSubset :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_CTestSubset rd cb ct = ( (checkCP2usable () \<then> - readCapReg cb) \<bind> (\<lambda> cb_val . + readCapRegDDC cb) \<bind> (\<lambda> cb_val . readCapReg ct \<bind> (\<lambda> ct_val . (let ct_top = (getCapTop ct_val) in (let ct_base = (getCapBase ct_val) in @@ -7451,7 +7183,7 @@ definition execute_CTestSubset :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rig else if (((((and_vec ct_perms cb_perms :: 31 Word.word)) \<noteq> ct_perms))) then (vec_of_bits [B0] :: 1 Word.word) else (vec_of_bits [B1] :: 1 Word.word)) in - wGPR rd ((zero_extend1 (( 64 :: int)::ii) result :: 64 Word.word))))))))))))))" + wGPR rd ((mips_zero_extend (( 64 :: int)::ii) result :: 64 Word.word))))))))))))))" (*val execute_CSub : mword ty5 -> mword ty5 -> mword ty5 -> M unit*) @@ -7478,7 +7210,7 @@ definition execute_CSub :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow definition execute_CStore :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(8)Word.word \<Rightarrow> WordType \<Rightarrow> bool \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_CStore rs cb rt rd offset width conditional = ( (checkCP2usable () \<then> - readCapReg cb) \<bind> (\<lambda> cb_val . + readCapRegDDC cb) \<bind> (\<lambda> cb_val . register_inaccessible cb \<bind> (\<lambda> (w__0 :: bool) . if w__0 then raise_c2_exception CapEx_AccessSystemRegsViolation cb else if ((\<not>(CapStruct_tag cb_val))) then raise_c2_exception CapEx_TagViolation cb @@ -7490,8 +7222,8 @@ definition execute_CStore :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarr (let cursor = (getCapCursor cb_val) in (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . (let vAddr = - (hardware_mod - ((((cursor + ((Word.uint w__1)))) + ((size1 * ((Word.sint offset)))))) + (((((cursor + ((Word.uint w__1)))) + ((size1 * ((Word.sint offset)))))) + mod ((pow2 (( 64 :: int)::ii)))) in (let vAddr64 = ((to_bits ((make_the_value (( 64 :: int)::ii) :: 64 itself)) vAddr :: 64 Word.word)) in if ((((vAddr + size1)) > ((getCapTop cb_val)))) then @@ -7517,7 +7249,7 @@ definition execute_CStore :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarr | D => MEMw_conditional_wrapper pAddr (( 8 :: int)::ii) rs_val ) else return False) \<bind> (\<lambda> (success :: bool) . - wGPR rd ((zero_extend1 (( 64 :: int)::ii) ((bool_to_bits success :: 1 Word.word)) :: 64 Word.word)))) + wGPR rd ((mips_zero_extend (( 64 :: int)::ii) ((bool_to_bits success :: 1 Word.word)) :: 64 Word.word)))) else (case width of B => MEMw_wrapper pAddr (( 1 :: int)::ii) ((subrange_vec_dec rs_val (( 7 :: int)::ii) (( 0 :: int)::ii) :: 8 Word.word)) @@ -7694,7 +7426,7 @@ definition execute_CSC :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> " execute_CSC cs cb rt rd offset conditional = ( (checkCP2usable () \<then> readCapReg cs) \<bind> (\<lambda> cs_val . - readCapReg cb \<bind> (\<lambda> cb_val . + readCapRegDDC cb \<bind> (\<lambda> cb_val . register_inaccessible cs \<bind> (\<lambda> (w__0 :: bool) . if w__0 then raise_c2_exception CapEx_AccessSystemRegsViolation cs else @@ -7712,15 +7444,14 @@ definition execute_CSC :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> (let cursor = (getCapCursor cb_val) in (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> (w__2 :: 64 Word.word) . (let vAddr = - (hardware_mod - ((((cursor + ((Word.uint w__2)))) + (((( 16 :: int)::ii) * ((Word.sint offset)))))) + (((((cursor + ((Word.uint w__2)))) + (((( 16 :: int)::ii) * ((Word.sint offset)))))) + mod ((pow2 (( 64 :: int)::ii)))) in (let vAddr64 = ((to_bits ((make_the_value (( 64 :: int)::ii) :: 64 itself)) vAddr :: 64 Word.word)) in if ((((vAddr + cap_size)) > ((getCapTop cb_val)))) then raise_c2_exception CapEx_LengthViolation cb else if ((vAddr < ((getCapBase cb_val)))) then raise_c2_exception CapEx_LengthViolation cb - else if (((((hardware_mod vAddr cap_size)) \<noteq> (( 0 :: int)::ii)))) then - SignalExceptionBadAddr AdES vAddr64 + else if (((((vAddr mod cap_size)) \<noteq> (( 0 :: int)::ii)))) then SignalExceptionBadAddr AdES vAddr64 else (TLBTranslateC vAddr64 StoreData :: (( 64 Word.word * bool)) M) \<bind> (\<lambda> varstup . (let (pAddr, noStoreCap) = varstup in if ((((CapStruct_tag cs_val) \<and> noStoreCap))) then @@ -7731,14 +7462,14 @@ definition execute_CSC :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> MEMw_tagged_conditional pAddr(CapStruct_tag cs_val) ((capStructToMemBits cs_val :: 256 Word.word)) else return False) \<bind> (\<lambda> success . - wGPR rd ((zero_extend1 (( 64 :: int)::ii) ((bool_to_bits success :: 1 Word.word)) :: 64 Word.word)))) + wGPR rd ((mips_zero_extend (( 64 :: int)::ii) ((bool_to_bits success :: 1 Word.word)) :: 64 Word.word)))) else MEMw_tagged pAddr(CapStruct_tag cs_val) ((capStructToMemBits cs_val :: 256 Word.word)))))))))))))" (*val execute_CReturn : unit -> M unit*) definition execute_CReturn :: " unit \<Rightarrow>((register_value),(unit),(exception))monad " where - " execute_CReturn g__129 = ( checkCP2usable () \<then> raise_c2_exception_noreg CapEx_ReturnTrap )" + " execute_CReturn g__27 = ( checkCP2usable () \<then> raise_c2_exception_noreg CapEx_ReturnTrap )" (*val execute_CReadHwr : mword ty5 -> mword ty5 -> M unit*) @@ -7746,15 +7477,15 @@ definition execute_CReturn :: " unit \<Rightarrow>((register_value),(unit),(exc definition execute_CReadHwr :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_CReadHwr cd1 sel = ( checkCP2usable () \<then> - ((let l__8 = (Word.uint sel) in - (if (((l__8 = (( 0 :: int)::ii)))) then return (False, False) - else if (((l__8 = (( 1 :: int)::ii)))) then return (False, False) - else if (((l__8 = (( 8 :: int)::ii)))) then return (False, True) - else if (((l__8 = (( 22 :: int)::ii)))) then return (True, False) - else if (((l__8 = (( 23 :: int)::ii)))) then return (True, False) - else if (((l__8 = (( 29 :: int)::ii)))) then return (True, True) - else if (((l__8 = (( 30 :: int)::ii)))) then return (True, True) - else if (((l__8 = (( 31 :: int)::ii)))) then return (True, True) + ((let p00 = (Word.uint sel) in + (if (((p00 = (( 0 :: int)::ii)))) then return (False, False) + else if (((p00 = (( 1 :: int)::ii)))) then return (False, False) + else if (((p00 = (( 8 :: int)::ii)))) then return (False, True) + else if (((p00 = (( 22 :: int)::ii)))) then return (True, False) + else if (((p00 = (( 23 :: int)::ii)))) then return (True, False) + else if (((p00 = (( 29 :: int)::ii)))) then return (True, True) + else if (((p00 = (( 30 :: int)::ii)))) then return (True, True) + else if (((p00 = (( 31 :: int)::ii)))) then return (True, True) else SignalException ResI) \<bind> (\<lambda> varstup . (let ((needSup :: bool), (needAccessSys :: bool)) = varstup in register_inaccessible cd1 \<bind> (\<lambda> (w__8 :: bool) . if w__8 then raise_c2_exception CapEx_AccessSystemRegsViolation cd1 @@ -7769,19 +7500,31 @@ definition execute_CReadHwr :: "(5)Word.word \<Rightarrow>(5)Word.word \<Righta return ((\<not> ((grantsAccess w__11 Supervisor)))))) \<bind> (\<lambda> (w__12 :: bool) . if w__12 then raise_c2_exception CapEx_AccessSystemRegsViolation sel else - (let l__0 = (Word.uint sel) in - (if (((l__0 = (( 0 :: int)::ii)))) then readCapReg DDC - else if (((l__0 = (( 1 :: int)::ii)))) then + (let p00 = (Word.uint sel) in + (if (((p00 = (( 0 :: int)::ii)))) then + (read_reg DDC_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__13 :: 257 Word.word) . + return ((capRegToCapStruct w__13))) + else if (((p00 = (( 1 :: int)::ii)))) then (read_reg CTLSU_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__14 :: 257 Word.word) . return ((capRegToCapStruct w__14))) - else if (((l__0 = (( 8 :: int)::ii)))) then + else if (((p00 = (( 8 :: int)::ii)))) then (read_reg CTLSP_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__15 :: 257 Word.word) . return ((capRegToCapStruct w__15))) - else if (((l__0 = (( 22 :: int)::ii)))) then readCapReg KR1C - else if (((l__0 = (( 23 :: int)::ii)))) then readCapReg KR2C - else if (((l__0 = (( 29 :: int)::ii)))) then readCapReg KCC - else if (((l__0 = (( 30 :: int)::ii)))) then readCapReg KDC - else if (((l__0 = (( 31 :: int)::ii)))) then readCapReg EPCC + else if (((p00 = (( 22 :: int)::ii)))) then + (read_reg KR1C_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__16 :: 257 Word.word) . + return ((capRegToCapStruct w__16))) + else if (((p00 = (( 23 :: int)::ii)))) then + (read_reg KR2C_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__17 :: 257 Word.word) . + return ((capRegToCapStruct w__17))) + else if (((p00 = (( 29 :: int)::ii)))) then + (read_reg KCC_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__18 :: 257 Word.word) . + return ((capRegToCapStruct w__18))) + else if (((p00 = (( 30 :: int)::ii)))) then + (read_reg KDC_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__19 :: 257 Word.word) . + return ((capRegToCapStruct w__19))) + else if (((p00 = (( 31 :: int)::ii)))) then + (read_reg EPCC_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__20 :: 257 Word.word) . + return ((capRegToCapStruct w__20))) else assert_exp False (''should be unreachable code'') \<then> undefined_CapStruct () ) \<bind> (\<lambda> (capVal :: CapStruct) . writeCapReg cd1 capVal))))))))))" @@ -7832,7 +7575,7 @@ definition execute_CPtrCmp :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightar | CEXEQ => (cb_val = ct_val) | CNEXEQ => (cb_val \<noteq> ct_val) )) in - wGPR rd ((zero_extend1 (( 64 :: int)::ii) ((bool_to_bits cmp :: 1 Word.word)) :: 64 Word.word))))))))))))" + wGPR rd ((mips_zero_extend (( 64 :: int)::ii) ((bool_to_bits cmp :: 1 Word.word)) :: 64 Word.word))))))))))))" (*val execute_CMOVX : mword ty5 -> mword ty5 -> mword ty5 -> bool -> M unit*) @@ -7864,7 +7607,7 @@ definition execute_CLoad :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro (case merge_var of (rd, cb, rt, offset, signext, B, linked) => (checkCP2usable () \<then> - readCapReg cb) \<bind> (\<lambda> cb_val . + readCapRegDDC cb) \<bind> (\<lambda> cb_val . register_inaccessible cb \<bind> (\<lambda> (w__0 :: bool) . if w__0 then raise_c2_exception CapEx_AccessSystemRegsViolation cb else if ((\<not>(CapStruct_tag cb_val))) then raise_c2_exception CapEx_TagViolation cb @@ -7875,8 +7618,8 @@ definition execute_CLoad :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro (let cursor = (getCapCursor cb_val) in (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . (let vAddr = - (hardware_mod - ((((cursor + ((Word.uint w__1)))) + (((( 1 :: int)::ii) * ((Word.sint offset)))))) + (((((cursor + ((Word.uint w__1)))) + (((( 1 :: int)::ii) * ((Word.sint offset)))))) + mod ((pow2 (( 64 :: int)::ii)))) in (let vAddr64 = ((to_bits ((make_the_value (( 64 :: int)::ii) :: 64 itself)) vAddr :: 64 Word.word)) in if ((((vAddr + (( 1 :: int)::ii))) > ((getCapTop cb_val)))) then @@ -7891,12 +7634,12 @@ definition execute_CLoad :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro (MEMr_reserve_wrapper pAddr (( 1 :: int)::ii) :: ( 8 Word.word) M)) \<bind> (\<lambda> (w__2 :: 8 Word.word) . return ((extendLoad w__2 signext :: 64 Word.word))) else - (MEMr_wrapper pAddr (( 1 :: int)::ii) :: ( 8 Word.word) M) \<bind> (\<lambda> (w__3 :: 8 Word.word) . + (MEMr_wrapper (( 8 :: int)::ii) pAddr (( 1 :: int)::ii) :: ( 8 Word.word) M) \<bind> (\<lambda> (w__3 :: 8 Word.word) . return ((extendLoad w__3 signext :: 64 Word.word)))) \<bind> (\<lambda> (memResult :: 64 bits) . wGPR rd memResult)))))))) | (rd, cb, rt, offset, signext, D, linked) => (checkCP2usable () \<then> - readCapReg cb) \<bind> (\<lambda> cb_val . + readCapRegDDC cb) \<bind> (\<lambda> cb_val . register_inaccessible cb \<bind> (\<lambda> (w__0 :: bool) . if w__0 then raise_c2_exception CapEx_AccessSystemRegsViolation cb else if ((\<not>(CapStruct_tag cb_val))) then raise_c2_exception CapEx_TagViolation cb @@ -7907,8 +7650,8 @@ definition execute_CLoad :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro (let cursor = (getCapCursor cb_val) in (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . (let vAddr = - (hardware_mod - ((((cursor + ((Word.uint w__1)))) + (((( 8 :: int)::ii) * ((Word.sint offset)))))) + (((((cursor + ((Word.uint w__1)))) + (((( 8 :: int)::ii) * ((Word.sint offset)))))) + mod ((pow2 (( 64 :: int)::ii)))) in (let vAddr64 = ((to_bits ((make_the_value (( 64 :: int)::ii) :: 64 itself)) vAddr :: 64 Word.word)) in if ((((vAddr + (( 8 :: int)::ii))) > ((getCapTop cb_val)))) then @@ -7923,12 +7666,12 @@ definition execute_CLoad :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro (MEMr_reserve_wrapper pAddr (( 8 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__2 :: 64 Word.word) . return ((extendLoad w__2 signext :: 64 Word.word))) else - (MEMr_wrapper pAddr (( 8 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__3 :: 64 Word.word) . + (MEMr_wrapper (( 64 :: int)::ii) pAddr (( 8 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__3 :: 64 Word.word) . return ((extendLoad w__3 signext :: 64 Word.word)))) \<bind> (\<lambda> (memResult :: 64 bits) . wGPR rd memResult)))))))) | (rd, cb, rt, offset, signext, H, linked) => (checkCP2usable () \<then> - readCapReg cb) \<bind> (\<lambda> cb_val . + readCapRegDDC cb) \<bind> (\<lambda> cb_val . register_inaccessible cb \<bind> (\<lambda> (w__0 :: bool) . if w__0 then raise_c2_exception CapEx_AccessSystemRegsViolation cb else if ((\<not>(CapStruct_tag cb_val))) then raise_c2_exception CapEx_TagViolation cb @@ -7939,8 +7682,8 @@ definition execute_CLoad :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro (let cursor = (getCapCursor cb_val) in (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . (let vAddr = - (hardware_mod - ((((cursor + ((Word.uint w__1)))) + (((( 2 :: int)::ii) * ((Word.sint offset)))))) + (((((cursor + ((Word.uint w__1)))) + (((( 2 :: int)::ii) * ((Word.sint offset)))))) + mod ((pow2 (( 64 :: int)::ii)))) in (let vAddr64 = ((to_bits ((make_the_value (( 64 :: int)::ii) :: 64 itself)) vAddr :: 64 Word.word)) in if ((((vAddr + (( 2 :: int)::ii))) > ((getCapTop cb_val)))) then @@ -7955,12 +7698,12 @@ definition execute_CLoad :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro (MEMr_reserve_wrapper pAddr (( 2 :: int)::ii) :: ( 16 Word.word) M)) \<bind> (\<lambda> (w__2 :: 16 Word.word) . return ((extendLoad w__2 signext :: 64 Word.word))) else - (MEMr_wrapper pAddr (( 2 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__3 :: 16 Word.word) . + (MEMr_wrapper (( 16 :: int)::ii) pAddr (( 2 :: int)::ii) :: ( 16 Word.word) M) \<bind> (\<lambda> (w__3 :: 16 Word.word) . return ((extendLoad w__3 signext :: 64 Word.word)))) \<bind> (\<lambda> (memResult :: 64 bits) . wGPR rd memResult)))))))) | (rd, cb, rt, offset, signext, W, linked) => (checkCP2usable () \<then> - readCapReg cb) \<bind> (\<lambda> cb_val . + readCapRegDDC cb) \<bind> (\<lambda> cb_val . register_inaccessible cb \<bind> (\<lambda> (w__0 :: bool) . if w__0 then raise_c2_exception CapEx_AccessSystemRegsViolation cb else if ((\<not>(CapStruct_tag cb_val))) then raise_c2_exception CapEx_TagViolation cb @@ -7971,8 +7714,8 @@ definition execute_CLoad :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro (let cursor = (getCapCursor cb_val) in (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . (let vAddr = - (hardware_mod - ((((cursor + ((Word.uint w__1)))) + (((( 4 :: int)::ii) * ((Word.sint offset)))))) + (((((cursor + ((Word.uint w__1)))) + (((( 4 :: int)::ii) * ((Word.sint offset)))))) + mod ((pow2 (( 64 :: int)::ii)))) in (let vAddr64 = ((to_bits ((make_the_value (( 64 :: int)::ii) :: 64 itself)) vAddr :: 64 Word.word)) in if ((((vAddr + (( 4 :: int)::ii))) > ((getCapTop cb_val)))) then @@ -7987,18 +7730,18 @@ definition execute_CLoad :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro (MEMr_reserve_wrapper pAddr (( 4 :: int)::ii) :: ( 32 Word.word) M)) \<bind> (\<lambda> (w__2 :: 32 Word.word) . return ((extendLoad w__2 signext :: 64 Word.word))) else - (MEMr_wrapper pAddr (( 4 :: int)::ii) :: ( 32 Word.word) M) \<bind> (\<lambda> (w__3 :: 32 Word.word) . + (MEMr_wrapper (( 32 :: int)::ii) pAddr (( 4 :: int)::ii) :: ( 32 Word.word) M) \<bind> (\<lambda> (w__3 :: 32 Word.word) . return ((extendLoad w__3 signext :: 64 Word.word)))) \<bind> (\<lambda> (memResult :: 64 bits) . wGPR rd memResult)))))))) )))" -(*val execute_CLC : mword ty5 -> mword ty5 -> mword ty5 -> mword ty11 -> bool -> M unit*) +(*val execute_CLC : mword ty5 -> mword ty5 -> mword ty5 -> mword ty16 -> bool -> M unit*) -definition execute_CLC :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(11)Word.word \<Rightarrow> bool \<Rightarrow>((register_value),(unit),(exception))monad " where +definition execute_CLC :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow> bool \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_CLC cd1 cb rt offset linked = ( (checkCP2usable () \<then> - readCapReg cb) \<bind> (\<lambda> cb_val . + readCapRegDDC cb) \<bind> (\<lambda> cb_val . register_inaccessible cd1 \<bind> (\<lambda> (w__0 :: bool) . if w__0 then raise_c2_exception CapEx_AccessSystemRegsViolation cd1 else @@ -8012,15 +7755,14 @@ definition execute_CLC :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> (let cursor = (getCapCursor cb_val) in (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> (w__2 :: 64 Word.word) . (let vAddr = - (hardware_mod - ((((cursor + ((Word.uint w__2)))) + (((( 16 :: int)::ii) * ((Word.sint offset)))))) + (((((cursor + ((Word.uint w__2)))) + (((( 16 :: int)::ii) * ((Word.sint offset)))))) + mod ((pow2 (( 64 :: int)::ii)))) in (let vAddr64 = ((to_bits ((make_the_value (( 64 :: int)::ii) :: 64 itself)) vAddr :: 64 Word.word)) in if ((((vAddr + cap_size)) > ((getCapTop cb_val)))) then raise_c2_exception CapEx_LengthViolation cb else if ((vAddr < ((getCapBase cb_val)))) then raise_c2_exception CapEx_LengthViolation cb - else if (((((hardware_mod vAddr cap_size)) \<noteq> (( 0 :: int)::ii)))) then - SignalExceptionBadAddr AdEL vAddr64 + else if (((((vAddr mod cap_size)) \<noteq> (( 0 :: int)::ii)))) then SignalExceptionBadAddr AdEL vAddr64 else (TLBTranslateC vAddr64 LoadData :: (( 64 Word.word * bool)) M) \<bind> (\<lambda> varstup . (let (pAddr, suppressTag) = varstup in (let cd1 = (Word.uint cd1) in @@ -8065,7 +7807,7 @@ definition execute_CJALR :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro else if ((cb_ptr < cb_base)) then raise_c2_exception CapEx_LengthViolation cb else if ((((cb_ptr + (( 4 :: int)::ii))) > cb_top)) then raise_c2_exception CapEx_LengthViolation cb - else if (((((hardware_mod cb_ptr (( 4 :: int)::ii))) \<noteq> (( 0 :: int)::ii)))) then SignalException AdEL + else if (((((cb_ptr mod (( 4 :: int)::ii))) \<noteq> (( 0 :: int)::ii)))) then SignalException AdEL else (if link then (read_reg PCC_ref :: ( 257 Word.word) M) \<bind> (\<lambda> (w__3 :: 257 Word.word) . @@ -8084,7 +7826,7 @@ definition execute_CIncOffsetImmediate :: "(5)Word.word \<Rightarrow>(5)Word.wo " execute_CIncOffsetImmediate cd1 cb imm = ( (checkCP2usable () \<then> readCapReg cb) \<bind> (\<lambda> cb_val . - (let (imm64 :: 64 bits) = ((sign_extend1 (( 64 :: int)::ii) imm :: 64 Word.word)) in + (let (imm64 :: 64 bits) = ((mips_sign_extend (( 64 :: int)::ii) imm :: 64 Word.word)) in register_inaccessible cd1 \<bind> (\<lambda> (w__0 :: bool) . if w__0 then raise_c2_exception CapEx_AccessSystemRegsViolation cd1 else @@ -8144,7 +7886,8 @@ definition execute_CGetType :: "(5)Word.word \<Rightarrow>(5)Word.word \<Righta else readCapReg cb \<bind> (\<lambda> capVal . wGPR rd - (if(CapStruct_sealed capVal) then (zero_extend1 (( 64 :: int)::ii)(CapStruct_otype capVal) :: 64 Word.word) + (if(CapStruct_sealed capVal) then + (mips_zero_extend (( 64 :: int)::ii)(CapStruct_otype capVal) :: 64 Word.word) else (replicate_bits ((cast_unit_vec0 B1 :: 1 Word.word)) (( 64 :: int)::ii) :: 64 Word.word)))))" @@ -8158,7 +7901,7 @@ definition execute_CGetTag :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightar else readCapReg cb \<bind> (\<lambda> capVal . wGPR rd - ((zero_extend1 (( 64 :: int)::ii) ((bool_to_bits(CapStruct_tag capVal) :: 1 Word.word)) :: 64 Word.word)))))" + ((mips_zero_extend (( 64 :: int)::ii) ((bool_to_bits(CapStruct_tag capVal) :: 1 Word.word)) :: 64 Word.word)))))" (*val execute_CGetSealed : mword ty5 -> mword ty5 -> M unit*) @@ -8171,7 +7914,8 @@ definition execute_CGetSealed :: "(5)Word.word \<Rightarrow>(5)Word.word \<Righ else readCapReg cb \<bind> (\<lambda> capVal . wGPR rd - ((zero_extend1 (( 64 :: int)::ii) ((bool_to_bits(CapStruct_sealed capVal) :: 1 Word.word)) :: 64 Word.word)))))" + ((mips_zero_extend (( 64 :: int)::ii) ((bool_to_bits(CapStruct_sealed capVal) :: 1 Word.word)) + :: 64 Word.word)))))" (*val execute_CGetPerm : mword ty5 -> mword ty5 -> M unit*) @@ -8183,7 +7927,7 @@ definition execute_CGetPerm :: "(5)Word.word \<Rightarrow>(5)Word.word \<Righta if w__0 then raise_c2_exception CapEx_AccessSystemRegsViolation cb else readCapReg cb \<bind> (\<lambda> capVal . - wGPR rd ((zero_extend1 (( 64 :: int)::ii) ((getCapPerms capVal :: 31 Word.word)) :: 64 Word.word)))))" + wGPR rd ((mips_zero_extend (( 64 :: int)::ii) ((getCapPerms capVal :: 31 Word.word)) :: 64 Word.word)))))" (*val execute_CGetPCCSetOffset : mword ty5 -> mword ty5 -> M unit*) @@ -8256,7 +8000,7 @@ definition execute_CGetCause :: "(5)Word.word \<Rightarrow>((register_value),(u if ((\<not> w__0)) then raise_c2_exception_noreg CapEx_AccessSystemRegsViolation else read_reg CapCause_ref \<bind> (\<lambda> (w__1 :: CapCauseReg) . - wGPR rd ((zero_extend1 (( 64 :: int)::ii) ((get_CapCauseReg w__1 :: 16 Word.word)) :: 64 Word.word)))))" + wGPR rd ((mips_zero_extend (( 64 :: int)::ii) ((get_CapCauseReg_bits w__1 :: 16 Word.word)) :: 64 Word.word)))))" (*val execute_CGetBase : mword ty5 -> mword ty5 -> M unit*) @@ -8290,14 +8034,18 @@ definition execute_CGetAddr :: "(5)Word.word \<Rightarrow>(5)Word.word \<Righta definition execute_CFromPtr :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_CFromPtr cd1 cb rt = ( (checkCP2usable () \<then> - readCapReg cb) \<bind> (\<lambda> cb_val . + readCapRegDDC cb) \<bind> (\<lambda> cb_val . (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> rt_val . register_inaccessible cd1 \<bind> (\<lambda> (w__0 :: bool) . if w__0 then raise_c2_exception CapEx_AccessSystemRegsViolation cd1 else register_inaccessible cb \<bind> (\<lambda> (w__1 :: bool) . if w__1 then raise_c2_exception CapEx_AccessSystemRegsViolation cb - else if (((rt = (vec_of_bits [B0,B0,B0,B0,B0] :: 5 Word.word)))) then writeCapReg cd1 null_cap + else if (((rt_val = (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)))) then + writeCapReg cd1 null_cap else if ((\<not>(CapStruct_tag cb_val))) then raise_c2_exception CapEx_TagViolation cb else if(CapStruct_sealed cb_val) then raise_c2_exception CapEx_SealViolation cb else @@ -8387,7 +8135,7 @@ definition execute_CCheckPerm :: "(5)Word.word \<Rightarrow>(5)Word.word \<Righ (checkCP2usable () \<then> readCapReg cs) \<bind> (\<lambda> cs_val . (let (cs_perms :: 64 bits) = - ((zero_extend1 (( 64 :: int)::ii) ((getCapPerms cs_val :: 31 Word.word)) :: 64 Word.word)) in + ((mips_zero_extend (( 64 :: int)::ii) ((getCapPerms cs_val :: 31 Word.word)) :: 64 Word.word)) in (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> rt_perms . register_inaccessible cs \<bind> (\<lambda> (w__0 :: bool) . if w__0 then raise_c2_exception CapEx_AccessSystemRegsViolation cs @@ -8509,7 +8257,7 @@ definition execute_CCSeal :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarr definition execute_CBuildCap :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_CBuildCap cd1 cb ct = ( (checkCP2usable () \<then> - readCapReg cb) \<bind> (\<lambda> cb_val . + readCapRegDDC cb) \<bind> (\<lambda> cb_val . readCapReg ct \<bind> (\<lambda> ct_val . (let cb_base = (getCapBase cb_val) in (let ct_base = (getCapBase ct_val) in @@ -8560,7 +8308,7 @@ definition execute_CBZ :: "(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow :: 1 Word.word)))) then (let (offset :: 64 bits) = ((add_vec_int - ((sign_extend1 (( 64 :: int)::ii) + ((mips_sign_extend (( 64 :: int)::ii) ((concat_vec imm (vec_of_bits [B0,B0] :: 2 Word.word) :: 18 Word.word)) :: 64 Word.word)) (( 4 :: int)::ii) :: 64 Word.word)) in @@ -8584,7 +8332,7 @@ definition execute_CBX :: "(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow :: 1 Word.word)))) then (let (offset :: 64 bits) = ((add_vec_int - ((sign_extend1 (( 64 :: int)::ii) + ((mips_sign_extend (( 64 :: int)::ii) ((concat_vec imm (vec_of_bits [B0,B0] :: 2 Word.word) :: 18 Word.word)) :: 64 Word.word)) (( 4 :: int)::ii) :: 64 Word.word)) in @@ -8630,7 +8378,7 @@ definition execute_C2Dump :: "(5)Word.word \<Rightarrow> unit " where (*val execute_BREAK : unit -> M unit*) definition execute_BREAK :: " unit \<Rightarrow>((register_value),(unit),(exception))monad " where - " execute_BREAK g__120 = ( SignalException Bp )" + " execute_BREAK g__18 = ( SignalException Bp )" (*val execute_BEQ : mword ty5 -> mword ty5 -> mword ty16 -> bool -> bool -> M unit*) @@ -8645,7 +8393,8 @@ definition execute_BEQ :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> :: 1 Word.word)))) then (let (offset :: 64 bits) = ((add_vec_int - ((sign_extend1 (( 64 :: int)::ii) ((concat_vec imm (vec_of_bits [B0,B0] :: 2 Word.word) :: 18 Word.word)) + ((mips_sign_extend (( 64 :: int)::ii) + ((concat_vec imm (vec_of_bits [B0,B0] :: 2 Word.word) :: 18 Word.word)) :: 64 Word.word)) (( 4 :: int)::ii) :: 64 Word.word)) in (read_reg PC_ref :: ( 64 Word.word) M) \<bind> (\<lambda> (w__2 :: 64 Word.word) . @@ -8664,11 +8413,12 @@ definition execute_BCMPZ :: "(5)Word.word \<Rightarrow>(16)Word.word \<Rightarr (let linkVal = ((add_vec_int w__0 (( 8 :: int)::ii) :: 64 Word.word)) in (rGPR rs :: ( 64 Word.word) M) \<bind> (\<lambda> regVal . (let condition = - (compare cmp regVal ((zero_extend1 (( 64 :: int)::ii) (vec_of_bits [B0] :: 1 Word.word) :: 64 Word.word))) in + (compare cmp regVal ((mips_zero_extend (( 64 :: int)::ii) (vec_of_bits [B0] :: 1 Word.word) :: 64 Word.word))) in (if condition then (let (offset :: 64 bits) = ((add_vec_int - ((sign_extend1 (( 64 :: int)::ii) ((concat_vec imm (vec_of_bits [B0,B0] :: 2 Word.word) :: 18 Word.word)) + ((mips_sign_extend (( 64 :: int)::ii) + ((concat_vec imm (vec_of_bits [B0,B0] :: 2 Word.word) :: 18 Word.word)) :: 64 Word.word)) (( 4 :: int)::ii) :: 64 Word.word)) in (read_reg PC_ref :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . @@ -8686,7 +8436,7 @@ definition execute_BCMPZ :: "(5)Word.word \<Rightarrow>(16)Word.word \<Rightarr definition execute_ANDI :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow>(16)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where " execute_ANDI rs rt imm = ( (rGPR rs :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . - wGPR rt ((and_vec w__0 ((zero_extend1 (( 64 :: int)::ii) imm :: 64 Word.word)) :: 64 Word.word))))" + wGPR rt ((and_vec w__0 ((mips_zero_extend (( 64 :: int)::ii) imm :: 64 Word.word)) :: 64 Word.word))))" (*val execute_AND : mword ty5 -> mword ty5 -> mword ty5 -> M unit*) @@ -8706,10 +8456,10 @@ definition execute_ADDU :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> opB . if (((((NotWordVal opA)) \<or> ((NotWordVal opB))))) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0) + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0) else wGPR rd - ((sign_extend1 (( 64 :: int)::ii) + ((mips_sign_extend (( 64 :: int)::ii) ((add_vec ((subrange_vec_dec opA (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) ((subrange_vec_dec opB (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 32 Word.word)) @@ -8723,12 +8473,12 @@ definition execute_ADDIU :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarro (rGPR rs :: ( 64 Word.word) M) \<bind> (\<lambda> opA . if ((NotWordVal opA)) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rt w__0) + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rt w__0) else wGPR rt - ((sign_extend1 (( 64 :: int)::ii) + ((mips_sign_extend (( 64 :: int)::ii) ((add_vec ((subrange_vec_dec opA (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) - ((sign_extend1 (( 32 :: int)::ii) imm :: 32 Word.word)) + ((mips_sign_extend (( 32 :: int)::ii) imm :: 32 Word.word)) :: 32 Word.word)) :: 64 Word.word))))" @@ -8740,19 +8490,20 @@ definition execute_ADDI :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow (rGPR rs :: ( 64 Word.word) M) \<bind> (\<lambda> opA . if ((NotWordVal opA)) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rt w__0) + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rt w__0) else (let (sum33 :: 33 bits) = ((add_vec - ((sign_extend1 (( 33 :: int)::ii) ((subrange_vec_dec opA (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 33 Word.word)) - ((sign_extend1 (( 33 :: int)::ii) imm :: 33 Word.word)) + ((mips_sign_extend (( 33 :: int)::ii) ((subrange_vec_dec opA (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + :: 33 Word.word)) ((mips_sign_extend (( 33 :: int)::ii) imm :: 33 Word.word)) :: 33 Word.word)) in if ((neq_bool ((bit_to_bool ((access_vec_dec sum33 (( 32 :: int)::ii))))) ((bit_to_bool ((access_vec_dec sum33 (( 31 :: int)::ii))))))) then SignalException Ov else wGPR rt - ((sign_extend1 (( 64 :: int)::ii) ((subrange_vec_dec sum33 (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 64 Word.word)))))" + ((mips_sign_extend (( 64 :: int)::ii) ((subrange_vec_dec sum33 (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + :: 64 Word.word)))))" (*val execute_ADD : mword ty5 -> mword ty5 -> mword ty5 -> M unit*) @@ -8763,19 +8514,22 @@ definition execute_ADD :: "(5)Word.word \<Rightarrow>(5)Word.word \<Rightarrow> (rGPR rt :: ( 64 Word.word) M) \<bind> (\<lambda> (opB :: 64 bits) . if (((((NotWordVal opA)) \<or> ((NotWordVal opB))))) then (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0) + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 Word.word) . wGPR rd w__0) else (let (sum33 :: 33 bits) = ((add_vec - ((sign_extend1 (( 33 :: int)::ii) ((subrange_vec_dec opA (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 33 Word.word)) - ((sign_extend1 (( 33 :: int)::ii) ((subrange_vec_dec opB (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 33 Word.word)) + ((mips_sign_extend (( 33 :: int)::ii) ((subrange_vec_dec opA (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + :: 33 Word.word)) + ((mips_sign_extend (( 33 :: int)::ii) ((subrange_vec_dec opB (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + :: 33 Word.word)) :: 33 Word.word)) in if ((neq_bool ((bit_to_bool ((access_vec_dec sum33 (( 32 :: int)::ii))))) ((bit_to_bool ((access_vec_dec sum33 (( 31 :: int)::ii))))))) then SignalException Ov else wGPR rd - ((sign_extend1 (( 64 :: int)::ii) ((subrange_vec_dec sum33 (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) :: 64 Word.word))))))" + ((mips_sign_extend (( 64 :: int)::ii) ((subrange_vec_dec sum33 (( 31 :: int)::ii) (( 0 :: int)::ii) :: 32 Word.word)) + :: 64 Word.word))))))" fun execute :: " ast \<Rightarrow>((register_value),(unit),(exception))monad " where @@ -8843,12 +8597,9 @@ fun execute :: " ast \<Rightarrow>((register_value),(unit),(exception))monad " |" execute (JALR (rs,rd)) = ( execute_JALR rs rd )" |" execute (BEQ (rs,rd,imm,ne,likely)) = ( execute_BEQ rs rd imm ne likely )" |" execute (BCMPZ (rs,imm,cmp,link,likely)) = ( execute_BCMPZ rs imm cmp link likely )" -|" execute (SYSCALL_THREAD_START (g__117)) = ( return ((execute_SYSCALL_THREAD_START g__117)))" -|" execute (ImplementationDefinedStopFetching (g__118)) = ( - return ((execute_ImplementationDefinedStopFetching g__118)))" -|" execute (SYSCALL (g__119)) = ( execute_SYSCALL g__119 )" -|" execute (BREAK (g__120)) = ( execute_BREAK g__120 )" -|" execute (WAIT (g__121)) = ( execute_WAIT g__121 )" +|" execute (SYSCALL (g__17)) = ( execute_SYSCALL g__17 )" +|" execute (BREAK (g__18)) = ( execute_BREAK g__18 )" +|" execute (WAIT (g__19)) = ( execute_WAIT g__19 )" |" execute (TRAPREG (rs,rt,cmp)) = ( execute_TRAPREG rs rt cmp )" |" execute (TRAPIMM (rs,imm,cmp)) = ( execute_TRAPIMM rs imm cmp )" |" execute (Load (width,sign,linked,base,rt,offset)) = ( execute_Load width sign linked base rt offset )" @@ -8862,17 +8613,16 @@ fun execute :: " ast \<Rightarrow>((register_value),(unit),(exception))monad " |" execute (SDL (base,rt,offset)) = ( execute_SDL base rt offset )" |" execute (SDR (base,rt,offset)) = ( execute_SDR base rt offset )" |" execute (CACHE (base,op1,imm)) = ( execute_CACHE base op1 imm )" -|" execute (PREF (base,op1,imm)) = ( return ((execute_PREF base op1 imm)))" -|" execute (SYNC (g__122)) = ( execute_SYNC g__122 )" +|" execute (SYNC (g__20)) = ( execute_SYNC g__20 )" |" execute (MFC0 (rt,rd,sel,double)) = ( execute_MFC0 rt rd sel double )" -|" execute (HCF (g__123)) = ( return ((execute_HCF g__123)))" +|" execute (HCF (g__21)) = ( return ((execute_HCF g__21)))" |" execute (MTC0 (rt,rd,sel,double)) = ( execute_MTC0 rt rd sel double )" -|" execute (TLBWI (g__124)) = ( execute_TLBWI g__124 )" -|" execute (TLBWR (g__125)) = ( execute_TLBWR g__125 )" -|" execute (TLBR (g__126)) = ( execute_TLBR g__126 )" -|" execute (TLBP (g__127)) = ( execute_TLBP g__127 )" +|" execute (TLBWI (g__22)) = ( execute_TLBWI g__22 )" +|" execute (TLBWR (g__23)) = ( execute_TLBWR g__23 )" +|" execute (TLBR (g__24)) = ( execute_TLBR g__24 )" +|" execute (TLBP (g__25)) = ( execute_TLBP g__25 )" |" execute (RDHWR (rt,rd)) = ( execute_RDHWR rt rd )" -|" execute (ERET (g__128)) = ( execute_ERET g__128 )" +|" execute (ERET (g__26)) = ( execute_ERET g__26 )" |" execute (CGetPerm (rd,cb)) = ( execute_CGetPerm rd cb )" |" execute (CGetType (rd,cb)) = ( execute_CGetType rd cb )" |" execute (CGetBase (rd,cb)) = ( execute_CGetBase rd cb )" @@ -8910,7 +8660,7 @@ fun execute :: " ast \<Rightarrow>((register_value),(unit),(exception))monad " |" execute (CCSeal (cd1,cs,ct)) = ( execute_CCSeal cd1 cs ct )" |" execute (CUnseal (cd1,cs,ct)) = ( execute_CUnseal cd1 cs ct )" |" execute (CCall (cs,cb,b__151)) = ( execute_CCall cs cb b__151 )" -|" execute (CReturn (g__129)) = ( execute_CReturn g__129 )" +|" execute (CReturn (g__27)) = ( execute_CReturn g__27 )" |" execute (CBX (cb,imm,notset)) = ( execute_CBX cb imm notset )" |" execute (CBZ (cb,imm,notzero)) = ( execute_CBZ cb imm notzero )" |" execute (CJALR (cd1,cb,link)) = ( execute_CJALR cd1 cb link )" @@ -8921,7 +8671,7 @@ fun execute :: " ast \<Rightarrow>((register_value),(unit),(exception))monad " |" execute (CSC (cs,cb,rt,rd,offset,conditional)) = ( execute_CSC cs cb rt rd offset conditional )" |" execute (CLC (cd1,cb,rt,offset,linked)) = ( execute_CLC cd1 cb rt offset linked )" |" execute (C2Dump (rt)) = ( return ((execute_C2Dump rt)))" -|" execute (RI (g__130)) = ( execute_RI g__130 )" +|" execute (RI (g__28)) = ( execute_RI g__28 )" (*val supported_instructions : ast -> maybe ast*) @@ -8930,50 +8680,62 @@ definition supported_instructions :: " ast \<Rightarrow>(ast)option " where " supported_instructions instr = ( Some instr )" -(*val fetch_and_execute : unit -> M unit*) +(*val cycle_limit_reached : unit -> bool*) -definition fetch_and_execute :: " unit \<Rightarrow>((register_value),(unit),(exception))monad " where - " fetch_and_execute _ = ( - catch_early_return - (((whileM () - (\<lambda> unit_var . return True) - (\<lambda> unit_var . - liftR ((read_reg nextPC_ref :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__0 :: 64 bits) . - (liftR (write_reg PC_ref w__0) \<then> - liftR ((read_reg branchPending_ref :: ( 1 Word.word) M))) \<bind> (\<lambda> (w__1 :: 1 bits) . - ((liftR (write_reg inBranchDelay_ref w__1) \<then> - liftR (write_reg branchPending_ref (vec_of_bits [B0] :: 1 Word.word))) \<then> - liftR ((read_reg inBranchDelay_ref :: ( 1 Word.word) M))) \<bind> (\<lambda> (w__2 :: 1 Word.word) . - (if ((bits_to_bool w__2)) then liftR ((read_reg delayedPC_ref :: ( 64 Word.word) M)) - else - liftR ((read_reg PC_ref :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__4 :: 64 Word.word) . - return ((add_vec_int w__4 (( 4 :: int)::ii) :: 64 Word.word)))) \<bind> (\<lambda> (w__5 :: 64 Word.word) . - ((liftR (write_reg nextPC_ref w__5) \<then> - liftR (cp2_next_pc () )) \<then> - liftR (read_reg instCount_ref)) \<bind> (\<lambda> (w__6 :: ii) . - (liftR (write_reg instCount_ref ((w__6 + (( 1 :: int)::ii)))) \<then> - liftR ((read_reg PC_ref :: ( 64 Word.word) M))) \<bind> (\<lambda> (w__7 :: 64 bits) . - (let (_ :: unit) = (print_bits - instance_Sail_values_Bitvector_Machine_word_mword_dict (''PC: '') w__7) in - try_catchR (liftR ((read_reg PC_ref :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__8 :: 64 Word.word) . - liftR ((TranslatePC w__8 :: ( 64 Word.word) M)) \<bind> (\<lambda> pc_pa . - liftR ((MEMr_wrapper pc_pa (( 4 :: int)::ii) :: ( 32 Word.word) M)) \<bind> (\<lambda> instr . - (let instr_ast = (decode instr) in - (case instr_ast of - Some ((HCF (_))) => - (let (_ :: unit) = - (prerr_endline (''simulation stopped due to halt instruction.'')) in - (early_return () :: (unit, unit) MR)) - | Some (ast) => liftR (execute ast) - | None => - (let (_ :: unit) = (prerr_endline (''Decode failed'')) in - liftR (exit0 () )) - )))))) (\<lambda>x . - (case x of ISAException (_) => return ((prerr_endline (''EXCEPTION''))) ))))))))))) \<then> - liftR (skip () )) \<then> liftR (skip () )))" +definition cycle_limit_reached :: " unit \<Rightarrow> bool " where + " cycle_limit_reached _ = ( False )" -(*val main : unit -> M unit*) +(*val fetch_and_execute : unit -> M bool*) + +definition fetch_and_execute :: " unit \<Rightarrow>((register_value),(bool),(exception))monad " where + " fetch_and_execute _ = ( + (read_reg nextPC_ref :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 bits) . + (write_reg PC_ref w__0 \<then> + (read_reg branchPending_ref :: ( 1 Word.word) M)) \<bind> (\<lambda> (w__1 :: 1 bits) . + ((write_reg inBranchDelay_ref w__1 \<then> + write_reg branchPending_ref (vec_of_bits [B0] :: 1 Word.word)) \<then> + (read_reg inBranchDelay_ref :: ( 1 Word.word) M)) \<bind> (\<lambda> (w__2 :: 1 Word.word) . + (if ((bits_to_bool w__2)) then (read_reg delayedPC_ref :: ( 64 Word.word) M) + else + (read_reg PC_ref :: ( 64 Word.word) M) \<bind> (\<lambda> (w__4 :: 64 Word.word) . + return ((add_vec_int w__4 (( 4 :: int)::ii) :: 64 Word.word)))) \<bind> (\<lambda> (w__5 :: 64 Word.word) . + ((write_reg nextPC_ref w__5 \<then> + cp2_next_pc () ) \<then> + read_reg instCount_ref) \<bind> (\<lambda> (w__6 :: ii) . + (write_reg instCount_ref ((w__6 + (( 1 :: int)::ii))) \<then> + (read_reg UART_WRITTEN_ref :: ( 1 Word.word) M)) \<bind> (\<lambda> (w__7 :: 1 Word.word) . + (((if ((bits_to_bool w__7)) then + (read_reg UART_WDATA_ref :: ( 8 Word.word) M) \<bind> (\<lambda> (w__8 :: 8 bits) . + (let (_ :: unit) = (putchar ((Word.uint w__8))) in + write_reg UART_WRITTEN_ref (vec_of_bits [B0] :: 1 Word.word))) + else return () ) \<then> + skip () ) \<then> + skip () ) \<then> + ((let loop_again = True in + try_catch ((read_reg PC_ref :: ( 64 Word.word) M) \<bind> (\<lambda> (w__9 :: 64 Word.word) . + (TranslatePC w__9 :: ( 64 Word.word) M) \<bind> (\<lambda> pc_pa . + (MEMr_wrapper (( 32 :: int)::ii) pc_pa (( 4 :: int)::ii) :: ( 32 Word.word) M) \<bind> (\<lambda> instr . + (let instr_ast = (decode instr) in + (case instr_ast of + Some ((HCF (_))) => + (let (_ :: unit) = (print_endline (''simulation stopped due to halt instruction.'')) in + return False) + | Some (ast) => execute ast \<then> return loop_again + | None => + (let (_ :: unit) = (print_endline (''Decode failed'')) in + return False) + )))))) (\<lambda>x . + (case x of ISAException (_) => return loop_again )) \<bind> (\<lambda> (loop_again :: bool) . + return (((loop_again \<and> ((\<not> ((cycle_limit_reached () )))))))))))))))))" + + +(*val init_registers : mword ty64 -> M unit*) + +definition init_registers :: "(64)Word.word \<Rightarrow>((register_value),(unit),(exception))monad " where + " init_registers initialPC = ( + (init_cp0_state () \<then> init_cp2_state () ) \<then> write_reg nextPC_ref initialPC )" + (*val dump_mips_state : unit -> M unit*) @@ -8981,38 +8743,36 @@ definition dump_mips_state :: " unit \<Rightarrow>((register_value),(unit),(exc " dump_mips_state _ = ( (read_reg PC_ref :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 bits) . (let (_ :: unit) = (print_bits - instance_Sail_values_Bitvector_Machine_word_mword_dict (''DEBUG MIPS PC '') w__0) in + instance_Sail2_values_Bitvector_Machine_word_mword_dict (''DEBUG MIPS PC '') w__0) in (foreachM (index_list (( 0 :: int)::ii) (( 31 :: int)::ii) (( 1 :: int)::ii)) () (\<lambda> idx unit_var . (rGPR ((to_bits ((make_the_value (( 5 :: int)::ii) :: 5 itself)) idx :: 5 Word.word)) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__1 :: 64 Word.word) . return ((let _ = - (prerr_endline + (print_endline (((op@) (''DEBUG MIPS REG '') (((op@) ((string_of_int - instance_Show_Show_Num_integer_dict idx)) (((op@) ('' '') ((string_of_bits - instance_Sail_values_Bitvector_Machine_word_mword_dict w__1))))))))) in + instance_Show_Show_Num_integer_dict idx)) (((op@) ('' '') ((string_of_bits w__1))))))))) in () ))))))))" +(*val main : unit -> M unit*) + definition main :: " unit \<Rightarrow>((register_value),(unit),(exception))monad " where " main _ = ( - ((init_cp0_state () \<then> - init_cp2_state () ) \<then> - write_reg - nextPC_ref - ((to_bits ((make_the_value (( 64 :: int)::ii) :: 64 itself)) ((elf_entry () )) :: 64 Word.word))) \<then> + init_registers + ((to_bits ((make_the_value (( 64 :: int)::ii) :: 64 itself)) ((elf_entry () )) :: 64 Word.word)) \<then> ((let startTime = (get_time_ns () ) in - fetch_and_execute () \<then> + (whileM () (\<lambda> unit_var . fetch_and_execute () ) (\<lambda> unit_var . return () )) \<then> ((let endTime = (get_time_ns () ) in (let elapsed = (endTime - startTime) in - read_reg instCount_ref \<bind> (\<lambda> (w__0 :: ii) . - (let inst_1e9 = (w__0 * (( 1000000000 :: int)::ii)) in + read_reg instCount_ref \<bind> (\<lambda> (w__1 :: ii) . + (let inst_1e9 = (w__1 * (( 1000000000 :: int)::ii)) in (let ips = (inst_1e9 div elapsed) in ((dump_mips_state () \<then> dump_cp2_state () ) \<then> - read_reg instCount_ref) \<bind> (\<lambda> (w__1 :: ii) . - (let (_ :: unit) = (print_int (''Executed instructions: '') w__1) in + read_reg instCount_ref) \<bind> (\<lambda> (w__2 :: ii) . + (let (_ :: unit) = (print_int (''Executed instructions: '') w__2) in (let (_ :: unit) = (print_int (''Nanoseconds elapsed: '') elapsed) in return ((print_int (''Instructions per second: '') ips))))))))))))))" @@ -9022,19 +8782,19 @@ definition main :: " unit \<Rightarrow>((register_value),(unit),(exception))mon definition initialize_registers :: " unit \<Rightarrow>((register_value),(unit),(exception))monad " where " initialize_registers _ = ( (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M) \<bind> (\<lambda> (w__0 :: 64 bits) . (write_reg PC_ref w__0 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__1 :: 64 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__1 :: 64 bits) . (write_reg nextPC_ref w__1 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 1 :: int)::ii) :: ( 1 Word.word) M)) \<bind> (\<lambda> (w__2 :: 1 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 1 :: int)::ii) :: ( 1 Word.word) M)) \<bind> (\<lambda> (w__2 :: 1 bits) . (write_reg TLBProbe_ref w__2 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 6 :: int)::ii) :: ( 6 Word.word) M)) \<bind> (\<lambda> (w__3 :: TLBIndexT) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 6 :: int)::ii) :: ( 6 Word.word) M)) \<bind> (\<lambda> (w__3 :: TLBIndexT) . (write_reg TLBIndex_ref w__3 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 6 :: int)::ii) :: ( 6 Word.word) M)) \<bind> (\<lambda> (w__4 :: TLBIndexT) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 6 :: int)::ii) :: ( 6 Word.word) M)) \<bind> (\<lambda> (w__4 :: TLBIndexT) . (write_reg TLBRandom_ref w__4 \<then> undefined_TLBEntryLoReg () ) \<bind> (\<lambda> (w__5 :: TLBEntryLoReg) . (write_reg TLBEntryLo0_ref w__5 \<then> @@ -9043,10 +8803,10 @@ definition initialize_registers :: " unit \<Rightarrow>((register_value),(unit) undefined_ContextReg () ) \<bind> (\<lambda> (w__7 :: ContextReg) . (write_reg TLBContext_ref w__7 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M)) \<bind> (\<lambda> (w__8 :: 16 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 16 :: int)::ii) :: ( 16 Word.word) M)) \<bind> (\<lambda> (w__8 :: 16 bits) . (write_reg TLBPageMask_ref w__8 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 6 :: int)::ii) :: ( 6 Word.word) M)) \<bind> (\<lambda> (w__9 :: TLBIndexT) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 6 :: int)::ii) :: ( 6 Word.word) M)) \<bind> (\<lambda> (w__9 :: TLBIndexT) . (write_reg TLBWired_ref w__9 \<then> undefined_TLBEntryHiReg () ) \<bind> (\<lambda> (w__10 :: TLBEntryHiReg) . (write_reg TLBEntryHi_ref w__10 \<then> @@ -9181,191 +8941,270 @@ definition initialize_registers :: " unit \<Rightarrow>((register_value),(unit) undefined_TLBEntry () ) \<bind> (\<lambda> (w__75 :: TLBEntry) . (write_reg TLBEntry63_ref w__75 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 32 :: int)::ii) :: ( 32 Word.word) M)) \<bind> (\<lambda> (w__76 :: 32 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 32 :: int)::ii) :: ( 32 Word.word) M)) \<bind> (\<lambda> (w__76 :: 32 bits) . (write_reg CP0Compare_ref w__76 \<then> undefined_CauseReg () ) \<bind> (\<lambda> (w__77 :: CauseReg) . (write_reg CP0Cause_ref w__77 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__78 :: 64 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__78 :: 64 bits) . (write_reg CP0EPC_ref w__78 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__79 :: 64 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__79 :: 64 bits) . (write_reg CP0ErrorEPC_ref w__79 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 1 :: int)::ii) :: ( 1 Word.word) M)) \<bind> (\<lambda> (w__80 :: 1 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 1 :: int)::ii) :: ( 1 Word.word) M)) \<bind> (\<lambda> (w__80 :: 1 bits) . (write_reg CP0LLBit_ref w__80 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__81 :: 64 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__81 :: 64 bits) . (write_reg CP0LLAddr_ref w__81 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__82 :: 64 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__82 :: 64 bits) . (write_reg CP0BadVAddr_ref w__82 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 32 :: int)::ii) :: ( 32 Word.word) M)) \<bind> (\<lambda> (w__83 :: 32 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 32 :: int)::ii) :: ( 32 Word.word) M)) \<bind> (\<lambda> (w__83 :: 32 bits) . (write_reg CP0Count_ref w__83 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 32 :: int)::ii) :: ( 32 Word.word) M)) \<bind> (\<lambda> (w__84 :: 32 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 32 :: int)::ii) :: ( 32 Word.word) M)) \<bind> (\<lambda> (w__84 :: 32 bits) . (write_reg CP0HWREna_ref w__84 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__85 :: 64 bits) . + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__85 :: 64 bits) . (write_reg CP0UserLocal_ref w__85 \<then> - undefined_StatusReg () ) \<bind> (\<lambda> (w__86 :: StatusReg) . - (write_reg CP0Status_ref w__86 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 1 :: int)::ii) :: ( 1 Word.word) M)) \<bind> (\<lambda> (w__87 :: 1 bits) . - (write_reg branchPending_ref w__87 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 3 :: int)::ii) :: ( 3 Word.word) M)) \<bind> (\<lambda> (w__86 :: 3 bits) . + (write_reg CP0ConfigK0_ref w__86 \<then> + undefined_StatusReg () ) \<bind> (\<lambda> (w__87 :: StatusReg) . + (write_reg CP0Status_ref w__87 \<then> + (undefined_bitvector + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 1 :: int)::ii) :: ( 1 Word.word) M)) \<bind> (\<lambda> (w__88 :: 1 bits) . + (write_reg branchPending_ref w__88 \<then> + (undefined_bitvector + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 1 :: int)::ii) :: ( 1 Word.word) M)) \<bind> (\<lambda> (w__89 :: 1 bits) . + (write_reg inBranchDelay_ref w__89 \<then> + (undefined_bitvector + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__90 :: 64 bits) . + (write_reg delayedPC_ref w__90 \<then> + (undefined_bitvector + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__91 :: 64 bits) . + (write_reg HI_ref w__91 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 1 :: int)::ii) :: ( 1 Word.word) M)) \<bind> (\<lambda> (w__88 :: 1 bits) . - (write_reg inBranchDelay_ref w__88 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__92 :: 64 bits) . + (write_reg LO_ref w__92 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__89 :: 64 bits) . - (write_reg delayedPC_ref w__89 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__93 :: 64 Word.word) . + (undefined_vector (( 32 :: int)::ii) w__93 :: ( ( 64 Word.word)list) M) \<bind> (\<lambda> (w__94 :: ( 64 bits) list) . + (write_reg GPR_ref w__94 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__90 :: 64 bits) . - (write_reg HI_ref w__90 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 8 :: int)::ii) :: ( 8 Word.word) M)) \<bind> (\<lambda> (w__95 :: 8 bits) . + (write_reg UART_WDATA_ref w__95 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__91 :: 64 bits) . - (write_reg LO_ref w__91 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 1 :: int)::ii) :: ( 1 Word.word) M)) \<bind> (\<lambda> (w__96 :: 1 bits) . + (write_reg UART_WRITTEN_ref w__96 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 64 :: int)::ii) :: ( 64 Word.word) M)) \<bind> (\<lambda> (w__92 :: 64 Word.word) . - (undefined_vector (( 32 :: int)::ii) w__92 :: ( ( 64 Word.word)list) M) \<bind> (\<lambda> (w__93 :: ( 64 bits) list) . - (write_reg GPR_ref w__93 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 8 :: int)::ii) :: ( 8 Word.word) M)) \<bind> (\<lambda> (w__97 :: 8 bits) . + (write_reg UART_RDATA_ref w__97 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 8 :: int)::ii) :: ( 8 Word.word) M)) \<bind> (\<lambda> (w__94 :: 8 bits) . - (write_reg UART_WDATA_ref w__94 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 1 :: int)::ii) :: ( 1 Word.word) M)) \<bind> (\<lambda> (w__98 :: 1 bits) . + (write_reg UART_RVALID_ref w__98 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 1 :: int)::ii) :: ( 1 Word.word) M)) \<bind> (\<lambda> (w__95 :: 1 bits) . - (write_reg UART_WRITTEN_ref w__95 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__99 :: CapReg) . + (write_reg PCC_ref w__99 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 8 :: int)::ii) :: ( 8 Word.word) M)) \<bind> (\<lambda> (w__96 :: 8 bits) . - (write_reg UART_RDATA_ref w__96 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__100 :: CapReg) . + (write_reg nextPCC_ref w__100 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 1 :: int)::ii) :: ( 1 Word.word) M)) \<bind> (\<lambda> (w__97 :: 1 bits) . - (write_reg UART_RVALID_ref w__97 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__101 :: CapReg) . + (write_reg delayedPCC_ref w__101 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__98 :: CapReg) . - (write_reg PCC_ref w__98 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 1 :: int)::ii) :: ( 1 Word.word) M)) \<bind> (\<lambda> (w__102 :: 1 bits) . + (write_reg inCCallDelay_ref w__102 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__99 :: CapReg) . - (write_reg nextPCC_ref w__99 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__103 :: CapReg) . + (write_reg DDC_ref w__103 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__100 :: CapReg) . - (write_reg delayedPCC_ref w__100 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__104 :: CapReg) . + (write_reg C01_ref w__104 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 1 :: int)::ii) :: ( 1 Word.word) M)) \<bind> (\<lambda> (w__101 :: 1 bits) . - (write_reg inCCallDelay_ref w__101 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__105 :: CapReg) . + (write_reg C02_ref w__105 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__102 :: CapReg) . - (write_reg C00_ref w__102 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__106 :: CapReg) . + (write_reg C03_ref w__106 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__103 :: CapReg) . - (write_reg C01_ref w__103 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__107 :: CapReg) . + (write_reg C04_ref w__107 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__104 :: CapReg) . - (write_reg C02_ref w__104 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__108 :: CapReg) . + (write_reg C05_ref w__108 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__105 :: CapReg) . - (write_reg C03_ref w__105 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__109 :: CapReg) . + (write_reg C06_ref w__109 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__106 :: CapReg) . - (write_reg C04_ref w__106 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__110 :: CapReg) . + (write_reg C07_ref w__110 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__107 :: CapReg) . - (write_reg C05_ref w__107 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__111 :: CapReg) . + (write_reg C08_ref w__111 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__108 :: CapReg) . - (write_reg C06_ref w__108 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__112 :: CapReg) . + (write_reg C09_ref w__112 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__109 :: CapReg) . - (write_reg C07_ref w__109 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__113 :: CapReg) . + (write_reg C10_ref w__113 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__110 :: CapReg) . - (write_reg C08_ref w__110 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__114 :: CapReg) . + (write_reg C11_ref w__114 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__111 :: CapReg) . - (write_reg C09_ref w__111 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__115 :: CapReg) . + (write_reg C12_ref w__115 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__112 :: CapReg) . - (write_reg C10_ref w__112 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__116 :: CapReg) . + (write_reg C13_ref w__116 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__113 :: CapReg) . - (write_reg C11_ref w__113 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__117 :: CapReg) . + (write_reg C14_ref w__117 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__114 :: CapReg) . - (write_reg C12_ref w__114 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__118 :: CapReg) . + (write_reg C15_ref w__118 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__115 :: CapReg) . - (write_reg C13_ref w__115 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__119 :: CapReg) . + (write_reg C16_ref w__119 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__116 :: CapReg) . - (write_reg C14_ref w__116 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__120 :: CapReg) . + (write_reg C17_ref w__120 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__117 :: CapReg) . - (write_reg C15_ref w__117 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__121 :: CapReg) . + (write_reg C18_ref w__121 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__118 :: CapReg) . - (write_reg C16_ref w__118 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__122 :: CapReg) . + (write_reg C19_ref w__122 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__119 :: CapReg) . - (write_reg C17_ref w__119 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__123 :: CapReg) . + (write_reg C20_ref w__123 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__120 :: CapReg) . - (write_reg C18_ref w__120 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__124 :: CapReg) . + (write_reg C21_ref w__124 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__121 :: CapReg) . - (write_reg C19_ref w__121 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__125 :: CapReg) . + (write_reg C22_ref w__125 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__122 :: CapReg) . - (write_reg C20_ref w__122 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__126 :: CapReg) . + (write_reg C23_ref w__126 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__123 :: CapReg) . - (write_reg C21_ref w__123 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__127 :: CapReg) . + (write_reg C24_ref w__127 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__124 :: CapReg) . - (write_reg C22_ref w__124 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__128 :: CapReg) . + (write_reg C25_ref w__128 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__125 :: CapReg) . - (write_reg C23_ref w__125 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__129 :: CapReg) . + (write_reg C26_ref w__129 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__126 :: CapReg) . - (write_reg C24_ref w__126 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__130 :: CapReg) . + (write_reg C27_ref w__130 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__127 :: CapReg) . - (write_reg C25_ref w__127 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__131 :: CapReg) . + (write_reg C28_ref w__131 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__128 :: CapReg) . - (write_reg C26_ref w__128 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__132 :: CapReg) . + (write_reg C29_ref w__132 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__129 :: CapReg) . - (write_reg C27_ref w__129 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__133 :: CapReg) . + (write_reg C30_ref w__133 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__130 :: CapReg) . - (write_reg C28_ref w__130 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__134 :: CapReg) . + (write_reg C31_ref w__134 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__131 :: CapReg) . - (write_reg C29_ref w__131 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__135 :: CapReg) . + (write_reg CTLSU_ref w__135 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__132 :: CapReg) . - (write_reg C30_ref w__132 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__136 :: CapReg) . + (write_reg CTLSP_ref w__136 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__133 :: CapReg) . - (write_reg C31_ref w__133 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__137 :: CapReg) . + (write_reg KR1C_ref w__137 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__134 :: CapReg) . - (write_reg CTLSU_ref w__134 \<then> + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__138 :: CapReg) . + (write_reg KR2C_ref w__138 \<then> (undefined_bitvector - instance_Sail_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__135 :: CapReg) . - (write_reg CTLSP_ref w__135 \<then> - undefined_CapCauseReg () ) \<bind> (\<lambda> (w__136 :: CapCauseReg) . - (write_reg CapCause_ref w__136 \<then> - undefined_int () ) \<bind> (\<lambda> (w__137 :: ii) . write_reg instCount_ref w__137)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))" + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__139 :: CapReg) . + (write_reg KCC_ref w__139 \<then> + (undefined_bitvector + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__140 :: CapReg) . + (write_reg KDC_ref w__140 \<then> + (undefined_bitvector + instance_Sail2_values_Bitvector_Machine_word_mword_dict (( 257 :: int)::ii) :: ( 257 Word.word) M)) \<bind> (\<lambda> (w__141 :: CapReg) . + (write_reg EPCC_ref w__141 \<then> + undefined_CapCauseReg () ) \<bind> (\<lambda> (w__142 :: CapCauseReg) . + (write_reg CapCause_ref w__142 \<then> + undefined_int () ) \<bind> (\<lambda> (w__143 :: ii) . write_reg instCount_ref w__143)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))" definition initial_regstate :: " regstate " where " initial_regstate = ( (| instCount = ((( 0 :: int)::ii)), CapCause = - (Mk_CapCauseReg (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] :: 16 Word.word)), + ((| CapCauseReg_CapCauseReg_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] :: 16 Word.word)) |)), + EPCC = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 257 Word.word)), + KDC = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 257 Word.word)), + KCC = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 257 Word.word)), + KR2C = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 257 Word.word)), + KR1C = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 257 Word.word)), CTLSP = ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, @@ -9762,7 +9601,7 @@ definition initial_regstate :: " regstate " where B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] :: 257 Word.word)), - C00 = + DDC = ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, @@ -9962,9 +9801,11 @@ definition initial_regstate :: " regstate " where inBranchDelay = ((vec_of_bits [B0] :: 1 Word.word)), branchPending = ((vec_of_bits [B0] :: 1 Word.word)), CP0Status = - (Mk_StatusReg (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] - :: 32 Word.word)), + ((| StatusReg_StatusReg_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0] + :: 32 Word.word)) |)), + CP0ConfigK0 = ((vec_of_bits [B0,B0,B0] :: 3 Word.word)), CP0UserLocal = ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, @@ -10000,557 +9841,750 @@ definition initial_regstate :: " regstate " where B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] :: 64 Word.word)), CP0Cause = - (Mk_CauseReg (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] - :: 32 Word.word)), + ((| CauseReg_CauseReg_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0] + :: 32 Word.word)) |)), CP0Compare = ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, B0,B0,B0,B0,B0,B0] :: 32 Word.word)), TLBEntry63 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry62 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry61 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry60 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry59 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry58 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry57 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry56 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry55 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry54 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry53 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry52 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry51 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry50 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry49 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry48 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry47 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry46 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry45 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry44 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry43 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry42 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry41 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry40 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry39 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry38 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry37 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry36 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry35 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry34 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry33 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry32 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry31 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry30 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry29 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry28 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry27 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry26 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry25 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry24 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry23 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry22 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry21 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry20 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry19 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry18 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry17 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry16 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry15 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry14 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry13 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry12 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry11 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry10 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry09 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry08 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry07 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry06 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry05 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry04 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry03 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry02 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry01 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntry00 = - (Mk_TLBEntry (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0] - :: 117 Word.word)), + ((| TLBEntry_TLBEntry_chunk_1 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0] + :: 53 Word.word)), + TLBEntry_TLBEntry_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBXContext = - (Mk_XContextReg (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0] - :: 64 Word.word)), + ((| XContextReg_XContextReg_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntryHi = - (Mk_TLBEntryHiReg (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0] - :: 64 Word.word)), + ((| TLBEntryHiReg_TLBEntryHiReg_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBWired = ((vec_of_bits [B0,B0,B0,B0,B0,B0] :: 6 Word.word)), TLBPageMask = ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] :: 16 Word.word)), TLBContext = - (Mk_ContextReg (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0] - :: 64 Word.word)), + ((| ContextReg_ContextReg_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntryLo1 = - (Mk_TLBEntryLoReg (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0] - :: 64 Word.word)), + ((| TLBEntryLoReg_TLBEntryLoReg_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBEntryLo0 = - (Mk_TLBEntryLoReg (vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, - B0,B0,B0,B0] - :: 64 Word.word)), + ((| TLBEntryLoReg_TLBEntryLoReg_chunk_0 = + ((vec_of_bits [B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0, + B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0,B0] + :: 64 Word.word)) |)), TLBRandom = ((vec_of_bits [B0,B0,B0,B0,B0,B0] :: 6 Word.word)), TLBIndex = ((vec_of_bits [B0,B0,B0,B0,B0,B0] :: 6 Word.word)), TLBProbe = ((vec_of_bits [B0] :: 1 Word.word)), |
